PageSourceSearch

https://royalturkish.com/js/price-notice-2027.js?v=2

js royalturkish.com collected 2026-10-08 09:05:50 UTC 11,624 bytes, 69 lines download raw bytes

1/* 05.10.2026 — "2027 kursları için 31 Aralık 2026'ya kadar 2026 fiyatları" duyurusu.
2   Kural (kullanıcı, 22.09.2026): 2027 tarihli kayıtlar 31.12.2026'ya kadar 2026 fiyatıyla alınır.
3   1 Ocak 2027 00:00 (İstanbul) itibarıyla hiçbir şey göstermez — elle kaldırmaya gerek yok.
4   Kullanım: <script src="/js/price-notice-2027.js?v=1" data-mode="prices|bu|home" defer></script>
5   Sihirbaz: window.RTS_PRICE_2027.wizardNote(lang, startDate) → HTML ya da '' */
6(function () {
7    var END = Date.parse('2027-01-01T00:00:00+03:00');
8    var active = function () { return Date.now() < END; };
9    // 2026 → 2027 (tablo fiyatları; 2027'de kısa süreler kademeli — 1 hafta örneği)
10    var T = {
11        en: { title: '2027 courses at 2026 prices until 31 December', body: 'Our prices change on 1 January 2027. If you book a course that starts in 2027 by 31 December 2026, the current 2026 price applies.', ex: 'For example, one week:', int: 'Intensive course', std: 'Standard course', bu: 'Bildungsurlaub', now: 'now', from: 'from 2027', week: 'per week', home: 'Planning for 2027? Book by 31 December and the 2026 price applies.', more: 'See prices', wiz: 'Your 2027 course is booked at the 2026 price. This applies to bookings made by 31 December 2026.' },
12        tr: { title: '31 Aralık’a kadar 2027 kursları 2026 fiyatlarıyla', body: 'Fiyatlarımız 1 Ocak 2027’de değişiyor. 2027’de başlayacak bir kursa 31 Aralık 2026’ya kadar kayıt olursanız güncel 2026 fiyatı geçerlidir.', ex: 'Örneğin bir hafta:', int: 'Yoğun kurs', std: 'Standart kurs', bu: 'Bildungsurlaub', now: 'şimdi', from: '2027’den itibaren', week: 'haftalık', home: '2027’yi mi planlıyorsunuz? 31 Aralık’a kadar kayıt olun, 2026 fiyatı geçerli olsun.', more: 'Fiyatları görün', wiz: '2027 kursunuz 2026 fiyatıyla alınıyor. Bu fiyat 31 Aralık 2026’ya kadar yapılan kayıtlar için geçerlidir.' },
13        de: { title: '2027er Kurse zu 2026er Preisen bis 31. Dezember', body: 'Unsere Preise ändern sich am 1. Januar 2027. Wenn Sie einen Kurs mit Beginn 2027 bis zum 31. Dezember 2026 buchen, gilt der aktuelle Preis von 2026.', ex: 'Zum Beispiel eine Woche:', int: 'Intensivkurs', std: 'Standardkurs', bu: 'Bildungsurlaub', now: 'jetzt', from: 'ab 2027', week: 'pro Woche', home: 'Sie planen 2027? Bis 31. Dezember buchen, es gilt der Preis von 2026.', more: 'Preise ansehen', wiz: 'Ihr Kurs 2027 wird zum Preis von 2026 gebucht. Dies gilt für Buchungen bis zum 31. Dezember 2026.' },
14        es: { title: 'Cursos de 2027 a precios de 2026 hasta el 31 de diciembre', body: 'Nuestros precios cambian el 1 de enero de 2027. Si reservas un curso que empieza en 2027 antes del 31 de diciembre de 2026, se aplica el precio actual de 2026.', ex: 'Por ejemplo, una semana:', int: 'Curso intensivo', std: 'Curso estándar', bu: 'Bildungsurlaub', now: 'ahora', from: 'desde 2027', week: 'por semana', home: '¿Planeas 2027? Reserva antes del 31 de diciembre y se aplica el precio de 2026.', more: 'Ver precios', wiz: 'Tu curso de 2027 se reserva al precio de 2026. Válido para reservas hechas hasta el 31 de diciembre de 2026.' },
15        fr: { title: 'Cours 2027 aux tarifs 2026 jusqu’au 31 décembre', body: 'Nos tarifs changent le 1er janvier 2027. Si vous réservez un cours qui commence en 2027 d’ici le 31 décembre 2026, le tarif actuel de 2026 s’applique.', ex: 'Par exemple, une semaine :', int: 'Cours intensif', std: 'Cours standard', bu: 'Bildungsurlaub', now: 'aujourd’hui', from: 'à partir de 2027', week: 'par semaine', home: 'Vous préparez 2027 ? Réservez d’ici le 31 décembre et le tarif 2026 s’applique.', more: 'Voir les tarifs', wiz: 'Votre cours 2027 est réservé au tarif 2026. Valable pour les réservations faites jusqu’au 31 décembre 2026.' },
16        it: { title: 'Corsi 2027 ai prezzi 2026 fino al 31 dicembre', body: 'I nostri prezzi cambiano il 1° gennaio 2027. Se prenoti un corso che inizia nel 2027 entro il 31 dicembre 2026, si applica il prezzo attuale del 2026.', ex: 'Per esempio, una settimana:', int: 'Corso intensivo', std: 'Corso standard', bu: 'Bildungsurlaub', now: 'ora', from: 'dal 2027', week: 'a settimana', home: 'Stai pianificando il 2027? Prenota entro il 31 dicembre e si applica il prezzo 2026.', more: 'Vedi i prezzi', wiz: 'Il tuo corso 2027 è prenotato al prezzo 2026. Valido per le prenotazioni fatte entro il 31 dicembre 2026.' },
17        ru: { title: 'Курсы 2027 года по ценам 2026 года до 31 декабря', body: 'Наши цены меняются 1 января 2027 года. Если вы забронируете курс с началом в 2027 году до 31 декабря 2026 Ð
17³Ð¾Ð´Ð°, действует текущая цена 2026 года.', ex: 'Например, одна неделя:', int: 'Интенсивный курс', std: 'Стандартный курс', bu: 'Bildungsurlaub', now: 'сейчас', from: 'с 2027', week: 'в неделю', home: 'Планируете 2027 год? Забронируйте до 31 декабря, и действует цена 2026 года.', more: 'Посмотреть цены', wiz: 'Ваш курс 2027 года бронируется по цене 2026 года. Действует для бронирований до 31 декабря 2026 года.' },
18        ar: { title: 'دورات 2027 بأسعار 2026 حتى 31 ديسمبر', body: 'تتغير أسعارنا في 1 يناير 2027. إذا حجزت دورة تبدأ في 2027 حتى 31 ديسمبر 2026، يُطبَّق سعر 2026 الحالي.', ex: 'على سبيل المثال، أسبوع واحد:', int: 'الدورة المكثفة', std: 'الدورة العادية', bu: 'Bildungsurlaub', now: 'الآن', from: 'من 2027', week: 'أسبوعيًا', home: 'تخطط لعام 2027؟ احجز حتى 31 ديسمبر ويُطبَّق سعر 2026.', more: 'اطّلع على الأسعار', wiz: 'تُحجز دورتك لعام 2027 بسعر 2026. ينطبق ذلك على الحجوزات حتى 31 ديسمبر 2026.' },
19        ja: { title: '12月31日まで、2027年のコースを2026年料金で', body: '料金は2027年1月1日に改定されます。2027年開始のコースを2026年12月31日までにお申し込みいただくと、現在の2026年料金が適用されます。', ex: '例:1週間の場合', int: '集中コース', std: 'スタンダードコース', bu: 'Bildungsurlaub', now: '現在', from: '2027年以降', week: '1週間', home: '2027年のご予定は?12月31日までのお申し込みで2026年料金が適用されます。', more: '料金を見る', wiz: '2027年のコースは2026年料金でのお申し込みとなります。2026年12月31日までのお申し込みに適用されます。' },
20        zh: { title: '12月31日前预订,2027年课程享2026年价格', body: '我们的价格将于2027年1月1日调整。在2026年12月31日前预订2027年开课的课程,适用当前的2026年价格。', ex: '例如一周:', int: '强化课程', std: '标准课程', bu: 'Bildungsurlaub', now: '现价', from: '2027年起', week: '每周', home: '计划2027年学习?12月31日前预订即享2026年价格。', more: '查看价格', wiz: '你的2027年课程按2026年价格预订,适用于2026年12月31日前的预订。' },
21    };
22    var PRICE_PAGE = { en: '/prices.html', tr: '/tr/fiyatlar.html', de: '/de/preise.html', es: '/es/precios.html', fr: '/fr/prix.html', it: '/it/prezzi.html', ru: '/ru/tseny.html', ar: '/ar/al-asaar.html', ja: '/ja/ryokin.html', zh: '/zh/jiage.html' };
23    function L(lang) { var l = String(lang || document.documentElement.lang || 'en').slice(0, 2).toLowerCase(); return T[l] ? l : 'en'; }
24    function box(inner) {
25        var d = document.createElement('div');
26        d.className = 'rts-p27';
27        d.setAttribute('role', 'note');
28        d.style.cssText = 'max-width:880px;margin:0 auto 28px;background:#fff;border:1px solid #e3e8ef;border-inline-start:4px solid #0F1B2D;border-radius:12px;padding:18px 22px;text-align:start;box-shadow:0 4px 16px rgba(15,27,45,.05);font-family:inherit;';
29        d.innerHTML = inner;
30        return d;
31    }
32    function row(name, a, b, t) {
33        return '<div style="display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid #f1f5f9;font-size:14px;"><span style="color:#334155;">' + name + '</span><span style="white-space:nowrap;font-variant-numeric:tabular-nums;"><b style="color:#0F1B2D;">€' + a + '</b> <span style="color:#64748b;">' + t.now + '</span> · <span style="color:#64748b;">€' + b + ' ' + t.from + '</span></span></div>';
34    }
35    function prices(t) {
36        return '<div style="font-weight:800;color:#0F1B2D;font-size:17px;margin-bottom:6px;">' + t.title + '</div>'
37            + '<p style="color:#475569;font-size:14.5px;line-height:1.6;margin:0 0 10px;">' + t.body + '</p>'
38            + '<div style="font-size:13px;font-weight:700;color:#64748b;margin-bottom:2px;">' + t.ex + '</div>'
39            + row(t.int, 200, 230, t) + row(t.std, 150, 175, t) + row(t.bu + ' (' + t.week + ')', 400, 450, t);
40    }
41    function bu(t) {
42        return '<div style="font-weight:800;color:#0F1B2D;font-size:17px;margin-bottom:6px;">' + t.title + '</div>'
43            + '<p style="color:#475569;font-size:14.5px;line-height:1.6;margin:0 0 10px;">' + t.body + '</p>'
44            + row(t.bu + ' · 30 UStd (' + t.week + ')', 400, 450, t) + row(t.bu + ' · 40 UStd, NDS/HE (' + t.week + ')', 535, 600, t);
45    }
46    function home(t, l) {
47        return '<div style="display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;"><span style="color:#0F1B2D;font-weight:700;font-size:15px;">' + t.home + '</span>'
48            + '<a href="' + (PRICE_PAGE[l] || '/prices.html') + '" style="color:#E31E24;font-weight:700;text-decoration:none;white-space:nowrap;">' + t.more + ' →</a></div>';
49    }
50    function mount() {
51        if (!active()) return;
52        var s = document.currentScript || document.querySelector('script[src*="price-notice-2027"]');
53        var mode = s && s.getAttribute('data-mode');
54        var l = L(), t = T[l], el, ref;
55        if (document.querySelector('.rts-p27')) return;
56        if (mode === 'prices' && (ref = document.querySelector('.prices-grid'))) { el = box(prices(t)); ref.parentNode.insertBefore(el, ref); }
57        else if (mode === 'bu' && (ref = document.querySelector('.bu-hero'))) { el = box(bu(t)); el.style.margin = '28px auto 92px'; /* alttaki .state-table-card -60px ile yukarı biniyor */ ref.insertAdjacentElement('afterend', el); }
58        else if (mode === 'home' && (ref = document.querySelector('section.hero'))) { el = box(home(t, l)); el.style.margin = '24px auto'; el.style.maxWidth = '1100px'; var w = document.createElement('div'); w.style.cssText = 'padding:0 16px 40px;'; /* alttaki Eda kartı -36px ile yukarı biniyor */ w.appendChild(el); ref.insertAdjacentElement('afterend', w); }
59    }
60    window.RTS_PRICE_2027 = {
61        active: active,
62        wizardNote: function (lang, startDate) {
63            if (!active() || !/^2027-/.test(String(startDate || ''))) return '';
64            var t = T[L(lang)];
65            return '<div class="rts-p27-wiz" style="margin-top:8px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;border-radius:10px;padding:8px 12px;font-size:12.5px;font-weight:600;line-height:1.45;">
65' + t.wiz + '</div>';
66        },
67    };
68    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', mount); else mount();
69})();

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.