1var ftr_form; // footer form 2var sp_form; // start a project form 3var inquiry_frm; // contact us page form 4var career_frm_one; // career page 1st from 5var career_frm_sec; // career page 2nd form 6var home_pg_popup; // Home page main popup 7var book_frm; // Product book a demo form 8var shake_form; // Shake inquiry form 9var referral_form; // Referral Form 10var eBook_form; // eBook Form 11let formSubmitted = false; // Variable to track form submission 12 13var CaptchaCallback = function () { 14 if (jQuery("#RecaptchaField1").length) { 15 ftr_form = grecaptcha.render("RecaptchaField1", { 16 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 17 callback: correctCaptcha_quote, 18 }); 19 } 20 21 if (jQuery("#RecaptchaField2").length) { 22 sp_form = grecaptcha.render("RecaptchaField2", { 23 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 24 callback: correctCaptcha_startproject, 25 }); 26 } 27 28 if (jQuery("#RecaptchaField4").length) { 29 career_frm_one = grecaptcha.render("RecaptchaField4", { 30 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 31 callback: correctCaptcha_cerrerone, 32 }); 33 } 34 if (jQuery("#RecaptchaField5").length) { 35 career_frm_sec = grecaptcha.render("RecaptchaField5", { 36 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 37 callback: correctCaptcha_seccereer, 38 }); 39 } 40 if (jQuery("#RecaptchaField6").length) { 41 home_pg_popup = grecaptcha.render("RecaptchaField6", { 42 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 43 callback: correctCaptcha_popuphome, 44 }); 45 } 46 47 if (jQuery("#RecaptchaField7").length) { 48 inquiry_frm = grecaptcha.render("RecaptchaField7", { 49 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 50 callback: correctCaptcha_inqreach, 51 }); 52 } 53 54 if (jQuery("#RecaptchaField8").length) { 55 book_frm = grecaptcha.render("RecaptchaField8", { 56 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 57 callback: correctCaptcha_bookprod, 58 }); 59 } 60 61 if (jQuery("#RecaptchaFieldShake").length) { 62 shake_form = grecaptcha.render("RecaptchaFieldShake", { 63 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 64 callback: correctCaptcha_common_shake, 65 }); 66 } 67 68 if (jQuery("#RecaptchaFieldeBook").length) { 69 eBook_form = grecaptcha.render("RecaptchaFieldeBook", { 70 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 71 callback: correctCaptcha_common_eBook, 72 }); 73 } 74 75 if (jQuery("#ReferralRecaptchaField").length) { 76 referral_form = grecaptcha.render("ReferralRecaptchaField", { 77 sitekey: "6LfjgLInAAAAAAJUw2q4d6NwGd1NQM0oQ5mVgoM_", 78 callback: correctCaptcha_common_referral, 79 }); 80 } 81 82}; 83 84var correctCaptcha_quote = function (response) { 85 if (response) { 86 // console.log(response); 87 jQuery("#qt_hiddenRecaptcha").val("1"); 88 } 89}; 90var correctCaptcha_startproject = function (response) { 91 if (response) { 92 // console.log(response); 93 jQuery("#ct_hiddenRecaptcha").val("1"); 94 } 95}; 96
97var correctCaptcha_cerrerone = function (response) { 98 if (response) { 99 //console.log(response); 100 jQuery("#cerone_hiddenRecaptcha").val("1"); 101 } 102}; 103 104var correctCaptcha_seccereer = function (response) { 105 if (response) { 106 //console.log(response); 107 jQuery("#cersec_hiddenRecaptcha").val("1"); 108 } 109}; 110 111var correctCaptcha_popuphome = function (response) { 112 if (response) { 113 //console.log(response); 114 jQuery("#hpcpt_hiddenRecaptcha").val("1"); 115 } 116}; 117 118var correctCaptcha_inqreach = function (response) { 119 if (response) { 120 //console.log(response); 121 jQuery("#inquirfrm_hiddenRecaptcha").val("1"); 122 } 123}; 124 125var correctCaptcha_bookprod = function (response) { 126 if (response) { 127 //console.log(response); 128 jQuery("#prod_book_hiddenRecaptcha").val("1"); 129 } 130}; 131 132var correctCaptcha_common_shake = function (response) { 133 if (response) { 134 //console.log(response); 135 jQuery("#shake_hiddenRecaptcha").val("1"); 136 } 137}; 138 139var correctCaptcha_common_eBook = function (response) { 140 if (response) { 141 //console.log(response); 142 jQuery("#ebook_hiddenRecaptcha").val("1"); 143 } 144}; 145
146var correctCaptcha_common_referral = function (response) { 147 if (response) { 148 //console.log(response); 149 jQuery("#referralcpt_hiddenRecaptcha").val("1"); 150 } 151}; 152 153jQuery(document).ready(function ($) { 154 jQuery(".loader").hide(); 155 // Custom email validation method using regex 156 $.validator.addMethod( 157 "emailRegex", 158 function (value, element) { 159 return ( 160 this.optional(element) || 161 /^[a-zA-Z0-9.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z]{2,})+$/i.test(value) 162 ); 163 }, 164 "Please enter a valid email address" 165 ); 166 167 $.validator.addMethod( 168 "validExperience", 169 function (value, element) { 170 return this.optional(element) || /^\d{1,2}(\.\d{1,2})?$/i.test(value); 171 }, 172 "Only numeric is allowed (E.g. 02.05)" 173 ); 174 175 // Add a custom method for file size validation 176 $.validator.addMethod( 177 "fileSize", 178 function (value, element, param) { 179 return this.optional(element) || element.files[0].size <= param; 180 }, 181 "Please upload a file with a maximum size of {0}MB" 182 ); 183 184 // Add a custom method for file type validation 185 $.validator.addMethod( 186 "fileType", 187 function (value, element, param) { 188 // Check if the input file is empty 189 if (element.files.length === 0) { 190 // Return true to indicate that validation should pass 191 return true; 192 } 193 // Get the file extension 194 var extension = value.split(".").pop().toLowerCase(); 195 196 // Check if the file extension is allowed 197 var allowedTypes = param.split(","); 198 if (allowedTypes.indexOf(extension) === -1) { 199 return false; 200 } 201 202 return true; 203 }, 204 "Please upload a PDF or DOC file" 205 ); 206 207 // Footer form 208 jQuery(document).on("click", ".footer_contact_form", function () { 209 // jQuery('.loader').show(); 210 jQuery("#footerForm").validate({ 211 ignore: ":hidden:not(.footer_hide_capt)", 212 rules: { 213 yourname: { 214 required: true, 215 minlength: 3, 216 maxlength: 50, 217 }, 218 youremail: { 219 required: true, 220 email: true, 221 emailRegex: true, 222 minlength: 10, 223 maxlength: 50, 224 }, 225 phone: { 226 minlength: 7, 227 maxlength: 13, 228 number: true, 229 }, 230 yourcompany: { 231 //required: true, 232 minlength: 3, 233 maxlength: 50, 234 }, 235 your_message: { 236 minlength: 10, 237 /* maxlength: 500, */ 238 }, 239 acceptance_105: { 240 required: true, 241 }, 242 qt_hiddenRecaptcha: { 243 required: true, 244 }, 245 }, 246 messages: { 247 yourname: { 248 required: "Your name is required", 249 minlength: "Your name must be at least 3 characters", 250 maxlength: "Your name should not be greater than 50 characters", 251 }, 252 youremail: { 253 required: "Email is required", 254 email: "Please enter a valid email address", 255 emailRegex: "Please enter a valid email address", 256 minlength: "Email must be at least 10 characters", 257 maxlength: "Email should not be greater than 50 characters", 258 }, 259 phone: { 260 minlength: "Phone number must be at least 7 digits", 261 maxlength: "Phone number should not be greater than 13 digits", 262 number: "Please enter a valid phone number", 263 }, 264 yourcompany: { 265 //required: "Company name is required", 266 minlength: "Company name must be at least 3 characters", 267 maxlength: "Company name should not be greater than 50 characters", 268 }, 269 your_message: { 270 minlength: "Project description must be at least 10 characters", 271 /* maxlength: 272 "Project description should not be greater than 500 characters", */ 273 }, 274 acceptance_105: { 275 required: 276 "You must accept the privacy policy before sending your message", 277 }, 278 qt_hiddenRecaptcha: { 279 required: "reCAPTCHA is required", 280 }, 281 }, 282 submitHandler: function (form, e) { 283 e.preventDefault(); 284 285 var f_id = jQuery(".footer_contact_form").closest("form").attr("id"); 286 var formData = jQuery(form).serialize(); 287 var recaptchaResponse = grecaptcha.getResponse(ftr_form); 288 if (recaptchaResponse === "") { 289 jQuery('.capt_error').html("reCAPTCHA expired or not solved"); 290 return false;
291 } 292 else { 293 jQuery('.capt_error').html(""); 294 } 295 296 $.ajax({ 297 url: my_ajax_object.ajax_url, 298 type: "POST", 299 data: { 300 action: "save_contact_form_data", 301 formData: formData, 302 f_id: f_id, 303 }, 304 beforeSend: function () { 305 jQuery(".loader").show(); 306 jQuery('.footer_contact_form').prop('disabled', true); 307 }, 308 success: function (response) { 309 var responseData = JSON.parse(response); 310 console.log(responseData); 311 if (responseData.success == true) { 312 var ftr_res_status = responseData.status; 313 rediectThankyouPage(); 314 jQuery(".loader").hide(); 315 jQuery(".footer_contact_form") 316 .closest("div") 317 .find(".status_msg") 318 .html(ftr_res_status); 319 320 setTimeout(function () { 321 jQuery("#footerForm").trigger("reset"); 322 jQuery(".status_msg").hide(); 323 jQuery("#selectPhoneFlag").val(""); 324 jQuery('.footer_contact_form').prop('disabled', false); 325 jQuery('.form-group').find('.error-message').html(''); 326 jQuery(".status_msg").html(''); 327 }, 5000); // 5 seconds 328 grecaptcha.reset(); 329 jQuery(".status_msg").show(); 330 } else { 331 // Error handling 332 var errors = responseData.errors; 333 // Display errors below the input fields 334 for (var field in errors) { 335 if (errors.hasOwnProperty(field)) { 336 var errorMessage = errors[field]; 337 jQuery("#" + field) 338 .closest("div") 339 .find(".error-message") 340 .html(errorMessage); 341 342 jQuery('#youremail').keyup(function () { 343 jQuery(this).closest('.form-group').find('.error-message').html(''); 344 }); 345 jQuery('.footer_contact_form').prop('disabled', false); 346 347 } 348 } 349 } 350 }, 351 error: function (xhr, status, error) { 352 console.log(xhr.responseText); 353 }, 354 complete: function () { 355 jQuery(".loader").hide(); 356 }, 357 }); 358 }, 359 }); 360 }); 361 362 // Start a project from 363 jQuery(document).on("click", ".quote_form_custom", function () { 364 jQuery("#fno_751_request_quote_form").validate({ 365 ignore: ":hidden:not(.sp_hide_cpt)", 366 rules: { 367 qut_f_name: { 368 required: true, 369 minlength: 3, 370 maxlength: 50, 371 }, 372 qut_email: { 373 required: true, 374 email: true, 375 emailRegex: true, 376 minlength: 5, 377 maxlength: 50, 378 }, 379 req_phone: { 380 minlength: 7, 381 maxlength: 13, 382 number: true, 383 }, 384 company_name: { 385 minlength: 3, 386 maxlength: 50, 387 }, 388 qut_project_msg: { 389 required: true, 390 minlength: 10, 391 /* maxlength: 500, */ 392 }, 393 sp_file_upload: { 394 // required: true, 395 fileSize: 5242880, 396 fileType: "pdf,docx,doc", 397 }, 398 acceptance_712: { 399 required: true, 400 }, 401 ct_hiddenRecaptcha: { 402 required: true, 403 }, 404 }, 405 messages: { 406 qut_f_name: { 407 required: "Your name is required", 408 minlength: "Your name must be at least 3 characters", 409 maxlength: "Your name should not be greater than 50 characters", 410 }, 411 qut_email: { 412 required: "Email is required", 413 email: "Please enter a valid email address", 414 emailRegex: "Please enter a valid email address", 415 minlength: "Email must be at least 5 characters", 416 maxlength: "Email should not be greater than 50 characters", 417 }, 418 req_phone: { 419 minlength: "Phone number must be at least 7 digits", 420 maxlength: "Phone number should not be greater than 13 digits", 421 number: "Please enter a valid phone number", 422 }, 423 company_name: { 424 minlength: "Company name must be at least 3 characters", 425 maxlength: "Company name should not be greater than 50 characters", 426 }, 427 qut_project_msg: { 428 required: "Project description is required", 429 minlength: "Project description must be at least 10 characters", 430 /* maxlength: 431 "Project description should not be greater than 500 characters", */ 432 }, 433 sp_file_upload: { 434 // required: "Upload file is required", 435 fileSize: "Please upload a file with a maximum size of 5MB", 436 fileType: "Please upload a PDF or DOC file", 437 }, 438 acceptance_712: { 439 required: 440 "You must accept the privacy policy before sending your message", 441 }, 442 ct_hiddenRecaptcha: { 443 required: "reCAPTCHA is required", 444 }, 445 }, 446 submitHandler: function (form, e) { 447 e.preventDefault(); 448 449 var sp_recaptchaResponse = grecaptcha.getResponse(sp_form); 450 if (sp_recaptchaResponse === "") { 451 jQuery('.capt_error_st').html("reCAPTCHA expired or not solved"); 452 return false;
453 } 454 else { 455 jQuery('.capt_error_st').html(""); 456 } 457 458 var sp_form_id = jQuery(".quote_form_custom").closest("form").attr("id"); 459 var start_prj_formData = new FormData( 460 document.getElementById("fno_751_request_quote_form") 461 ); 462 var start_pr_fileInput = document.getElementById("sp_file_upload"); 463 var start_pr_file = start_pr_fileInput.files[0]; 464 start_prj_formData.append("image", start_pr_file); 465 start_prj_formData.append("sp_form_id", sp_form_id); 466 start_prj_formData.append("action", "start_project_form"); 467 468 $.ajax({ 469 url: my_ajax_object.ajax_url, 470 type: "POST", 471 dataType: "json", 472 data: start_prj_formData, 473 cache: false, 474 processData: false, 475 contentType: false, 476 beforeSend: function () { 477 jQuery(".loader").show(); 478 jQuery('.quote_form_custom').prop('disabled', true); 479 }, 480 success: function (response) { 481 var responseData_sproj = response; 482 console.log(responseData_sproj); 483 if (responseData_sproj.success == true) { 484 var spr_res_status = responseData_sproj.status; 485 console.log(spr_res_status); 486 jQuery(".loader").hide(); 487 488 /* jQuery(".quote_form_custom") 489 .closest("div") 490 .find(".status_msg_sp") 491 .html(spr_res_status); */ 492 rediectThankyouPage(); 493 setTimeout(function () { 494 jQuery("#fno_751_request_quote_form").trigger("reset"); 495 jQuery(".status_msg_sp").hide(); 496 jQuery("#selectPhoneFlag").val(""); 497 jQuery("#sp_file_upload").val(""); 498 jQuery(".service_select2").val(null).trigger("change"); 499 jQuery(".change_f_name").html("Upload File*"); 500 jQuery("#request_quote_popup").modal("hide"); 501 jQuery(".file_closed_name").attr("style", "display:none"); 502 jQuery(".quote_form_custom").prop('disabled', false); 503 jQuery(".other_service_txt").attr("style", "display:none"); 504 jQuery(".hide_def_file_sap").attr("style", "display:none"); 505 jQuery(".hide_def_file_sap").removeClass("file_success"); 506 jQuery('.quote_form_custom').prop('disabled', false); 507 jQuery(".hide_sap_after_upload").removeAttr("style", "display:none"); 508 jQuery('.add_error_msg_sap').html(''); 509 jQuery('.error-message').html(''); 510 jQuery(".status_msg_sp").html(''); 511 }, 5000); // 5 seconds 512 grecaptcha.reset(); 513 /* jQuery(".status_msg_sp").show(); */ 514 } else { 515 // Error handling 516 var errors = responseData_sproj.errors; 517 // Display errors below the input fields 518 for (var field in errors) { 519 if (errors.hasOwnProperty(field)) { 520 var errorMessage = errors[field]; 521 jQuery("#" + field) 522 .closest("div") 523 .find(".error-message") 524 .html(errorMessage); 525 526 jQuery('#qut_email').keyup(function () { 527 jQuery(this).closest('.input-group').find('.error-message').html(''); 528 }); 529 530 jQuery(".quote_form_custom").prop('disabled', false); 531 } 532 } 533 } 534 }, 535 error: function (xhr, status, error) { 536 console.log(xhr.responseText); 537 }, 538 complete: function () { 539 jQuery(".loader").hide(); 540 }, 541 }); 542 }, 543 }); 544 }); 545 546 // Contact Us Page Inquiry Form 547 jQuery(document).on("click", ".contact_page_form", function ($) { 548 jQuery("#inquiry_cu_form_359").validate({ 549 ignore: ":hidden:not(.hide_cpt_inquiry)", 550 rules: { 551 first_name: { 552 required: true, 553 minlength: 3, 554 maxlength: 25, 555 }, 556 last_name: { 557 required: true, 558 minlength: 3, 559 maxlength: 25, 560 }, 561 your_email: { 562 required: true, 563 email: true, 564 emailRegex: true, 565 minlength: 5, 566 maxlength: 50, 567 }, 568 phone_number: { 569 minlength: 7, 570 maxlength: 13, 571 number: true, 572 }, 573 cu_company_name: { 574 minlength: 3, 575 maxlength: 50, 576 }, 577 skype: { 578 minlength: 5, 579 maxlength: 50, 580 }, 581 cu_project_description: { 582 minlength: 10, 583 /* maxlength: 500, */ 584 }, 585 inquirfrm_hiddenRecaptcha: { 586 required: true, 587 }, 588 }, 589 messages: { 590 first_name: { 591 required: "First name is required", 592 minlength: "First name must be at least 3 characters", 593 maxlength: "First name should not be greater than 25 characters", 594 }, 595 last_name: { 596 required: "Last name is required", 597 minlength: "Last name must be at least 3 characters", 598 maxlength: "Last name should not be greater than 25 characters", 599 }, 600 your_email: { 601 required: "Email is required", 602 email: "Please enter a valid email address", 603 emailRegex: "Please enter a valid email address", 604 minlength: "Email must be at least 5 characters", 605 maxlength: "Email should not be greater than 50 characters", 606 }, 607 phone_number: { 608 minlength: "Phone number must be at least 7 digits", 609 maxlength: "Phone number should not be greater than 13 digits", 610 number: "Please enter a valid phone number", 611 }, 612 cu_company_name: { 613 minlength: "Company name must be at most 3 characters", 614 maxlength: "Company name should not be greater than 50 characters", 615 }, 616 skype: { 617 minlength: "Skype must be at most 5 characters", 618 maxlength: "Skype should not be greater than 50 characters", 619 }, 620 cu_project_description: { 621 minlength: "Project description must be at most 10 characters", 622 /* maxlength: 623 "Project description should not be greater than 500 characters", */ 624 }, 625 inquirfrm_hiddenRecaptcha: { 626 required: "reCAPTCHA is required", 627 }, 628 }, 629 submitHandler: function (form, e) { 630 e.preventDefault(); 631 var cu_recaptchaResponse = grecaptcha.getResponse(inquiry_frm); 632 if (cu_recaptchaResponse === "") { 633 jQuery('.capt_error_inq').html("reCAPTCHA expired or not solved"); 634 return false;
635 } 636 else { 637 jQuery('.capt_error_inq').html(""); 638 } 639 640 var inq_form_id = jQuery(".contact_page_form") 641 .closest("form") 642 .attr("id"); 643 var cu_page_formData = jQuery(form).serialize(); 644 645 jQuery.ajax({ 646 url: my_ajax_object.ajax_url, 647 type: "POST", 648 data: { 649 action: "inquiry_contact_us_page", 650 cu_page_formData: cu_page_formData, 651 inq_form_id: inq_form_id, 652 }, 653 beforeSend: function () { 654 jQuery(".loader").show(); 655 jQuery('.contact_page_form').prop('disabled', true); 656 }, 657 success: function (response) { 658 console.log(response); 659 var responseData_inq = JSON.parse(response); 660 console.log(responseData_inq); 661 if (responseData_inq.success == true) { 662 var inq_res_status = responseData_inq.status; 663 console.log(inq_res_status); 664 jQuery(".loader").hide(); 665 rediectThankyouPage(); 666 setTimeout(function () { 667 jQuery("#inquiry_cu_form_359").trigger("reset"); 668 jQuery(".status_msg_inq").hide(); 669 jQuery("#selectPhoneFlag").val(""); 670 jQuery('.contact_page_form').prop('disabled', false); 671 jQuery(".status_msg_inq").html(''); 672 }, 5000); // 5 seconds 673 grecaptcha.reset(); 674 jQuery(".status_msg_inq").show(); 675 676 jQuery(".contact_page_form") 677 .closest("div") 678 .find(".status_msg_inq") 679 .html(inq_res_status); 680 jQuery('.error-message').html(''); 681 } else { 682 // Error handling 683 var errors = responseData_inq.errors; 684 // Display errors below the input fields 685 for (var field in errors) { 686 if (errors.hasOwnProperty(field)) { 687 var errorMessage = errors[field]; 688 jQuery("#" + field) 689 .closest("div") 690 .find(".error-message") 691 .html(errorMessage); 692 jQuery('.contact_page_form').prop('disabled', false); 693 } 694 } 695 } 696 }, 697 error: function (xhr, status, error) { 698 console.log(xhr.responseText); 699 }, 700 complete: function () { 701 jQuery(".loader").hide(); 702 }, 703 }); 704 }, 705 }); 706 }); 707 708 // Home page popup Form 709 jQuery(document).on("click", ".home_main_popup", function () { 710 jQuery("#home_popup").validate({ 711 ignore: ":hidden:not(.home_hide_cpt)", 712 rules: { 713 yourname_frm: { 714 required: true, 715 minlength: 3, 716 maxlength: 50, 717 }, 718 email_frm: { 719 required: true, 720 email: true, 721 emailRegex: true, 722 minlength: 5, 723 maxlength: 50, 724 }, 725 phone_frm: { 726 minlength: 7, 727 maxlength: 13, 728 number: true, 729 }, 730 service_frm: { 731 minlength: 2, 732 maxlength: 50, 733 }, 734 msg_frm: { 735 minlength: 10, 736 /* maxlength: 500, */ 737 }, 738 acceptance_712: { 739 required: true, 740 }, 741 hpcpt_hiddenRecaptcha: { 742 required: true, 743 }, 744 }, 745 messages: { 746 yourname_frm: { 747 required: "Your first name is required", 748 minlength: "Your first name must be at most 3 characters", 749 maxlength: "Your first name should not be greater than 50 characters", 750 }, 751 email_frm: { 752 required: "Email is required", 753 email: "Please enter a valid email address", 754 emailRegex: "Please enter a valid email address", 755 minlength: "Email must be at most 5 characters", 756 maxlength: "Email should not be greater than 50 characters", 757 }, 758 phone_frm: { 759 minlength: "Phone number must be at most 7 digits", 760 maxlength: "Phone number should not be greater than 13 digits", 761 number: "Please enter a valid phone number", 762 }, 763 service_frm: { 764 minlength: "Interested service must be at most 2 characters", 765 maxlength: 766 "Interested service should not be greater than 50 characters", 767 }, 768 msg_frm: { 769 minlength: "Project description must be at most 10 characters", 770 /* maxlength: 771 "Project description should not be greater than 500 characters", */ 772 }, 773 acceptance_712: { 774 required: 775 "You must accept the privacy policy before sending your message", 776 }, 777 hpcpt_hiddenRecaptcha: { 778 required: "reCAPTCHA is required", 779 }, 780 }, 781 submitHandler: function (form, e) { 782 e.preventDefault(); 783 var hp_recaptchaResponse = grecaptcha.getResponse(home_pg_popup); 784 if (hp_recaptchaResponse === "") { 785 jQuery('.capt_error_hp').html("reCAPTCHA expired or not solved"); 786 return false;
787 } else { 788 jQuery('.capt_error_hp').html(""); 789 } 790 791 var hp_id = jQuery(".home_main_popup").closest("form").attr("id"); 792 var main_home_popup_formData = jQuery(form).serialize(); 793 794 $.ajax({ 795 url: my_ajax_object.ajax_url, 796 type: "POST", 797 data: { 798 action: "main_home_popup_form", 799 main_home_popup_formData: main_home_popup_formData, 800 hp_id: hp_id, 801 }, 802 beforeSend: function () { 803 jQuery(".loader").show(); 804 jQuery('.home_main_popup').prop('disabled', true); 805 }, 806 success: function (response) { 807 var responseData_hp = JSON.parse(response); 808 console.log(responseData_hp); 809 if (responseData_hp.success == true) { 810 var hp_res_status = responseData_hp.status; 811 console.log(hp_res_status); 812 jQuery(".loader").hide(); 813 814 jQuery(".home_main_popup") 815 .closest("div") 816 .find(".status_msg_home") 817 .html(hp_res_status); 818 rediectThankyouPage(); 819 setTimeout(function () { 820 jQuery("#home_popup").trigger("reset"); 821 jQuery(".status_msg_home").hide(); 822 jQuery("#selectPhoneFlag").val(""); 823 jQuery("#staticBackdrop_request_quote_home").modal("hide"); 824 jQuery('.home_main_popup').prop('disabled', false); 825 jQuery('.error-message').html(''); 826 jQuery(".status_msg_home").html(''); 827 }, 5000); // 5 seconds 828 grecaptcha.reset(); 829 jQuery(".status_msg_home").show(); 830 } else { 831 // Error handling 832 var errors = responseData_hp.errors; 833 // Display errors below the input fields 834 for (var field in errors) { 835 if (errors.hasOwnProperty(field)) { 836 var errorMessage = errors[field]; 837 jQuery("#" + field) 838 .closest("div") 839 .find(".error-message") 840 .html(errorMessage); 841 842 jQuery('#email_frm').keyup(function () { 843 jQuery(this).closest('.from-row').find('.error-message').html(''); 844 }); 845 846 jQuery('.home_main_popup').prop('disabled', false); 847 848 } 849 } 850 } 851 }, 852 error: function (xhr, error) { 853 console.log(xhr.responseText); 854 }, 855 complete: function () { 856 jQuery(".loader").hide(); 857 }, 858 }); 859 }, 860 }); 861 }); 862 863 // Career page first form 864 jQuery(document).on("click", ".apply_user_first_form", function () { 865 jQuery("#career_page_1331_first").validate({ 866 ignore: ":hidden:not(.cer_one_hide)", 867 rules: { 868 apply_user_name: { 869 required: true, 870 minlength: 3, 871 maxlength: 50, 872 }, 873 apply_user_email: { 874 required: true, 875 email: true, 876 emailRegex: true, 877 minlength: 5, 878 maxlength: 50, 879 }, 880 apply_user_phone: { 881 minlength: 7, 882 maxlength: 13, 883 number: true, 884 }, 885 apply_user_experinace: { 886 required: true, 887 minlength: 1, 888 maxlength: 5, 889 validExperience: true, 890 }, 891 apply_user_desig: { 892 required: true, 893 minlength: 2, 894 maxlength: 25, 895 }, 896 resumeupload: { 897 required: true, 898 fileSize: 5242880, 899 fileType: "pdf,docx,doc", 900 }, 901 cerone_hiddenRecaptcha: { 902 required: true, 903 }, 904 }, 905 messages: { 906 apply_user_name: { 907 required: "Your name is required", 908 minlength: "Your name must be at least 3 characters", 909 maxlength: "Your name should not be greater than 500 characters", 910 }, 911 apply_user_email: { 912 required: "Email is required", 913 email: "Please enter a valid email address", 914 emailRegex: "Please enter a valid email address", 915 minlength: "Email must be at least 5 characters", 916 maxlength: "Email should not be greater than 50 characters", 917 }, 918 apply_user_phone: { 919 minlength: "Phone number must be at least 7 digits", 920 maxlength: "Phone number should not be greater than 13 digits", 921 number: "Please enter a valid phone number", 922 }, 923 apply_user_experinace: { 924 required: "Total experinace is required", 925 minlength: "Total experinace must be at least 1 digits", 926 maxlength: "Total experinace should not be greater than 5 digits", 927 validExperience: "Only numeric is allowed (E.g. 2.05)", 928 }, 929 apply_user_desig: { 930 required: "Current designation is required", 931 minlength: "Current designation must be at least 2 characters", 932 maxlength: 933 "Current designation should not be greater than 25 characters", 934 }, 935 resumeupload: { 936 required: "Resume is required", 937 fileSize: "Please upload a file with a maximum size of 5MB", 938 fileType: "Please upload a PDF or DOC file", 939 }, 940 cerone_hiddenRecaptcha: { 941 required: "reCAPTCHA is required", 942 }, 943 }, 944 submitHandler: function (form, e) { 945 e.preventDefault(); 946 947 var crf_recaptchaResponse = grecaptcha.getResponse(career_frm_one); 948 if (crf_recaptchaResponse === "") { 949 jQuery('.capt_error_crone').html("reCAPTCHA expired or not solved"); 950 return false;
951 } 952 else { 953 jQuery('.capt_error_crone').html(""); 954 } 955 956 var cuone_form_id = jQuery(".apply_user_first_form").closest("form").attr("id"); 957 var formData = new FormData( 958 document.getElementById("career_page_1331_first") 959 ); 960 var fileInput = document.getElementById("resumeupload"); 961 var file = fileInput.files[0]; 962 formData.append("image", file); 963 formData.append("cuone_form_id", cuone_form_id); 964 formData.append("action", "form_first_career"); 965 $.ajax({ 966 url: my_ajax_object.ajax_url, 967 type: "POST", 968 dataType: "json", 969 data: formData, 970 cache: false, 971 processData: false, 972 contentType: false, 973 beforeSend: function () { 974 jQuery(".loader").show(); 975 jQuery('.apply_user_first_form').prop('disabled', true); 976 }, 977 success: function (response) { 978 // var responseData_cone = response; 979 if (response.success == true) { 980 var cr_one_res_status = response.status; 981 console.log(cr_one_res_status); 982 rediectThankyouPage(); 983 jQuery(".loader").hide(); 984 jQuery(".apply_user_first_form").closest("div").find(".status_msg_cr1").html(cr_one_res_status); 985 986 // var get_len_new = jQuery('.add_error_msg_career').length; 987 // if (get_len_new > 0) { 988 // jQuery('#resumeupload-error').html(""); 989 // } else { 990 // jQuery('.add_error_msg_career').html(""); 991 // } 992 setTimeout(function () { 993 jQuery("#career_page_1331_first").trigger("reset"); 994 jQuery(".status_msg_cr1").hide(); 995 jQuery("#selectPhoneFlag").val(""); 996 jQuery("#resumeupload").val(""); 997 jQuery("#staticBackdrop_apply").modal("hide"); 998 jQuery(".hide_def_file").attr("style", "display:none"); 999 jQuery(".hide_def_file").removeClass("file_success"); 1000 jQuery('.apply_user_first_form').prop('disabled', false); 1001 jQuery(".hide_after_upload_cone").removeAttr("style", "display:none"); 1002 jQuery('.add_error_msg_career').html(''); 1003 jQuery('.error-message').html(''); 1004 jQuery('.status_msg_cr1').html(''); 1005 grecaptcha.reset(); 1006 }, 5000); // 5 seconds 1007 grecaptcha.reset(); 1008 jQuery(".status_msg_cr1").show(); 1009 } 1010 else { 1011 console.log("error"); 1012 var errors = response.errors; 1013 console.log(errors); 1014 1015 for (var field in errors) { 1016 if (errors.hasOwnProperty(field)) { 1017 var errorMessage = errors[field]; 1018 jQuery("#" + field) 1019 .closest("div") 1020 .find(".error-message") 1021 .html(errorMessage); 1022 // console.log(field); // Output the key of each error 1023 jQuery('#apply_user_email').keyup(function () { 1024 jQuery(this).closest('.from-row').find('.error-message').html(''); 1025 }); 1026 jQuery('.apply_user_first_form').prop('disabled', false); 1027 } 1028 } 1029 } 1030 }, 1031 error: function (xhr, error) { 1032 console.log(xhr.responseText); 1033 }, 1034 complete: function () { 1035 jQuery(".loader").hide(); 1036 jQuery('.user_job_second_form').removeClass('disabled'); 1037 jQuery('.user_job_second_form').prop('disabled', false); 1038 }, 1039 }); 1040 }, 1041 }); 1042 }); 1043 1044 // Career page second form 1045 jQuery(document).on("click", ".user_job_second_form", function () { 1046 jQuery("#career_second_1046_form").validate({ 1047 ignore: ":hidden:not(.cer_sec_hide)", 1048 rules: { 1049 user_name: { 1050 required: true, 1051 minlength: 3, 1052 maxlength: 50, 1053 }, 1054 user_email: { 1055 required: true, 1056 email: true, 1057 emailRegex: true, 1058 minlength: 5, 1059 maxlength: 50, 1060 }, 1061 phone_num: { 1062 minlength: 7, 1063 maxlength: 13, 1064 number: true, 1065 }, 1066 user_experinace: { 1067 required: true, 1068 minlength: 1, 1069 maxlength: 5, 1070 validExperience: true, 1071 }, 1072 user_des: { 1073 required: true, 1074 minlength: 2, 1075 maxlength: 25, 1076 }, 1077 second_cvupload: { 1078 required: true, 1079 fileSize: 5242880, 1080 fileType: "pdf,docx,doc", 1081 }, 1082 cersec_hiddenRecaptcha: { 1083 required: true, 1084 }, 1085 }, 1086 messages: { 1087 user_name: { 1088 required: "Your name is required", 1089 minlength: "Your name must be at least 3 characters", 1090 maxlength: "Your name should not be greater than 50 characters", 1091 }, 1092 user_email: { 1093 required: "Email is required", 1094 email: "Please enter a valid email address", 1095 emailRegex: "Please enter a valid email address", 1096 minlength: "Email must be at least 5 characters", 1097 maxlength: "Email should not be greater than 50 characters", 1098 }, 1099 phone_num: { 1100 minlength: "Phone number must be at least 7 digits", 1101 maxlength: "Phone number should not be greater than 13 digits", 1102 number: "Please enter a valid phone number", 1103 }, 1104 user_experinace: { 1105 required: "Total experinace is required", 1106 minlength: "Total experinace must be at least 1 digits", 1107 maxlength: "Total experinace should not be greater than 5 digits", 1108 validExperience: "Only numeric is allowed (E.g. 2.05)", 1109 }, 1110 user_des: { 1111 required: "Current designation is required", 1112 minlength: "Current designation must be at least 2 characters", 1113 maxlength: "Current designation should not be greater than 25 characters", 1114 }, 1115 second_cvupload: { 1116 required: "Resume is required", 1117 fileSize: "Please upload a file with a maximum size of 5MB", 1118 fileType: "Please upload a PDF or DOC file", 1119 }, 1120 cersec_hiddenRecaptcha: { 1121 required: "reCAPTCHA is required", 1122 }, 1123 }, 1124 submitHandler: function (form, e) { 1125 e.preventDefault(); 1126 1127 var crse_recaptchaResponse = grecaptcha.getResponse(career_frm_sec); 1128 if (crse_recaptchaResponse === "") { 1129 jQuery('.capt_error_crtwo').html("reCAPTCHA expired or not solved"); 1130 return false;
1131 } 1132 else { 1133 jQuery('.capt_error_crtwo').html(""); 1134 } 1135 1136 var cusec_form_id = jQuery(".user_job_second_form").closest("form").attr("id"); 1137 var second_cr_formData = new FormData( 1138 document.getElementById("career_second_1046_form") 1139 ); 1140 1141 if (second_cr_formData.has("second_cvupload")) { 1142 var sec_fileInput = document.getElementById("second_cvupload"); 1143 var secfile = sec_fileInput.files[0]; 1144 second_cr_formData.append("image", secfile); 1145 } 1146 second_cr_formData.append("cusec_form_id", cusec_form_id); 1147 1148 second_cr_formData.append("action", "form_second_career"); 1149 1150 $.ajax({ 1151 url: my_ajax_object.ajax_url, 1152 type: "POST", 1153 dataType: "json", 1154 data: second_cr_formData, 1155 cache: false, 1156 processData: false, 1157 contentType: false, 1158 beforeSend: function () { 1159 jQuery(".loader").show(); 1160 jQuery('.user_job_second_form').prop('disabled', true); 1161 }, 1162 success: function (response) { 1163 var responseData_sec_cr = response; 1164 console.log(responseData_sec_cr); 1165 1166 if (responseData_sec_cr.success == true) { 1167 var sec_cr_res_status = responseData_sec_cr.status; 1168 console.log(sec_cr_res_status); 1169 jQuery(".loader").hide(); 1170 1171 jQuery(".user_job_second_form") 1172 .closest("div") 1173 .find(".status_msg_cr2") 1174 .html(sec_cr_res_status); 1175 rediectThankyouPage(); 1176 setTimeout(function () { 1177 jQuery("#career_second_1046_form").trigger("reset"); 1178 jQuery(".status_msg_cr2").hide(); 1179 jQuery("#selectPhoneFlag").val(""); 1180 jQuery("#second_cvupload").val(""); 1181 jQuery("#staticBackdrop").modal("hide"); 1182 jQuery(".file_closed_name_se").attr("style", "display:none"); 1183 jQuery('.user_job_second_form').prop('disabled', false); 1184 jQuery(".hide_after_upload_ctwo").removeAttr("style", "display:none"); 1185 jQuery('.sec_add_error_msg_career').html(''); 1186 jQuery('.ctwo_hide_def_file').hide(); 1187 jQuery(".ctwo_hide_def_file").removeClass("file_success"); 1188 jQuery('.error-message').html(''); 1189 jQuery(".status_msg_cr2").html(''); 1190 }, 5000); // 5 seconds 1191 grecaptcha.reset(); 1192 jQuery(".status_msg_cr2").show(); 1193 1194 } else { 1195 // Error handling 1196 var errors = responseData_sec_cr.errors; 1197 // Display errors below the input fields 1198 for (var field in errors) { 1199 if (errors.hasOwnProperty(field)) { 1200 var errorMessage = errors[field]; 1201 jQuery("#" + field) 1202 .closest("div") 1203 .find(".error-message") 1204 .html(errorMessage); 1205 1206 jQuery('#user_email').keyup(function () { 1207 jQuery(this).closest('.from-row').find('.error-message').html(''); 1208 }); 1209 1210 jQuery('.user_job_second_form').prop('disabled', false); 1211 } 1212 } 1213 } 1214 }, 1215 error: function (xhr, error) { 1216 console.log(xhr.responseText); 1217 }, 1218 complete: function () { 1219 jQuery(".loader").hide(); 1220 }, 1221 }); 1222 }, 1223 }); 1224 }); 1225 1226 1227 // jQuery('#shake_form_submit').on("click", function () { 1228 // jQuery('.loader').show(); 1229 jQuery("#contact_shake_form").validate({ 1230 ignore: ":hidden:not(.hide_cpt_shake)", 1231 rules: { 1232 shake_name: { 1233 required: true, 1234 minlength: 3, 1235 maxlength: 50, 1236 }, 1237 shake_email: { 1238 required: true, 1239 email: true, 1240 emailRegex: true, 1241 minlength: 10, 1242 maxlength: 50, 1243 }, 1244 shake_phone: { 1245 minlength: 7, 1246 maxlength: 13, 1247 number: true, 1248 }, 1249 shake_msg: { 1250 minlength: 10, 1251 /* maxlength: 500, */ 1252 }, 1253 shake_hiddenRecaptcha: { 1254 required: true, 1255 }, 1256 }, 1257 messages: { 1258 shake_name: { 1259 required: "Your name is required", 1260 minlength: "Your name must be at least 3 characters", 1261 maxlength: "Your name should not be greater than 50 characters", 1262 }, 1263 shake_email: { 1264 required: "Email is required", 1265 email: "Please enter a valid email address", 1266 emailRegex: "Please enter a valid email address", 1267 minlength: "Email must be at least 10 characters", 1268 maxlength: "Email should not be greater than 50 characters", 1269 }, 1270 shake_phone: { 1271 minlength: "Phone number must be at least 7 digits", 1272 maxlength: "Phone number should not be greater than 13 digits", 1273 number: "Please enter a valid phone number", 1274 }, 1275 shake_msg: { 1276 minlength: "Message must be at least 10 characters", 1277 /* maxlength: 1278 "Message should not be greater than 500 characters", */ 1279 }, 1280 shake_hiddenRecaptcha: { 1281 required: "reCAPTCHA is required", 1282 }, 1283 }, 1284 submitHandler: function (form, e) { 1285 e.preventDefault(); 1286 formSubmitted = true; 1287 var sh_form_id = jQuery(".common_shake_form_submit").closest("form").attr("id"); 1288 var formDataShake = jQuery(form).serialize(); 1289 var recaptchaResponse = grecaptcha.getResponse(shake_form); 1290 if (recaptchaResponse === "") { 1291 jQuery('.capt_error_shake').html("reCAPTCHA expired or not solved"); 1292 return false;
1293 } 1294 else { 1295 jQuery('.capt_error_shake').html(""); 1296 } 1297 1298 $.ajax({ 1299 url: my_ajax_object.ajax_url, 1300 type: "POST", 1301 data: { 1302 action: "shake_common_form", 1303 formDataShake: formDataShake, 1304 sh_form_id: sh_form_id, 1305 }, 1306 beforeSend: function () { 1307 jQuery(".loader").show(); 1308 // jQuery('.common_shake_form_submit').prop('disabled', true); 1309 }, 1310 success: function (response) { 1311 var responseData = JSON.parse(response); 1312 console.log(responseData); 1313 if (responseData.success == true) { 1314 var ftr_res_status = responseData.status; 1315 1316 jQuery(".loader").hide(); 1317 jQuery(".common_shake_form_submit") 1318 .closest("div") 1319 .find(".status_msg") 1320 .html(ftr_res_status); 1321 1322 setTimeout(function () { 1323 jQuery("#contact_shake_form").trigger("reset"); 1324 jQuery(".status_msg").hide(); 1325 jQuery("#selectPhoneFlag").val(""); 1326 // jQuery('.common_shake_form_submit').prop('disabled', false); 1327 jQuery('.form-group').find('.error-message').html(''); 1328 jQuery('.sidebar-contact').removeClass('active'); 1329 jQuery('.inquiry-slidebar').removeClass('active'); 1330 jQuery('.close-icon-click').removeClass('active'); 1331 jQuery(".status_msg").html(''); 1332 }, 5000); // 5 seconds 1333 grecaptcha.reset(); 1334 jQuery(".status_msg").show(); 1335 } else { 1336 // Error handling 1337 var errors = responseData.errors; 1338 // Display errors below the input fields 1339 for (var field in errors) { 1340 if (errors.hasOwnProperty(field)) { 1341 var errorMessage = errors[field]; 1342 jQuery("#" + field) 1343 .closest("div") 1344 .find(".error-message") 1345 .html(errorMessage); 1346 1347 jQuery('#shake_email').keyup(function () { 1348 jQuery(this).closest('.form-group').find('.error-message').html(''); 1349 }); 1350 // jQuery('.common_shake_form_submit').prop('disabled', false); 1351 } 1352 } 1353 } 1354 }, 1355 error: function (xhr, status, error) { 1356 console.log(xhr.responseText); 1357 }, 1358 complete: function () { 1359 jQuery(".loader").hide(); 1360 }, 1361 }); 1362 return false; 1363 }, 1364 }); 1365 // }); 1366 1367 $.validator.addMethod("emailOrPhone", function (value, element) { 1368 if (!value) return false; 1369 if (value.indexOf("@") !== -1) { 1370 // treat as email 1371 return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); 1372 } 1373 // treat as phone: 7–20 digits (allow symbols) 1374 var digits = value.replace(/\D+/g, ""); 1375 return digits.length >= 7 && digits.length <= 20; 1376 }, "Please enter a valid email or phone"); 1377 1378 //Referral Form Validation 1379 jQuery('.referral_form_submit').click(function (){ 1380 $("#referralForm").validate({ 1381 ignore: ":hidden:not(.referral_hide_cpt)", 1382 rules: { 1383 referral_form_name: { required: true, minlength: 3, maxlength: 50 }, 1384 referral_form_email: { required: true, email: true, minlength: 6, maxlength: 50 }, 1385 referral_form_referrals_full_name: { required: true, minlength: 3, maxlength: 50 }, 1386 referral_form_referrals_email_or_phone: { required: true, emailOrPhone: true, minlength: 6, maxlength: 50 }, 1387 acceptance_referral: { required: true }, 1388 referralcpt_hiddenRecaptcha: { required: true } 1389 }, 1390 messages: { 1391 referral_form_name: { 1392 required: "Your full name is required", 1393 minlength: "Your name must be at least 3 characters", 1394 maxlength: "Your name should not be greater than 50 characters", 1395 }, 1396 referral_form_email: { 1397 required: "Your email is required", 1398 email: "Please enter a valid email address", 1399 minlength: "Email must be at least 6 characters", 1400 maxlength: "Email should not be greater than 50 characters", 1401 }, 1402 referral_form_referrals_full_name: { 1403 required: "Referral's full name is required", 1404 minlength: "Referral's full name must be at least 3 characters", 1405 maxlength: "Referral's full name should not be greater than 50 characters", 1406 }, 1407 referral_form_referrals_email_or_phone: { 1408 required: "Referral's Email / Phone is required", 1409 }, 1410 acceptance_referral: { 1411 required: "You must accept the privacy policy before sending your message", 1412 }, 1413 referralcpt_hiddenRecaptcha: { 1414 required: "reCAPTCHA is required", 1415 }, 1416 }, 1417 submitHandler: function (form, e) { 1418 e.preventDefault(); 1419 1420 var referral_form_id = $(form).attr("id"); // "referralForm" 1421 var formDataReferral = $(form).serialize(); 1422 1423 /* var recaptchaResponse = (typeof grecaptcha !== "undefined") ? grecaptcha.getResponse() : ""; 1424 if (recaptchaResponse === "") { 1425 $('.capt_error_referral').html("reCAPTCHA expired or not solved"); 1426 return false;
1427 } else { 1428 $('.capt_error_referral').html(""); 1429 } */ 1430 1431 var referral_recaptchaResponse = grecaptcha.getResponse(referral_form); 1432 if (referral_recaptchaResponse === "") { 1433 jQuery('.capt_error_referral').html("reCAPTCHA expired or not solved"); 1434 return false; 1435 } 1436 else { 1437 jQuery('.capt_error_referral').html(""); 1438 } 1439 1440 $.ajax({ 1441 url: my_ajax_object.ajax_url, 1442 type: "POST", 1443 data: { 1444 action: "main_referral_form", 1445 formDataReferral: formDataReferral, 1446 referral_form_id: referral_form_id, 1447 nonce: my_ajax_object.nonce 1448 }, 1449 beforeSend: function () { 1450 $(".loader").show(); 1451 }, 1452 success: function (response) { 1453 $(".loader").hide(); 1454 try { 1455 var res = (typeof response === "string") ? JSON.parse(response) : response; 1456 1457 if (res.success) { 1458 $(".referral_status_msg").html(res.data.status).show(); 1459 form.reset(); 1460 $(".form-group .error-message").html(""); 1461 setTimeout(function () { 1462 $(".referral_status_msg").fadeOut().html(""); 1463 }, 5000); 1464 grecaptcha.reset(); 1465 rediectThankyouPage(); 1466 1467 } else { 1468 var errors = res.errors || {}; 1469 // Show field-specific errors 1470 Object.keys(errors).forEach(function (field) { 1471 $("#" + field).closest(".form-group").find(".error-message").html(errors[field]); 1472 }); 1473 } 1474 } catch (err) { 1475 console.error(err); 1476 } 1477 }, 1478 error: function (xhr) { 1479 $(".loader").hide(); 1480 console.error(xhr.responseText || xhr.statusText); 1481 } 1482 }); 1483 1484 return false; 1485 } 1486 }); 1487 }) 1488 1489 // Open product listing page book demo popup 1490 jQuery("#book_now_product").click(function () { 1491 var data_prod_id = jQuery(this).attr('data-id'); 1492 jQuery('#product_name').val(data_prod_id); 1493 jQuery('#staticBackdrop_products').modal('show'); 1494 setTimeout(function () { 1495 jQuery("#yourname_apply").focus(); 1496 }, 1000); 1497 }); 1498 1499 // Book Demo Form 1500 jQuery(document).on('click', ".book_demo_submit", function () { 1501 jQuery("#product_book_demo_111").validate({ 1502 ignore: ":hidden:not(.prod_hide)", 1503 rules: { 1504 prod_email: { 1505 required: true, 1506 email: true, 1507 emailRegex: true, 1508 minlength: 5, 1509 maxlength: 50, 1510 }, 1511 prod_company_name: { 1512 minlength: 2, 1513 maxlength: 50, 1514 }, 1515 prod_number: { 1516 minlength: 7, 1517 maxlength: 13, 1518 number: true, 1519 }, 1520 product_description: 1521 { 1522 minlength: 10, 1523 /* maxlength: 500, */ 1524 }, 1525 prod_book_hiddenRecaptcha: 1526 { 1527 required: true, 1528 } 1529 }, 1530 messages: { 1531 prod_email: { 1532 required: "Email is required", 1533 email: "Please enter a valid email address", 1534 emailRegex: "Please enter a valid email address", 1535 minlength: "Email must be at least 5 characters", 1536 maxlength: "Email should not be greater than 50 characters", 1537 }, 1538 prod_company_name: { 1539 minlength: "Company name must be at least 2 characters", 1540 maxlength: "Company name should not be greater than 50 characters", 1541 }, 1542 prod_number: 1543 { 1544 minlength: "Phone number must be at least 7 digits", 1545 maxlength: "Phone number should not be greater than 13 digits", 1546 number: "Please enter a valid phone number", 1547 }, 1548 product_description: 1549 { 1550 minlength: "Product description must be at least 10 characters", 1551 /* maxlength: "Product description should not be greater than 500 characters", */ 1552 }, 1553 prod_book_hiddenRecaptcha: { 1554 required: "reCAPTCHA is required", 1555 } 1556 }, 1557 submitHandler: function (form, e) { 1558 e.preventDefault(); 1559 1560 var prod_form_id = jQuery(".book_demo_submit").closest("form").attr("id"); 1561 console.log(prod_form_id); 1562 var product_formData = new FormData( 1563 document.getElementById("product_book_demo_111") 1564 ); 1565 1566 product_formData.append("prod_form_id", prod_form_id); 1567 product_formData.append("action", "form_book_a_demo"); 1568 1569 $.ajax({ 1570 url: my_ajax_object.ajax_url, 1571 type: "POST", 1572 dataType: "json", 1573 data: product_formData, 1574 cache: false, 1575 processData: false, 1576 contentType: false, 1577 beforeSend: function () { 1578 jQuery(".loader").show(); 1579 jQuery('.book_demo_submit').prop('disabled', true); 1580 }, 1581 success: function (response) { 1582 var prodct_frm = response; 1583 console.log(prodct_frm); 1584 1585 var prod_recaptchaResponse = grecaptcha.getResponse(book_frm); 1586 if (prod_recaptchaResponse === "") { 1587 jQuery('.prod_error_book').html("reCAPTCHA expired or not solved"); 1588 return false;
1589 } 1590 else { 1591 jQuery('.prod_error_book').html(""); 1592 } 1593 1594 if (prodct_frm.success == true) { 1595 var prd_res_status = prodct_frm.status; 1596 console.log(prd_res_status); 1597 jQuery(".loader").hide(); 1598 1599 jQuery(".book_demo_submit") 1600 .closest("div") 1601 .find(".status_msg_prod_book") 1602 .html(prd_res_status); 1603 1604 setTimeout(function () { 1605 jQuery("#product_book_demo_111").trigger("reset"); 1606 jQuery(".status_msg_prod_book").hide(); 1607 jQuery("#selectPhoneFlag").val(""); 1608 jQuery("#staticBackdrop_products").modal("hide"); 1609 jQuery('.book_demo_submit').prop('disabled', false); 1610 jQuery('#product_name option').removeAttr('selected'); 1611 jQuery('.error-message').html(''); 1612 jQuery(".status_msg_prod_book").html(''); 1613 }, 5000); // 5 seconds 1614 grecaptcha.reset(); 1615 jQuery(".status_msg_prod_book").show(); 1616 1617 } else { 1618 // Error handling 1619 var errors = prodct_frm.errors; 1620 // Display errors below the input fields 1621 for (var field in errors) { 1622 if (errors.hasOwnProperty(field)) { 1623 var errorMessage = errors[field]; 1624 jQuery("#" + field) 1625 .closest("div") 1626 .find(".error-message") 1627 .html(errorMessage); 1628 1629 jQuery('#prod_email').keyup(function () { 1630 jQuery(this).closest('.from-row').find('.error-message').html(''); 1631 }); 1632 1633 jQuery('.book_demo_submit').prop('disabled', false); 1634 } 1635 } 1636 } 1637 }, 1638 error: function (xhr, error) { 1639 console.log(xhr.responseText); 1640 }, 1641 complete: function () { 1642 jQuery(".loader").hide(); 1643 }, 1644 }); 1645 1646 } 1647 }); 1648 }); 1649 1650 // Delegate click event to a parent element that exists on page load 1651 jQuery(document).on('click', '.getval', function () { 1652 var dataIdValue = jQuery(this).data('id'); 1653 console.log(dataIdValue); // This will log the data-id value to the console 1654 setSelectedOption(dataIdValue); 1655 }); 1656 1657 // Change event handler for the product_name select element 1658 jQuery(document).on('change', '#product_name', function () { 1659 var selectedValue = jQuery(this).val(); 1660 console.log(selectedValue); 1661 }); 1662 1663 function setSelectedOption(dataIdValue) { 1664 jQuery('#product_name option').removeAttr('selected'); 1665 jQuery('#product_name option[value="' + dataIdValue + '"]').prop('selected', true); 1666 } 1667 1668 // Case studies Load More 1669 /* if(jQuery('body').hasClass('page-template-case-study-listing')){ 1670 jQuery(document).ready(function ($) { 1671 let page = 2; // Start with page 2 since the first 10 posts are already loaded. 1672 let loading = false; 1673 1674 function loadMorePosts() { 1675 if (!loading) { 1676 loading = true; 1677 1678 // Show loader after a short delay 1679 setTimeout(() => { 1680 $('#load_more_case_studies').append('<div id="loading-spinner"><div class="loader-text"><div class="scanner"><p>Loading...</p></div></div></div>'); 1681 }, 300); // Delay of 300ms before showing the loader 1682 1683 setTimeout(() => { 1684 $.ajax({ 1685 url: my_ajax_object.ajax_url, 1686 type: 'POST', 1687 data: { 1688 action: 'load_more_case_studies', 1689 page: page, 1690 }, 1691 success: function (response) { 1692 // Remove the loading spinner 1693 $('#loading-spinner').remove(); 1694 1695 if (response.trim() !== '') { 1696 $('#load_more_case_studies').append(response); // Append new posts to the row 1697 page++; 1698 loading = false;
1699 } else { 1700 // Remove spinner and disable further loading 1701 $('#loading-spinner').remove(); 1702 $(window).off('scroll'); 1703 } 1704 }, 1705 error: function () { 1706 console.error('An error occurred while loading more posts.'); 1707 // Remove the loading spinner and reset loading 1708 $('#loading-spinner').remove(); 1709 loading = false; 1710 }, 1711 }); 1712 }, 1500); // Delay of 500ms before making the AJAX call 1713 } 1714 } 1715 1716 // Check scroll position relative to the #load_more_case_studies section 1717 $(window).scroll(function () { 1718 const section = $('#load_more_case_studies'); 1719 const sectionOffset = section.offset().top + section.outerHeight(); 1720 const scrollPosition = $(window).scrollTop() + $(window).height(); 1721 const offset = 100; // Offset from the bottom to trigger loading 1722 1723 if (scrollPosition >= sectionOffset - offset && !loading) { 1724 loadMorePosts(); 1725 } 1726 }); 1727 }); 1728 } */ 1729 // Case studies Load More 1730 1731// New Portfolio Listing Filter 1732if(jQuery('body').hasClass('page-template-portfolio-list')){ 1733 let currentPage = 1; 1734 let loading = false; 1735 1736 function getUrlParameter(name) { 1737 const urlParams = new URLSearchParams(window.location.search); 1738 return urlParams.get(name); 1739 } 1740 1741 function fetchPortfolio(loadMore = false, ) { 1742 1743 if (!loading) { 1744 loading = true; 1745 1746 // Show loader in the correct location 1747 const loaderHtml = ` 1748 <div id="loading-spinner"> 1749 <div class="loader-text ${loadMore ? 'load-more-loader' : ''}"> 1750 <div class="scanner"><p>Loading...</p></div> 1751 </div> 1752 </div> 1753 `; 1754 if (loadMore) { 1755 // Append loader at the bottom for "Load More" 1756 $('.portfolio-list-sec').append(loaderHtml); 1757 } else { 1758 // Show loader at the center for filter and search 1759 $('.portfolio-list-sec').html(loaderHtml); 1760 } 1761 1762 setTimeout(() => { 1763 const technology = $('#technologies').find(':selected').val() || 0; 1764 const category = $('#categories').find(':selected').val() || 0; 1765 const search = $('#search-input').val() || ''; 1766 1767 $.ajax({ 1768 url: my_ajax_object.ajax_url, 1769 type: 'POST', 1770 data: { 1771 action: 'filter_portfolio', 1772 technology: technology, 1773 category: category, 1774 search: search, 1775 paged: currentPage, // Pass the current page 1776 }, 1777 success: function(response) { 1778 // Remove the loading spinner 1779 $('#loading-spinner').remove(); 1780 1781 if (response.success) { 1782 if (loadMore) { 1783 // Append new results 1784 $('.portfolio-list-sec').append(response.data.content); 1785 } else { 1786 // Replace results if not load more 1787 $('.portfolio-list-sec').html(response.data.content); 1788 } 1789 loading = false; 1790 1791 // Show or hide the "Load More" button based on response 1792 if (response.data.has_more) { 1793 $('#load-more').show(); 1794 } else { 1795 $('#load-more').hide(); 1796 } 1797 } else { 1798 if (!loadMore) { 1799 $('.portfolio-list-sec').html('<p style="text-align: center; font-weight: 500;">No data found.</p>'); 1800 } 1801 $('#load-more').hide(); 1802 } 1803 }, 1804 }); 1805 loading = false;
1806 }, 1000); // Delay of 1500ms before making the AJAX call 1807 } 1808 } 1809 1810 // Preselect category or technology based on URL parameter 1811 $(document).ready(function() { 1812 const categorySlug = getUrlParameter('category'); 1813 const technologySlug = getUrlParameter('technology'); 1814 1815 if (categorySlug) { 1816 $('#categories option').each(function() { 1817 if ($(this).val() == categorySlug) { 1818 $(this).prop('selected', true); 1819 } 1820 }); 1821 } 1822 1823 if (technologySlug) { 1824 $('#technologies option').each(function() { 1825 if ($(this).val() == technologySlug) { 1826 $(this).prop('selected', true); 1827 } 1828 }); 1829 } 1830 1831 // Trigger change event for selected options to update the UI properly 1832 $('#technologies, #categories').trigger('change'); 1833 1834 // Initial load with filtered parameters 1835 fetchPortfolio(); 1836 }); 1837 1838 // Filter change 1839 $('#technologies, #categories').on('change', function() { 1840 currentPage = 1; // Reset to the first page 1841 fetchPortfolio(); 1842 }); 1843 1844 $('#search-input').on('input', function() { 1845 currentPage = 1; // Reset to the first page 1846 fetchPortfolio(); 1847 }); 1848 1849 // Load more 1850 $('#clear-btn').on('click', function(e) { 1851 fetchPortfolio(); // Pass true for appending 1852 }); 1853 1854 // Load more 1855 $('#load-more').on('click', function(e) { 1856 e.preventDefault(); 1857 currentPage++; // Increment the page number 1858 fetchPortfolio(true); // Pass true for appending 1859 }); 1860 1861 1862} 1863// New Portfolio Listing Filter 1864 1865// Case Study Listing Filter 1866if(jQuery('body').hasClass('page-template-case-study-listing')){ 1867 let currentPage = 1; 1868 let loading = false; 1869 1870 function getUrlParameter(name) { 1871 const urlParams = new URLSearchParams(window.location.search); 1872 return urlParams.get(name); 1873 } 1874 1875 function fetchCaseStudy(loadMore = false, ) { 1876 1877 if (!loading) { 1878 loading = true; 1879 1880 // Show loader in the correct location 1881 const loaderHtml = ` 1882 <div id="loading-spinner"> 1883 <div class="loader-text ${loadMore ? 'load-more-loader' : ''}"> 1884 <div class="scanner"><p>Loading...</p></div> 1885 </div> 1886 </div> 1887 `; 1888 if (loadMore) { 1889 // Append loader at the bottom for "Load More" 1890 $('#load_more_case_studies').append(loaderHtml); 1891 } else { 1892 // Show loader at the center for filter and search 1893 $('#load_more_case_studies').html(loaderHtml); 1894 } 1895 1896 setTimeout(() => { 1897 const technology = $('#technologies').find(':selected').val() || 0; 1898 const category = $('#categories').find(':selected').val() || 0; 1899 const search = $('#search-input').val() || ''; 1900 1901 $.ajax({ 1902 url: my_ajax_object.ajax_url, 1903 type: 'POST', 1904 data: { 1905 action: 'filter_case_study', 1906 technology: technology, 1907 category: category, 1908 search: search, 1909 paged: currentPage, // Pass the current page 1910 }, 1911 success: function(response) { 1912 // Remove the loading spinner 1913 $('#loading-spinner').remove(); 1914 1915 if (response.success) { 1916 if (loadMore) { 1917 // Append new results 1918 $('#load_more_case_studies').append(response.data.content); 1919 } else { 1920 // Replace results if not load more 1921 $('#load_more_case_studies').html(response.data.content); 1922 } 1923 loading = false; 1924 1925 // Show or hide the "Load More" button based on response 1926 if (response.data.has_more) { 1927 $('#load-more').show(); 1928 } else { 1929 $('#load-more').hide(); 1930 } 1931 } else { 1932 if (!loadMore) { 1933 $('#load_more_case_studies').html('<p class="casestudy-no-data" style="text-align: center; font-weight: 500; color: #fff;font-size: 20px !important;padding: 0;margin: 0;">No data found.</p>'); 1934 } 1935 $('#load-more').hide(); 1936 } 1937 }, 1938 }); 1939 loading = false;
1940 }, 1000 1941 ); // Delay of 1500ms before making the AJAX call 1942 } 1943 } 1944 1945 // Preselect category or technology based on URL parameter 1946 $(document).ready(function() { 1947 const categorySlug = getUrlParameter('category'); 1948 const technologySlug = getUrlParameter('technology'); 1949 1950 if (categorySlug) { 1951 $('#categories option').each(function() { 1952 if ($(this).val() == categorySlug) { 1953 $(this).prop('selected', true); 1954 } 1955 }); 1956 } 1957 1958 if (technologySlug) { 1959 $('#technologies option').each(function() { 1960 if ($(this).val() == technologySlug) { 1961 $(this).prop('selected', true); 1962 } 1963 }); 1964 } 1965 1966 // Trigger change event for selected options to update the UI properly 1967 $('#technologies, #categories').trigger('change'); 1968 1969 // Initial load with filtered parameters 1970 fetchCaseStudy(); 1971 }); 1972 1973 // Filter change 1974 $('#technologies, #categories').on('change', function() { 1975 currentPage = 1; // Reset to the first page 1976 fetchCaseStudy(); 1977 }); 1978 1979 $('#search-input').on('input', function() { 1980 currentPage = 1; // Reset to the first page 1981 fetchCaseStudy(); 1982 }); 1983 1984 // Load more 1985 $('#clear-btn').on('click', function(e) { 1986 fetchCaseStudy(); // Pass true for appending 1987 }); 1988 1989 // Load more 1990 $('#load-more').on('click', function(e) { 1991 e.preventDefault(); 1992 currentPage++; // Increment the page number 1993 fetchCaseStudy(true); // Pass true for appending 1994 }); 1995 1996 1997} 1998// Case Study Listing Filter 1999 2000 // portfolio technology ajax function 2001 jQuery(".portfolio_techno li").on("click", function () { 2002 jQuery('.portfolio-showdrop').removeClass('active'); 2003 jQuery('.portfolio_submenu').slideUp(); 2004 jQuery(".portfolio_techno li").removeClass("filter-active"); 2005 jQuery(this).addClass("filter-active"); 2006 var get_cat_id = jQuery(this).data('id'); 2007 jQuery('.portfolio-loader').css('display', 'block'); 2008 jQuery(".portfolio_cat li").removeClass("filter-active"); 2009 /* console.log(get_cat_id); */ 2010 2011 if (get_cat_id != '') { 2012 $.ajax({ 2013 url: my_ajax_object.ajax_url, 2014 type: "POST", 2015 data: { 2016 action: "portfolio_technology_ajax", 2017 get_cat_id: get_cat_id 2018 }, 2019 cache: false, 2020 success: function (response) { 2021 /* console.log('response', response); 2022 console.log(response.success); */ 2023 console.log('status' + response.data.status); 2024 if (response.data.status == 'true') { 2025 2026 jQuery('.portfolio-loader').css('display', 'none'); 2027 var apt_data = response.data.html; 2028 2029 jQuery('.append_ajax_portfolio_data').html(apt_data); 2030 // jQuery('.append_ajax_data').show(); 2031 setTimeout(function () { 2032 document.addEventListener("DOMContentLoaded", (event) => { 2033 gsap.registerPlugin(ScrollTrigger) 2034 }); 2035 2036 // Adjust the smoother to account for the top padding 2037 const smoother = ScrollSmoother.create({ 2038 wrapper: "#js-gsap", 2039 content: "#js-gsap__content", 2040 smooth: 1, 2041 normalizeScroll: true, 2042 ignoreMobileResize: true, 2043 effects: true, 2044 preventDefault: true 2045 }); 2046 2047 smoother.effects(".fx-scroll-slower", { 2048 speed: 0.8 2049 }); 2050 2051 // MEMBERS CARDS 2052 const cards = gsap.utils.toArray(".c-card"); 2053 const lastCardIndex = cards.length - 1; 2054 2055 // Create the ScrollTrigger for the first and last card 2056 const firstCardST = ScrollTrigger.create({ 2057 trigger: cards[1], 2058 start: "center center" 2059 }); 2060 2061 const lastCardST = ScrollTrigger.create({ 2062 trigger: cards[cards.length - 1], 2063 start: "center center" 2064 }); 2065 2066 // Iterate over each card 2067 cards.forEach((card, index) => { 2068 const scale = index === lastCardIndex ? 1 : 1; 2069 const scaleDown = gsap.to(card, { 2070 scale: scale, 2071 }); 2072 2073 ScrollTrigger.create({ 2074 trigger: card, 2075 start: "center center", 2076 end: () => lastCardST.start, 2077 pin: true, 2078 pinSpacing: false, 2079 scrub: 0.5, 2080 ease: "none", 2081 animation: scaleDown, 2082 toggleActions: "restart none none reverse", 2083 onRefresh: self => { 2084 if (index === lastCardIndex) { 2085 self.start = () => lastCardST.start; 2086 self.end = () => lastCardST.start + card.offsetHeight; 2087 } 2088 } 2089 }); 2090 2091 // Add resize listener to recalculate sizes 2092 window.addEventListener('resize', () => { 2093 ScrollTrigger.refresh(); 2094 }); 2095 }); 2096 2097 2098 // jQuery('.append_ajax_data').show(); 2099 /* jQuery('.portfolio-old-data').hide(); */ 2100 }, 100); 2101 } else { 2102 console.log('demo1'); 2103 jQuery('.portfolio-loader').css('display', 'none'); 2104 var apt_data1 = '<div class="row d-flex justify-content-center align-items-center"><div class="col-md-4"><div class="card"><div class="card-body data-not-found"><p> No data found</p></div></div></div></div>'; 2105 jQuery('.append_ajax_portfolio_data').html(apt_data1); 2106 } 2107 }, 2108 }); 2109 } 2110 }); 2111 2112 // portfolio category ajax function 2113 jQuery(".portfolio_cat li").on("click", function () { 2114 jQuery('.portfolio-showdrop').removeClass('active'); 2115 jQuery('.portfolio_submenu').slideUp(); 2116 jQuery(".portfolio_cat li").removeClass("filter-active"); 2117 jQuery(this).addClass("filter-active"); 2118 var get_cat_id = jQuery(this).data('id'); 2119 jQuery('.portfolio-loader').css('display', 'block'); 2120 jQuery(".portfolio_techno li").removeClass("filter-active"); 2121 2122 if (get_cat_id != '') { 2123 $.ajax({ 2124 url: my_ajax_object.ajax_url, 2125 type: "POST", 2126 data: { 2127 action: "portfolio_category_ajax", 2128 get_cat_id: get_cat_id 2129 }, 2130 cache: false, 2131 success: function (response) { 2132 2133 if (response.data.status == 'true') { 2134 jQuery('.portfolio-loader').css('display', 'none'); 2135 var apt_data = response.data.html; 2136 jQuery('.append_ajax_portfolio_data').html(apt_data); 2137 // jQuery('.append_ajax_data').show(); 2138 setTimeout(function () { 2139 document.addEventListener("DOMContentLoaded", (event) => { 2140 gsap.registerPlugin(ScrollTrigger) 2141 }); 2142 2143 // Adjust the smoother to account for the top padding 2144 const smoother = ScrollSmoother.create({ 2145 wrapper: "#js-gsap", 2146 content: "#js-gsap__content", 2147 smooth: 1, 2148 normalizeScroll: true, 2149 ignoreMobileResize: true, 2150 effects: true, 2151 preventDefault: true 2152 }); 2153 2154 smoother.effects(".fx-scroll-slower", { 2155 speed: 0.8 2156 }); 2157 2158 // MEMBERS CARDS 2159 const cards = gsap.utils.toArray(".c-card"); 2160 const lastCardIndex = cards.length - 1; 2161 2162 // Create the ScrollTrigger for the first and last card 2163 const firstCardST = ScrollTrigger.create({ 2164 trigger: cards[1], 2165 start: "center center" 2166 }); 2167 2168 const lastCardST = ScrollTrigger.create({ 2169 trigger: cards[cards.length - 1], 2170 start: "center center" 2171 }); 2172 2173 // Iterate over each card 2174 cards.forEach((card, index) => { 2175 const scale = index === lastCardIndex ? 1 : 1; 2176 const scaleDown = gsap.to(card, { 2177 scale: scale, 2178 }); 2179 2180 ScrollTrigger.create({ 2181 trigger: card, 2182 start: "center center", 2183 end: () => lastCardST.start, 2184 pin: true, 2185 pinSpacing: false, 2186 scrub: 0.5, 2187 ease: "none", 2188 animation: scaleDown, 2189 toggleActions: "restart none none reverse", 2190 onRefresh: self => { 2191 if (index === lastCardIndex) { 2192 self.start = () => lastCardST.start; 2193 self.end = () => lastCardST.start + card.offsetHeight; 2194 } 2195 } 2196 }); 2197 2198 // Add resize listener to recalculate sizes 2199 window.addEventListener('resize', () => { 2200 ScrollTrigger.refresh(); 2201 }); 2202 }); 2203 2204 2205 // jQuery('.append_ajax_data').show(); 2206 /* jQuery('.portfolio-old-data').hide(); */ 2207 }, 100); 2208 } else { 2209 jQuery('.portfolio-loader').css('display', 'none'); 2210 var apt_data = '<div class="row d-flex justify-content-center align-items-center"><div class="col-md-4"><div class="card"><div class="card-body data-not-found"><p> No data found</p></div></div></div></div>'; 2211 jQuery('.append_ajax_portfolio_data').html(apt_data); 2212 } 2213 }, 2214 }); 2215 } 2216 }); 2217 2218 // portfolio all filter ajax function 2219 if (jQuery('.portfolio-filter .portfolio_all_list').hasClass('active')) { 2220 jQuery('.portfolio-loader').css('display', 'block'); 2221 jQuery(".portfolio_techno li").removeClass("filter-active"); 2222 $.ajax({ 2223 url: my_ajax_object.ajax_url, 2224 type: "POST", 2225 data: { 2226 action: "portfolio_ajax", 2227 }, 2228 cache: false, 2229 success: function (response) { 2230 console.log('status' + response.data.status); 2231 2232 if (response.data.status == true) { 2233 jQuery('.portfolio-loader').css('display', 'none'); 2234 var apt_data = response.data.html; 2235 jQuery('.append_ajax_portfolio_data').html(apt_data); 2236 setTimeout(function () { 2237 document.addEventListener("DOMContentLoaded", (event) => { 2238 gsap.registerPlugin(ScrollTrigger) 2239 }); 2240 2241 // Adjust the smoother to account for the top padding 2242 const smoother = ScrollSmoother.create({ 2243 wrapper: "#js-gsap", 2244 content: "#js-gsap__content", 2245 smooth: 1, 2246 normalizeScroll: true, 2247 ignoreMobileResize: true, 2248 effects: true, 2249 preventDefault: true 2250 }); 2251 2252 smoother.effects(".fx-scroll-slower", { 2253 speed: 0.8 2254 }); 2255 2256 // MEMBERS CARDS 2257 const cards = gsap.utils.toArray(".c-card"); 2258 const lastCardIndex = cards.length - 1; 2259 2260 // Create the ScrollTrigger for the first and last card 2261 const firstCardST = ScrollTrigger.create({ 2262 trigger: cards[1], 2263 start: "center center" 2264 }); 2265 2266 const lastCardST = ScrollTrigger.create({ 2267 trigger: cards[cards.length - 1], 2268 start: "center center" 2269 }); 2270 2271 // Iterate over each card 2272 cards.forEach((card, index) => { 2273 const scale = index === lastCardIndex ? 1 : 1; 2274 const scaleDown = gsap.to(card, { 2275 scale: scale, 2276 }); 2277 2278 ScrollTrigger.create({ 2279 trigger: card, 2280 start: "center center", 2281 end: () => lastCardST.start, 2282 pin: true, 2283 pinSpacing: false, 2284 scrub: 0.5, 2285 ease: "none", 2286 animation: scaleDown, 2287 toggleActions: "restart none none reverse", 2288 onRefresh: self => { 2289 if (index === lastCardIndex) { 2290 self.start = () => lastCardST.start; 2291 self.end = () => lastCardST.start + card.offsetHeight; 2292 } 2293 } 2294 }); 2295 2296 // Add resize listener to recalculate sizes 2297 window.addEventListener('resize', () => { 2298 ScrollTrigger.refresh(); 2299 }); 2300 }); 2301 2302 2303 // jQuery('.append_ajax_data').show(); 2304 /* jQuery('.portfolio-old-data').hide(); */ 2305 }, 100); 2306 } 2307 else { 2308 jQuery('.portfolio-loader').css('display', 'none'); 2309 var apt_data = '<div class="row d-flex justify-content-center align-items-center"><div class="col-md-4"><div class="card"><div class="card-body data-not-found"><p> No data found</p></div></div></div></div>'; 2310 jQuery('.append_ajax_portfolio_data').html(apt_data); 2311 } 2312 }, 2313 }); 2314 } 2315 2316 // portfolio all filter ajax function 2317 jQuery('.portfolio-filter .portfolio_all_list').click(function () { 2318 jQuery('.portfolio-loader').css('display', 'block'); 2319 jQuery(".portfolio_techno li").removeClass("filter-active"); 2320 $.ajax({ 2321 url: my_ajax_object.ajax_url, 2322 type: "POST", 2323 data: { 2324 action: "portfolio_ajax", 2325 }, 2326 cache: false, 2327 success: function (response) { 2328 console.log('response', response); 2329 console.log(response.success); 2330 2331 if (response.data.status == true) { 2332 jQuery('.portfolio-loader').css('display', 'none'); 2333 var apt_data = response.data.html; 2334 jQuery('.append_ajax_portfolio_data').html(apt_data); 2335 setTimeout(function () { 2336 document.addEventListener("DOMContentLoaded", (event) => { 2337 gsap.registerPlugin(ScrollTrigger) 2338 }); 2339 2340 // Adjust the smoother to account for the top padding 2341 const smoother = ScrollSmoother.create({ 2342 wrapper: "#js-gsap", 2343 content: "#js-gsap__content", 2344 smooth: 1, 2345 normalizeScroll: true, 2346 ignoreMobileResize: true, 2347 effects: true, 2348 preventDefault: true 2349 }); 2350 2351 smoother.effects(".fx-scroll-slower", { 2352 speed: 0.8 2353 }); 2354 2355 // MEMBERS CARDS 2356 const cards = gsap.utils.toArray(".c-card"); 2357 const lastCardIndex = cards.length - 1; 2358 2359 // Create the ScrollTrigger for the first and last card 2360 const firstCardST = ScrollTrigger.create({ 2361 trigger: cards[1], 2362 start: "center center" 2363 }); 2364 2365 const lastCardST = ScrollTrigger.create({ 2366 trigger: cards[cards.length - 1], 2367 start: "center center" 2368 }); 2369 2370 // Iterate over each card 2371 cards.forEach((card, index) => { 2372 const scale = index === lastCardIndex ? 1 : 1; 2373 const scaleDown = gsap.to(card, { 2374 scale: scale, 2375 }); 2376 2377 ScrollTrigger.create({ 2378 trigger: card, 2379 start: "center center", 2380 end: () => lastCardST.start, 2381 pin: true, 2382 pinSpacing: false, 2383 scrub: 0.5, 2384 ease: "none", 2385 animation: scaleDown, 2386 toggleActions: "restart none none reverse", 2387 onRefresh: self => { 2388 if (index === lastCardIndex) { 2389 self.start = () => lastCardST.start; 2390 self.end = () => lastCardST.start + card.offsetHeight; 2391 } 2392 } 2393 }); 2394 2395 // Add resize listener to recalculate sizes 2396 window.addEventListener('resize', () => { 2397 ScrollTrigger.refresh(); 2398 }); 2399 }); 2400 2401 2402 // jQuery('.append_ajax_data').show(); 2403 /* jQuery('.portfolio-old-data').hide(); */ 2404 }, 100); 2405 } else { 2406 jQuery('.portfolio-loader').css('display', 'none'); 2407 var apt_data = '<div class="row d-flex justify-content-center align-items-center"><div class="col-
2407md-4"><div class="card"><div class="card-body data-not-found"><p> No data found</p></div></div></div></div>'; 2408 jQuery('.append_ajax_portfolio_data').html(apt_data); 2409 } 2410 }, 2411 }); 2412 }) 2413 2414 // product category ajax function 2415 jQuery(".sub_cat_list li").on("click", function () { 2416 var get_cat_id = jQuery(this).data('id'); 2417 console.log(get_cat_id); 2418 2419 if (get_cat_id != '') { 2420 $.ajax({ 2421 url: my_ajax_object.ajax_url, 2422 type: "POST", 2423 data: { 2424 action: "prod_category_ajax", 2425 get_cat_id: get_cat_id 2426 }, 2427 cache: false, 2428 success: function (response) { 2429 console.log('response', response); 2430 console.log(response.success); 2431 2432 if (response.success == true) { 2433 var apt_data = response.data.html; 2434 jQuery('.append_ajax_data').html(apt_data); 2435 // jQuery('.append_ajax_data').show(); 2436 jQuery('.old_data').hide(); 2437 } 2438 }, 2439 }); 2440 } 2441 }); 2442 2443 jQuery(".sub_tag_list li").on("click", function () { 2444 var get_tag_id = jQuery(this).data("id"); 2445 console.log("data-id:", get_tag_id); 2446 2447 if (get_tag_id != '') { 2448 $.ajax({ 2449 url: my_ajax_object.ajax_url, 2450 type: "POST", 2451 data: { 2452 action: "prod_tags_ajax", 2453 get_tag_id: get_tag_id 2454 }, 2455 cache: false, 2456 success: function (response) { 2457 console.log('response', response); 2458 console.log(response.success); 2459 2460 if (response.success == true) { 2461 var tg_data = response.data.html; 2462 console.log(tg_data); 2463 jQuery('.append_ajax_data').html(tg_data); 2464 jQuery('.old_data').hide(); 2465 } 2466 }, 2467 }); 2468 } 2469 }); 2470 2471 jQuery(".all_list").on('click', function () { 2472 $.ajax({ 2473 url: my_ajax_object.ajax_url, 2474 type: "POST", 2475 data: { 2476 action: "prod_all_ajax", 2477 }, 2478 cache: false, 2479 success: function (response) { 2480 console.log('response', response); 2481 console.log(response.success); 2482 2483 if (response.success == true) { 2484 var all_data = response.data.html; 2485 console.log(all_data); 2486 jQuery('.append_ajax_data').html(all_data); 2487 jQuery('.old_data').hide(); 2488 } 2489 }, 2490 }); 2491 }); 2492 2493 // Add active class to "All" by default 2494 jQuery('.filter_btn.all_list').addClass('active'); 2495 2496 // Handle click event for list items 2497 jQuery('.filter_btn').click(function () { 2498 // Remove active class from all list items 2499 jQuery('.filter_btn').removeClass('active'); 2500 2501 // Add active class to the clicked list item 2502 jQuery(this).addClass('active'); 2503 2504 // Add active class to the parent list item if it has one 2505 jQuery(this).parents('.filter_btn').addClass('active'); 2506 }); 2507 2508 jQuery('.btn-close').on('click', function () { 2509 var closestForm = jQuery(this).closest('.modal-content').find('form'); 2510 if(closestForm.length > 0){ 2511 closestForm.trigger('reset'); 2512 closestForm.validate().resetForm(); 2513 closestForm.find('.error').text(''); 2514 } 2515 }); 2516 2517 jQuery('.email_small_logo').on('click', function () { 2518 jQuery('.sidebar-contact').addClass('active'); 2519 jQuery('.inquiry-slidebar').addClass('active'); 2520 2521 // setTimeout(function () { 2522 // jQuery(".shake_form input:first").focus(); 2523 // }, 200); 2524 2525 }); 2526 jQuery('.close-btn').on('click', function () { 2527 jQuery('.shake_form input').removeClass('error'); 2528 jQuery('.shake_form textarea').removeClass('error'); 2529 jQuery('.error-message').html(''); 2530 jQuery('.error').html(''); 2531 2532 // Close the popup 2533 jQuery('.sidebar-contact').removeClass('active'); 2534 jQuery('.inquiry-slidebar').removeClass('active'); 2535 jQuery('form').trigger('reset'); 2536 }); 2537 2538 // jQuery('#shake_name-error').html(''); 2539 2540 jQuery('input[type="text"]').on('keydown', function (e) { 2541 if (e.which === 32 && this.selectionStart === 0) { 2542 e.preventDefault(); 2543 } 2544 }); 2545 2546}); 2547 2548 2549 2550// ------ 2551jQuery('.portfolio_all_list').on('click', function () { 2552 jQuery(".portfolio_techno li").removeClass("filter-active"); 2553 jQuery(".portfolio_cat li").removeClass("filter-active"); 2554 2555}); 2556 2557function rediectThankyouPage() { 2558 window.location.href = 'https://briskstar.com/thank-you/'; 2559} 2560 2561// Thank you pag dynamic case study, blog, portfolio data 2562jQuery(document).ready(function () { 2563 jQuery('.thank_you_tab').on('click', function () { 2564 var postType = jQuery(this).attr('data-value'); 2565 // var currentPostId = ''; 2566 2567 jQuery.ajax({ 2568 url: my_ajax_object.ajax_url, 2569 type: 'POST', 2570 data: { 2571 action: 'load_posts_by_tab', 2572 post_type: postType, 2573 // current_post_id: currentPostId 2574 }, 2575 success: function (response) { 2576 jQuery('#myTabContent .tab-pane.active .row').html(response); 2577 } 2578 }); 2579 }); 2580}); 2581 2582// Clear error message on typing (bind once) 2583 jQuery('#ebook_email').on('keyup', function () { 2584 jQuery(this).closest('.form-group').find('.error-message').html(''); 2585 }); 2586 2587 // Initialize validation ONLY ONCE 2588 jQuery("#ebooks_details_inquiry").validate({ 2589 ignore: ":hidden:not(.hide_cpt_ebook)", 2590 rules: { 2591 ebook_email: { 2592 required: true, 2593 email: true, 2594 emailRegex: true, 2595 minlength: 10, 2596 maxlength: 50, 2597 }, 2598 phone: { 2599 minlength: 7, 2600 maxlength: 13, 2601 number: true, 2602 }, 2603 ebook_company_name: { 2604 minlength: 3, 2605 maxlength: 50, 2606 required: true, 2607 }, 2608 ebook_hiddenRecaptcha: { 2609 required: true, 2610 } 2611 }, 2612 2613 messages: { 2614 ebook_email: { 2615 required: "Business Email is required", 2616 email: "Please enter a valid email address", 2617 emailRegex: "Please enter a valid email address", 2618 minlength: "Email must be at least 10 characters", 2619 maxlength: "Email should not be greater than 50 characters", 2620 }, 2621 phone: { 2622 minlength: "Phone number must be at least 7 digits", 2623 maxlength: "Phone number should not be greater than 13 digits", 2624 number: "Please enter a valid phone number", 2625 }, 2626 ebook_company_name: { 2627 required: "Company name is required", 2628 minlength: "Company name must be at least 3 characters", 2629 maxlength: "Company name should not be greater than 50 characters", 2630 }, 2631 ebook_hiddenRecaptcha: { 2632 required: "reCAPTCHA is required", 2633 } 2634 }, 2635 2636 submitHandler: function (form, e) { 2637 e.preventDefault(); 2638 2639 var hp_recaptchaResponse = grecaptcha.getResponse(eBook_form); 2640 if (hp_recaptchaResponse === "") { 2641 jQuery('.capt_error_ebook').html("reCAPTCHA expired or not solved"); 2642 return false;
2643 } else { 2644 jQuery('.capt_error_ebook').html(""); 2645 } 2646 2647 var eb_id = jQuery(".ebooks-inquiry-btn").closest("form").attr("id"); 2648 var post_id = jQuery(".ebooks-details-inquiry").attr("data-post-id"); 2649 var formData = jQuery(form).serialize(); 2650 2651 jQuery.ajax({ 2652 url: my_ajax_object.ajax_url, 2653 type: "POST", 2654 data: { 2655 action: "save_ebook_form", 2656 formData: formData, 2657 eb_id:eb_id, 2658 post_id:post_id 2659 }, 2660 2661 beforeSend: function () { 2662 jQuery(".loader").show(); 2663 }, 2664 2665 success: function (response) { 2666 console.log(response); 2667 2668 if (response.success) { 2669 2670 // Show success message from backend 2671 jQuery(".status_msg_ebook") 2672 .html(response.data.message + " Redirecting...") 2673 .fadeIn(); 2674 2675 // Reset form 2676 form.reset(); 2677 2678 // Reset validation 2679 jQuery("#ebooks_details_inquiry").validate().resetForm(); 2680 2681 // Clear hidden recaptcha 2682 jQuery("#ebook_hiddenRecaptcha").val(""); 2683 2684 // Reset reCAPTCHA 2685 if (typeof grecaptcha !== "undefined") { 2686 grecaptcha.reset(eBook_form); 2687 } 2688 2689 // Hide loader 2690 jQuery(".loader").hide(); 2691 2692 // Redirect after 3 seconds 2693 setTimeout(function () { 2694 window.location.href = "/ebooks"; // update URL if needed 2695 }, 3000); 2696 2697 } else { 2698 2699 var errors = response.data; 2700 2701 for (var field in errors) { 2702 jQuery("#" + field) 2703 .closest(".form-group") 2704 .find(".error-message") 2705 .html(errors[field]); 2706 } 2707 } 2708 }, 2709 error: function (xhr) { 2710 console.log("AJAX Error:", xhr.responseText); 2711 }, 2712 2713 complete: function () { 2714 jQuery(".loader").hide(); 2715 } 2716 }); 2717 } 2718 });
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.