1$(function () { 2 $.validator.addMethod("lettersOnly", function (value, element) { 3 return this.optional(element) || /^[a-zA-ZÄüÅıöçÄÃÅİÃÃ\s]+$/.test(value); 4 }); 5 6 $.validator.addMethod("noWhitespace", function (value, element) { 7 return this.optional(element) || $.trim(value).length !== 0; 8 }); 9 10 $.validator.addMethod("customEmailExtension", function (value, element) { 11 const blockedDomains = [ 12 'gmail.com', 'hotmail.com', 'icloud.com', 13 'yahoo.com', 'outlook.com', 'yandex.com', 14 'zoho.com', 'aol.com', 'gmx.com', 'mail.com', 15 'email.com', 'shortmail.com', 'hushmail.com', 'mynet.com' 16 ]; 17 let emailDomain = value.split('@')[1]?.toLowerCase(); 18 return this.optional(element) || !blockedDomains.includes(emailDomain); 19 }); 20 21 $.validator.addMethod("startsWith0", function (value, element) { 22 return this.optional(element) || /^0/.test(value); 23 }); 24 25 $.validator.addMethod("startsWith0Turkey", function (value, element) { 26 let turkeyFlagTitle = $(".iti__selected-flag").attr("title"); 27 if (turkeyFlagTitle.includes("Turkey")) { 28 return /^0/.test(value); 29 } 30 return true; 31 }); 32 33 const currentLanguage = $('#currentLanguage').val() || 'tr'; 34 35 const validationMessagesTR = { 36 fullname: { 37 required: "Lütfen, Ad ve Soyad giriniz.", 38 lettersOnly: "Lütfen sadece harf giriniz.", 39 noWhitespace: "Ad Soyad alanı boÅluk içeremez.", 40 minlength: "Minimum 2 karakterden fazla olmalı." 41 }, 42 name: { 43 required: "Lütfen, Adınızı giriniz.", 44 lettersOnly: "Lütfen sadece harf giriniz.", 45 noWhitespace: "Ad alanı boÅluk içeremez.", 46 minlength: "Minimum 2 karakterden fazla olmalı." 47 }, 48 surname: { 49 required: "Lütfen, Soyadınızı giriniz.", 50 lettersOnly: "Lütfen sadece harf giriniz.", 51 noWhitespace: "Soyad alanı boÅluk içeremez.", 52 minlength: "Minimum 2 karakterden fazla olmalı" 53 }, 54 corporateMail: { 55 required: "Lütfen, Email adresinizi giriniz.", 56 email: "Lütfen, Geçerli bir Email adresi giriniz.", 57 customEmailExtension: "Lütfen, bir İŠmail adresinizi kullanarak iletiÅim kurunuz." 58 }, 59 email: { 60 required: "Lütfen, Email adresinizi giriniz.", 61 email: "Lütfen, Geçerli bir Email adresi giriniz.", 62 customEmailExtension: "Lütfen, bir İŠmail adresinizi kullanarak iletiÅim kurunuz." 63 }, 64 phone: { 65 required: "Lütfen, Telefon numaranızı giriniz.", 66 startsWith0Turkey: "Lütfen, '0' ile baÅlayan bir Telefon numarası giriniz.", 67 minlength: $.validator.format("Telefon numarası {0} karakter uzunluÄunda olmalıdır.") 68 }, 69 company: "Lütfen, Åirket Adı giriniz.", 70 credential: "Lütfen, Ãnvan giriniz.", 71 topic: "Lütfen, Konu baÅlıÄı seçiniz.", 72 message: { 73 required: "Lütfen, Mesajınızı giriniz.", 74 minlength: "Mesajınız, minimum 10 karakterden fazla olmalı." 75 }, 76 explicitConsent: "CRM onayı vermeniz gereklidir.", 77 }; 78 79 const validationMessagesEN = { 80 fullname: { 81 required: "Please enter your FullName.", 82 lettersOnly: "Please enter only letters.", 83 noWhitespace: "FullName field cannot contain spaces.", 84 minlength: "Must be more than 2 characters." 85 }, 86 name: { 87 required: "Please enter your Name.", 88 lettersOnly: "Please enter only letters.", 89 noWhitespace: "Name field cannot contain spaces.", 90 minlength: "Must be more than 2 characters." 91 }, 92 surname: { 93 required: "Please enter your Surname.", 94 lettersOnly: "Please enter only letters.", 95 noWhitespace: "Surname field cannot contain spaces.", 96 minlength: "Must be more than 2 characters." 97 }, 98 corporateMail: { 99 required: "Please enter your Email address.", 100 email: "Please enter a valid Email address.", 101 customEmailExtension: "Please use a Business email address to contact." 102 }, 103 email: { 104 required: "Please enter your Email address.", 105 email: "Please enter a valid Email address.", 106 customEmailExtension: "Please use a Business email address to contact." 107 }, 108 phone: { 109 required: "Please enter your Phone number.", 110 startsWith0Turkey: "Please enter a Phone number starting with '0'.", 111 minlength: $.validator.format("The phone number must be {0} characters long.") 112 }, 113 company: "Please enter Company Name.", 114 credential: "Please enter Title.", 115 topic: "Please select a Subject.", 116 message: { 117 required: "Please enter your Message.", 118 minlength: "Your message must be more than 10 characters." 119 }, 120 explicitConsent: "You must provide CRM consent." 121 }; 122 123 $('#contact').validate({ 124 rules: { 125 fullname: { 126 required: true,
127 lettersOnly: true, 128 noWhitespace: true, 129 minlength: 2 130 }, 131 name: { 132 required: true, 133 lettersOnly: true, 134 noWhitespace: true, 135 minlength: 2 136 }, 137 surname: { 138 required: true, 139 lettersOnly: true, 140 noWhitespace: true, 141 minlength: 2 142 }, 143 corporateMail: { 144 required: true, 145 email: true, 146 customEmailExtension: true 147 }, 148 email: { 149 required: true, 150 email: true, 151 customEmailExtension: true 152 }, 153 phone: { 154 required: true, 155 startsWith0Turkey: true, 156 minlength: function (element) { 157 var inputVal = $("#inputPhone").attr('placeholder') 158 return inputVal.length; 159 } 160 }, 161 company: { 162 required: true 163 }, 164 credential: { 165 required: true 166 }, 167 topic: { 168 required: true 169 }, 170 message: { 171 required: true, 172 minlength: 10 173 }, 174 }, 175 messages: currentLanguage === 'en' ? validationMessagesEN : validationMessagesTR, 176 submitHandler: function (form) { 177 // 0: general page footer form 178 // 1: contact page footer form 179 const getFormType = parseInt($(".footer-btn button").attr("data-type")); 180 181 switch (getFormType) { 182 case 0: 183 executeRecaptcha("footer_submit", function (token) { 184 GeneralFooterSubmitForm(token); 185 }); 186 break; 187 case 1: 188 executeRecaptcha("contact_submit", function (token) { 189 ContactFooterSubmitForm(token); 190 }); 191 break; 192 case 2: 193 executeRecaptcha("roundtable_submit", function (token) { 194 RoundtableFormSubmit(token); 195 }); 196 break; 197 default: 198 } 199 } 200 }); 201 202 $('#newsletter').validate({ 203 rules: { 204 fullname: { 205 required: true, 206 lettersOnly: true, 207 noWhitespace: true, 208 minlength: 2 209 }, 210 email: { 211 required: true, 212 email: true 213 }, 214 explicitConsent: { 215 required: true 216 } 217 }, 218 messages: currentLanguage === 'en' ? validationMessagesEN : validationMessagesTR, 219 errorPlacement: function (error, element) { 220 if (element.attr("type") === "checkbox") { 221 error.insertAfter(element.closest(".custom-control")); 222 } else { 223 error.insertAfter(element); 224 } 225 }, 226 submitHandler: function () { 227 executeRecaptcha("newsletter_submit", function (token) { 228 NewsletterSubmitForm(token); 229 }); 230 } 231 }); 232 233 $('#adsForm').validate({ 234 rules: { 235 fullname: { 236 required: true, 237 lettersOnly: true, 238 noWhitespace: true, 239 minlength: 2 240 }, 241 email: { 242 required: true, 243 email: true 244 }, 245 explicitConsent: { 246 required: true 247 }, 248 phone: { 249 required: true, 250 startsWith0: true, 251 minlength: function (element) { 252 return $(element).attr('placeholder').length; 253 } 254 } 255 }, 256 messages: currentLanguage === "en" ? validationMessagesEN : validationMessagesTR, 257 errorPlacement: function (error, element) { 258 if (element.attr("type") === "checkbox") { 259 error.insertAfter(element.closest(".custom-control")); 260 } else { 261 error.insertAfter(element); 262 } 263 }, 264 submitHandler: function (form) { 265 adsFormSubmit(); 266 } 267 });
268 269 function showSuccessAlert() { 270 if (currentLanguage === "en") { 271 window.location.href = "/en/form-success"; 272 } else { 273 window.location.href = "/tr/form-success"; 274 } 275 } 276 277 function showDefaultErrorAlert() { 278 if (currentLanguage === 'en') { 279 showSweetAlert('error', 'Error!', 'Error occurred. Please try again later.', 'OK', true); 280 } else { 281 showSweetAlert('error', 'Hata!', 'Hata oluÅtu, lütfen daha sonra tekrar deneyiniz!', 'Tamam', true); 282 } 283 } 284 285 function executeRecaptcha(action, callback) { 286 const siteKey = document.getElementById("captchaSiteKey").value; 287 grecaptcha.ready(function () { 288 grecaptcha.execute(siteKey, { action: action }).then(function (token) { 289 callback(token); 290 }); 291 }); 292 } 293 294 function GeneralFooterSubmitForm(captchaToken) { 295 296 let postData = { 297 firstName: $("#inputName").val(), 298 lastName: $("#inputSurname").val(), 299 email: $("#inputEmail").val(), 300 phone: $("#inputPhone").val(), 301 subject: $("#inputTopicTitle option:selected").val(), 302 company: $("#inputFooterCompany").val(), 303 title: $("#inputCredential").val(), 304 message: $("#inputMessage").val(), 305 termOfCrm: $("#explicitConsent").is(":checked"), 306 termOfKvkk: $("#privacyPolicy").is(":checked"), 307 captchaToken: captchaToken, 308 currentPageHidden: $("#currentPageHidden").val() 309 } 310 311 $.ajax({
312 type: "POST", 313 url: "/Contact/FooterForm", 314 data: AddAntiForgeryToken(postData, "contact"), 315 beforeSend: function () { 316 $('#footerFormLoading').removeClass('hidden'); 317 }, 318 success: function (response) { 319 setTimeout(function () { 320 $('#footerFormLoading').addClass('hidden'); 321 if (response.success) { 322 showSuccessAlert(); 323 } else { 324 showDefaultErrorAlert(); 325 } 326 }, 1000); 327 }, 328 error: function (e) { 329 showDefaultErrorAlert(); 330 }, 331 complete: function () { 332 setTimeout(function () { 333 $('#footerFormLoading').addClass('hidden'); 334 }, 1000); 335 } 336 }); 337 } 338 339 function ContactFooterSubmitForm(captchaToken) { 340 341 const postData = { 342 fullName: $("#fullName").val(), 343 email: $("#inputEmail").val(), 344 phone: $("#inputPhone").val(), 345 subject: $("#inputTopicTitle option:selected").val(), 346 message: $("#inputMessage").val(), 347 termOfCrm: $("#explicitConsent").is(":checked"), 348 termOfKvkk: $("#privacyPolicy").is(":checked"), 349 captchaToken: captchaToken 350 } 351 352 $.ajax({
353 type: "POST", 354 url: "/Contact/ContactPageForm", 355 data: AddAntiForgeryToken(postData, "contact"), 356 beforeSend: function () { 357 $('#footerFormLoading').removeClass('hidden'); 358 }, 359 success: function (response) { 360 if (response.success) { 361 showSuccessAlert(); 362 } else { 363 setTimeout(function () { 364 $('#footerFormLoading').addClass('hidden'); 365 showDefaultErrorAlert(); 366 }, 1000); 367 } 368 }, 369 error: function (e) { 370 showDefaultErrorAlert(); 371 }, 372 complete: function () { 373 setTimeout(function () { 374 $('#footerFormLoading').addClass('hidden'); 375 }, 1000); 376 } 377 }); 378 } 379 380 function NewsletterSubmitForm(captchaToken) { 381 const postData = { 382 fullName: $("#newsletterFullName").val(), 383 email: $("#newsletterEmail").val(), 384 subject: "Bülten AboneliÄi", 385 termOfCrm: $("#newsletterExplicitConsent").is(":checked"), 386 termOfKvkk: $("#newsletterPrivacyPolicy").is(":checked"), 387 captchaToken: captchaToken 388 }; 389 390 $.ajax({
391 type: "POST", 392 url: "/Contact/SubscribeForm", 393 data: AddAntiForgeryToken(postData, "newsletter"), 394 beforeSend: function () { 395 $('#footerFormLoading').removeClass('hidden'); 396 }, 397 success: function (response) { 398 setTimeout(function () { 399 $('#footerFormLoading').addClass('hidden'); 400 if (response.success) { 401 if (currentLanguage === 'en') { 402 showSweetAlert('success', 'Successful!', 'Your form has been submitted successfully.', 'OK', true); 403 } else { 404 showSweetAlert('success', 'BaÅarılı!', 'Formunuz baÅarıyla gönderildi.', 'Tamam', true); 405 } 406 clearInput('newsletter'); 407 } else { 408 showDefaultErrorAlert(); 409 } 410 }, 1000); 411 }, 412 error: function () { 413 showDefaultErrorAlert(); 414 }, 415 complete: function () { 416 setTimeout(function () { 417 $('#footerFormLoading').addClass('hidden'); 418 }, 1000); 419 } 420 }); 421 } 422 423 function RoundtableFormSubmit(captchaToken) { 424 let postData = { 425 subject: $("#inputTopicTitle option:selected").val(), 426 firstName: $("#inputName").val(), 427 lastName: $("#inputSurname").val(), 428 email: $("#inputEmail").val(), 429 phone: $("#inputPhone").val(), 430 company: $("#inputFooterCompany").val(), 431 title: $("#inputCredential").val(), 432 termOfCrm: $("#explicitConsent").is(":checked"), 433 termOfKvkk: $("#privacyPolicy").is(":checked") 434 }; 435 436 $.ajax({
437 type: "POST", 438 url: "/Contact/RoundtableForm", 439 data: AddAntiForgeryToken(postData, "contact"), // CSRF token koruması 440 beforeSend: function () { 441 $('#footerFormLoading').removeClass('hidden'); 442 }, 443 success: function (response) { 444 $('#footerFormLoading').addClass('hidden'); 445 if (response.success) { 446 showSuccessAlert(); 447 } else { 448 showDefaultErrorAlert(); 449 } 450 }, 451 error: function (e) { 452 showDefaultErrorAlert(); 453 }, 454 complete: function () { 455 $('#footerFormLoading').addClass('hidden'); 456 } 457 }); 458 } 459 460 function adsFormSubmit() { 461 const data = { 462 Solutions: selectedSolutions.join(','), 463 FullName: $("#inputName").val(), 464 Email: $("#inputEmail").val(), 465 Phone: $("#adsFormPhone").val(), 466 TermOfCrm: $("#formCheck1").is(":checked"), 467 TermOfKvkk: $("#formCheck2").is(":checked"), 468 }; 469 470 $.ajax({
471 url: '/Contact/AdsForm', 472 type: 'POST', 473 data: data, 474 beforeSend: function () { 475 $('#footerFormLoading').removeClass('hidden'); 476 }, 477 success: function (result) { 478 const successPath = $("#adsFormSuccessPath").val(); 479 const currentPath = window.location.pathname; 480 const newPath = currentPath.endsWith('/') 481 ? currentPath + successPath 482 : currentPath + `/${successPath}`; 483 window.location.href = newPath; 484 }, 485 error: function () { 486 showDefaultErrorAlert(); 487 }, 488 complete: function () { 489 $('#footerFormLoading').addClass('hidden'); 490 } 491 }); 492 } 493 494 let selectedSolutions = []; 495 496 // #region Checkbox stil ve seçim iÅlemleri 497 $(".lead-form__content .checkbox-item").on("click", function (e) { 498 e.preventDefault(); 499 const checkbox = $(this).find('input[type="checkbox"]'); 500 checkbox.prop('checked', !checkbox.prop('checked')); 501 $(this).toggleClass("checked", checkbox.is(':checked')); 502 }); 503 504 $('#btnAdsFormProgress').on("click", function () { 505 selectedSolutions = []; 506 $('input[name="solution"]:checked').each(function () { 507 selectedSolutions.push($(this).val()); 508 }); 509 510 if (selectedSolutions.length > 0) { 511 $(this).parent().remove(); 512 $(".lead-form__content .step-second").show(); 513 } else { 514 return false; // seçilmemiÅse geçiÅ yapma 515 } 516 }); 517 518 // Contact Page International Input Telephone Number 519 function initMasking(formatterInput, maskedInput) { 520 let format = $(formatterInput).attr('placeholder'); 521 $(maskedInput).attr('placeholder', format); 522 $(maskedInput).mask(format?.replace(/[1-9]/g, 0)); 523 } 524 525 // initialize intl-tel-input 526 $("#inputPhone1").intlTelInput({ 527 initialCountry: "tr", 528 autoPlaceholder: "polite", 529 placeholderNumberType: 'MOBILE', 530 preferredcountries: ['tr', 'us', 'gb', 'fr', 'de'], 531 separatedialcode: true, 532 }); 533 534 if ($("#inputPhone1").length > 0) { 535 initMasking("#inputPhone1", "#inputPhone"); 536 } 537 538 $("#inputPhone1").on("countrychange", function (e, countryData) { 539 $(this).val(''); 540 $("#inputPhone").val(''); 541 initMasking(this, "#inputPhone"); 542 }); 543 544 $("#inputPhone").keyup(function () { 545 let input1 = document.getElementById('inputPhone'); 546 let input2 = document.getElementById('inputPhone1'); 547 input2.value = input1.value; 548 }); 549 550 let currentPageHiddenInput = document.getElementById("currentPageHidden"); 551 if (currentPageHiddenInput) { 552 currentPageHiddenInput.value = window.location.pathname; 553 } 554 555 $("body").delegate('.iti__country', "click", function (e) { 556 $("#inputPhone-error").hide(); 557 let selectedCountry = $(this).parents(".iti__flag-container").find(".iti__selected-flag").attr("title"); 558 559 const valMessagesPhoneTR = { 560 inputPhone: { 561 startsWith0Turkey: "Lütfen, '0' ile baÅlayan bir Telefon numarası giriniz.", 562 } 563 }; 564 565 const valMessagesPhoneEN = { 566 inputPhone: { 567 startsWith0Turkey: "Please enter a Phone number starting with '0'.", 568 } 569 }; 570 571 if (selectedCountry.includes("Turkey")) { 572 $("#inputPhone").rules("add", { 573 startsWith0Turkey: true, 574 messages: currentLanguage === 'en' ? valMessagesPhoneEN : valMessagesPhoneTR 575 }); 576 } else { 577 $("#inputPhone").rules("remove", "startsWith0Turkey"); 578 } 579 }); 580}); 581 582function AddAntiForgeryToken(data, formId) { 583 data.__RequestVerificationToken = $('#' + formId + ' input[name=__RequestVerificationToken]').val(); 584 return data; 585} 586 587function clearInput(formId) { 588 const form = document.getElementById(formId); 589 590 const inputs = form.querySelectorAll('.form-control');
591 inputs.forEach(input => { 592 input.value = ''; 593 }); 594 595 const selects = form.querySelectorAll('select'); 596 selects.forEach(select => { 597 select.selectedIndex = 0; 598 }); 599} 600 601function showSweetAlert(icon, title, text, confirmButtonText, showConfirmButton) { 602 Swal.fire({ 603 icon: icon, 604 title: title, 605 text: text, 606 confirmButtonText: confirmButtonText, 607 showConfirmButton: showConfirmButton, 608 allowOutsideClick: false, 609 buttonsStyling: false, 610 customClass: { 611 title: 'custom-swal-title', 612 htmlContainer: 'custom-swal-text', 613 confirmButton: 'swal2-confirm btn btn-primary custom-swal-button' 614 } 615 }); 616} 617
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.