PageSourceSearch

https://www.d-teknoloji.com.tr/assets/js/contact.js?v=3kicqxq47ELz5J8oYNReALyAtxOsds5UfMI131kBRkI

js d-teknoloji.com.tr collected 2026-10-03 21:01:38 UTC 22,529 bytes, 617 lines download raw bytes

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.