Galaxy S24 Ultra
- المواصفات
- الدعم
- اشتر الآن
- الأساسيات
- المقارنة
- الملحقات
- المواصفات
- الدعم
- اشتر الآن
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (1) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (1)](https://i0.wp.com/images.samsung.com/eg/smartphones/galaxy-s24-ultra/images/galaxy-s24-ultra-highlights-kv-ai-text-a.jpg?imbypass=true)
اشترِ الآن احجز الآن اشترِ الآن منافذ البيع
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (2) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (2)](https://i0.wp.com/images.samsung.com/eg/smartphones/galaxy-s24-ultra/images/galaxy-s24-ultra-highlights-kv.jpg?imbypass=true)
هاتف Galaxy AI بين يديك
مرحباً بك في عصر الذكاء الاصطناعي، مع هاتف GalaxyS24Ultra، الذي سيتيح لك اكتشاف مستويات جديدة من الإبداع، والإنتاجية والإمكانات اللانهائية - ابتداءً من أهم جهاز في حياتك. هاتفك الذكي.
مبهر، بكل بساطة
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (3) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (3)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
توجد صفحة مدونة مفتوحة في تطبيق متصفح الويب. تظهر نافذة Google متراكبةً فوق التطبيق. يُستخدم قلم SPen لرسم دائرة حول نص في صفحة المدونة: بطاطس تورنيدو. تظهر نتائج البحث عن “بطاطس تورنيدو” في نافذة منبثقة فوق التطبيق. يُستخدم قلم SPen لسحب النتائج لأعلى إلى شاشة كاملة من نتائج بحث Google.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (4) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (4)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
مكالمة هاتفية تم ترجمتها لحظة بلحظة. يتم عرض المحادثة على الشاشة على شكل حوار نصي بلغتين.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (5) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (5)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
في تطبيق Interpreter، تتم كتابة محادثة بلغتين وترجمتها في الوقت الفعلي.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (6) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (6)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم تظليل فقرة نصية طويلة في ملاحظة. يتم إنشاء موجز مبسط للمحتوى عبر بضع ضغطات.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (7) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (7)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر صورة قيد التعديل في تطبيق Gallery. يتم اختيار أحد العناصر ونقله إلى موقع آخر في الصورة. بعد ذلك يتم ملء المناطق الفارغة.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (8) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (8)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر محادثة نصية بلغة أجنبية. وتظهر فقاعة منبثقة تحمل العبارة، "اضغط للترجمة." عند الضغط على هذه الفقاعة، تتحول إلى شريط به قائمة منسدلة تتضمن لغة الإدخال والإخراج. تعرض كل رسالة على شكل فقاعة الآن كلاً من الرسالة الأصلية وترجمتها.
Circle to Search
الانتقال السريع إلى "Circle to Search"
الترجمة المباشرة
الانتقال إلى الترجمة المباشرة
Interpreter
انتقل إلى Interpreter
مساعد التدوين
الانتقال إلى مساعد التدوين
مساعد التصوير
الانتقال إلى مساعد التصوير
مساعد الدردشة
الانتقال السريع إلى Chat Assist
-
Circle to Search
-
ترجمة مباشرة
-
Interpreter
-
مساعد التدوين
-
مساعد التصوير
-
مساعد الدردشة
خاصية Try Galaxy على هاتفك امسح رمز QR code ضوئيّاً أو تفضل بزيارة موقع trygalaxy.com
الكاميرا
"مصممة للذين يريدون أفضل اللقطات الليلية أو تعديل الصور باستخدام الذكاء الاصطناعي AI"
موصى به من Forbes
Galaxy AI
"عصر جديد من الهواتف الذكية المعززة بالذكاء الاصطناعي AI"
GQ
Galaxy AI
"تقنية Galaxy AI هي مستقبل الهواتف"
عكسي
انسيابي، متين، مذهل.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (10) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (10)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
عرض لقطة جانبية مقربة لهاتف Galaxy S24 Ultra، حيث يمر الضوء فوق واجهة الجهاز، ثم يتم عرض لقطة خلفية مقربة للجهاز مع بروز قلم S Pen في المقدمة.
تعرف على GalaxyS24Ultra ، التصميم الأمثل لأجهزة Galaxy Ultra مع طبقة التيتانيوم الخارجية والشاشة المسطحة بحجم 6.8 بوصة., إنه أعجوبة التصاميم.
حصّنه بالتيتانيوم
حصّنه بالتيتانيوم
تامل ميزة الجهاز الجديد - طبقة متينة من مادة التيتانيوم المثبتة في الإطار. قوة التيتانيوم بين يديك الآن.
مقاومة أفضل للخدوش مع Corning® Gorilla® Armor
تساعد طبقة Corning® Gorilla® Armor في حماية الشاشة من الخدوش ليبقى الجهاز متألقاً في أبهى صورة.
مقاوم للماء والغبار. لا داعي للقلق.
لا تدع الماء يبعدك عنه. فهاتف GalaxyS24Ultra مدعم بتصنيف IP68 لمقاومة الماء والغبار، مما يجعلك جاهزاً لأي مغامرة حتى الخوض في برك مائية وكل شيء.
ألوان جديدة، تصميم معدني أنيق
متوفر فقط عبر Samsung.com
رمادي تيتانيوم أسود تيتانيوم بنفسجي تيتانيوم أصفر تيتانيوم أزرق تيتانيوم أخضر تيتانيوم برتقالي تيتانيوم
ثلاثة هواتف Galaxy S24 Ultra بلون رمادي تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
ثلاثة هواتف Galaxy S24 Ultra بلون أسود تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
ثلاثة هواتف Galaxy S24 Ultra بلون بنفسجي تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
ثلاثة هواتف Galaxy S24 Ultra بلون أصفر تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
ثلاثة هواتف Galaxy S24 Ultra بلون أزرق تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
حصرياً عبر الإنترنت
متوفر فقط عبر Samsung.com
ثلاثة هواتف Galaxy S24 Ultra بلون أخضر تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
حصرياً عبر الإنترنت
متوفر فقط عبر Samsung.com
ثلاثة هواتف Galaxy S24 Ultra بلون برتقالي تيتانيوم. يظهر اثنان منها معاً، أحدهما معروض من الأمام والآخر من الخلف، وبجانبه قلم S Pen، أما الهاتف الثالث فيتم عرضه من الجانب لإظهار حواف الإطار.
حصرياً عبر الإنترنت
متوفر فقط عبر Samsung.com
اكتشف قصة المعدن الملهم
بوحي من جمال عناصر الطبيعة، فإن كل هاتف بلون تيتانيوم معزز بطبقة فائقة النعومة مثل الأحجار الكريمة المصقولة.
كتابة فصل جديد بقلم SPen المثبت
كتابة فصل جديد بقلم SPen المثبت
تاريخ Galaxy Note ما زال حاضراً في أجهزتنا. اكتب، اضغط، وتصفح بدقة، تغار منها أصابعك.
Galaxy AI
معالج NPU الأرقى، والكاميرا الرائدة ، الآن بتقنية الذكاء الاصطناعي
الكاميرا الخلفية
200MP
الكاميرا بزاوية واسعة والتقريب البصري Optical Quality بمعدل مرتين
12MP
كاميرا بزاوية فائقة الاتساع
50MP
التقريب البصري Optical Zoom بمعدل 5 مرات والتقريب البصري Optical Quality Zoom بمعدل 10 مرات
10MP
التقريب البصري Optical Zoom بمعدل 3 مرات
الكاميرا الأمامية
12MP
كاميرا السيلفي
200MP التقط أدق التفاصيل التي تتحدى الطبيعة
200MP. التقط أدق التفاصيل التي تتحدى الطبيعة
بفضل احتواء الهاتف الذكي على أكبر عدد من البكسلات والمعالجة عبر الذكاء الاصطناعي، يضع هاتف GalaxyS24Ultra مفهوماً جديداً لجودة الصورة. والأكثر من ذلك، أن محرك ProVisual يميز الأجسام المصورة - فيحسّن درجة اللون ويحد من التشويش ويبرز التفاصيل.
تصوير GalaxyS24Ultra #withGalaxy
أقوى كاميرا رباعية لتقريب اللقطات البعيدة حتى الآن
لا تدع المسافة البعيدة تؤثر على قراراتك. يمكنك الآن الحصول على لقطات مقربة بمعدل 2 أو 3 أو 5 وحتى 10 مرات تقريب بصري Optical أو Optical Quality ..,, كما تتسم خاصية Tele OIS القوية الجديدة بأنها أوسع من قبل فيتم تثبيت اللقطة وتقليل التشويش.
اضغط لتقريب الصورة
تصوير GalaxyS24Ultra #withGalaxy
تقريب بصري 5x optical zoom، دقة 50MP
حين يلتقي مستشعر الكاميرا ذات الوضوح العالي مع كاميرا اللقطات البعيدة ستحصل على صور فائقة الوضوح حتى عند تقريبها بمعدل 5x zoom. والنتيجة؟ دقة وضوح 50MP للقطة مقربة أكثر نقاءً وتفصيلاً.
تصوير GalaxyS24Ultra #withGalaxy
1x, 5x
ملتقى التقريب 5x zoom مع تصوير بخاصية 8k video
للمرة الأولى على هاتف ذكي من Galaxy، يمكنك تصوير فيديو مذهل بدقة 8k باستخدام خاصية التقريب البصري حتى 5 أضعاف. التقط مشاهد مذهلة باستخدام هذا النجم المتألق في عالم تصوير الفيديو.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (43) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (43)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
في العدسة الخاصة بتطبيق الكاميرا، ترى مشهد شلال الماء المصور بدقة وضوح 8K مع تقريب بمعدل 5x zoom. يظهر المشهد ثابتاً وغنياً بالتفاصيل.
تصوير GalaxyS24Ultra #withGalaxy
مع إنهاء التقريب الرقمي، يبدأ التقريب عبر الذكاء الاصطناعي.
مع إنهاء التقريب الرقمي، يبدأ التقريب عبر الذكاء الاصطناعي.
انتقل من المشهد العام إلى التفاصيل مع خاصية التقريب عبر الذكاء الاصطناعي والتي تستند إلى المعرفة العميقة. كما يمكنك الانتقال من التقريب بمعدل 1x zoom إلى 100x zoom بسلاسة تامة مع إبراز تقنية الذكاء الاصطناعي للتفاصيل في كافة النقاط التي تقع بين الحالتين.,
تصوير GalaxyS24Ultra #withGalaxy
محرك ProVisual يصور أنقى المشاهد الليلية في كل ليلة
محرك ProVisual يصور أنقى المشاهد الليلية في كل ليلة
مع خاصية Space Zoom ستشعر بأنك في قلب المشهد، حتى في الليل. وباستعمال بكسلات أكبر بمعدل 1.6 مرة وتثبيت اللقطة البعيدة Tele OIS، ستبقى الصور والفيديوهات أكثر إشراقاً وثباتاً، مما يجعل اللقطات البعيدة مذهلة في وضوحها.,,
تصوير GalaxyS24Ultra #withGalaxy
الذكاء الاصطناعي يضفي وضوحاً عالياً على الصور الشخصية ذات الإضاءة الخافتة
التقط صوراً بمنتهى الدقة والوضوح طوال اليوم مع مستشعر التقريب الجديد بمعدل 5 مرات والبكسلات الاكبر حجماً. ,, كما أن خريطة اللقطات العميقة AI Stereo مع وضع صورة بورتريه المقرب 5 مرات، تعزز الجودة لتنعم بنتائج مذهلة.
تصوير GalaxyS24Ultra #withGalaxy
مشاهد الفيديو الليلية المقربة بمعدل 5 مرات تظهر بمنتهى الوضوح
مع تحسين إمكانات تصوير المشاهد الليلية المقربة بمعدل 5 مرات، والخاصة بمستشعر التقريب 5 مرات، يمكنك التقاط الصورة بدقة وضوح مذهلة. بفضل خاصية ISP Block المخصصة يمكنك أن تقول وداعاً لمشاهد الفيديو الحبيبية وخافتة الإضاءة ومرحباً بالوضوح المذهل والتشويش الأقل.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (48) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (48)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
لقطة فيديو ليلية لراقصين في استديو خافت الاضاءة، حيث تبدأ اللقطة بمشهد بعيد، يتم تقريبه لاحقاً. تبدو اللقطة في الحالتين نقية، زاهية، وأقل تشويشاً.
تصوير GalaxyS24Ultra #withGalaxy
اضبط حجمها وحسنها بكل بساطة
اضبط حجمها وحسنها بكل بساطة
خلل في اللقطة؟ ما عليك سوى تحريكها في المنشور. خيارات تحرير اللقطة الجديدة المدعمة بالذكاء الاصطناعي، توفر لك الصورة التي تحبها، مثل تحديد موقع الأجسام وملء المساحات بذكاء.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (49) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (49)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر صورة قيد التعديل في تطبيق Gallery. يتم الضغط على زر تعديل ويتم تحديد أحد العناصر. يتم نقله إلى موقع آخر في الصورة. بعد ذلك يتم ملء المناطق الفارغة.
مساعد التصوير
تغيير حجم الصورة وتنقيحها باستخدام مساعد الصور
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (50) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (50)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر صورة لأحد المتزلجين أثناء تزلجه على لوح في حديقة للتزلج على شاشة هاتف Galaxy S24 Ultra. يتم اختيار زر التحرير. بعد ذلك، يتم اختيار زر نجوم Galaxy AI. ويتم تتبع المتزلج وإعادة وضعه في مكان أعلى في الصورة. وبعدها، يتم الضغط على زر "إنشاء". يتم إجراء معالجة للصورة وملء المساحة الفارغة التي كان يتواجد بها المتزلج. ويتم عرض الصورة قبل وبعد إجراء التعديل عليها.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (51) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (51)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
في تطبيق Gallery، تظهر صورة لأحد المتزلجين أثناء تزلجه على لوح في حديقة للتزلج.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (52) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (52)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر الصورة الآن في وضع التحرير في تطبيق Gallery.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (53) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (53)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (54) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (54)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
اضغط أو ارسم للتحديد
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (55) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (55)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
نقل التحديد
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (56) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (56)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
في وضع التحرير. تمر موجة زرقاء اللون للحظات فوق الصورة. يتم تتبع صورة المتزلج. بعد ذلك، تتم إعادة وضع المتزلج في مكان أعلى في الصورة.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (57) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (57)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (58) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (58)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تتم معالجة الصورة. يتم ملء المساحة الفارغة التي كان يتواجد بها المتزلج.
مساعد التصوير
إعادة تخيل الصور عن طريق تغيير موضع الأشخاص أو الأشياء وتعبئة الخلفيات.
أبطئ حركة الزمن بخاصية "التصوير الفوري بطيء الحركة"
أبطئ حركة الزمن بخاصية "التصوير الفوري بطيء الحركة"
حوِّل مقاطع الفيديو العادية إلى أعجوبة سينمائية باستخدام خاصية "التصوير الفوري بطيء الحركة". بفضل صور الذكاء الاصطناعي AI التي تُقحم بين إطارات الفيديو، كل ما يتطلبه الأمر هو لمسة بسيطة مع الاستمرار للتحكم في وقت بدء وإيقاف تأثير الحركة البطيئة، حتى عند التنزيلات.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (59) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (59)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يُعرض مقطع فيديو لقتال بالبالونات المائية في حفلة عيد ميلاد طفل في الفناء الخلفي بالسرعة العادية على شاشة Galaxy S24 Ultra. يظهر شخص بالغ من خلف طاولة الهدايا. وحينما ينفجر بالون ماء على رأسه، يتحول الفيديو إلى الحركة البطيئة.
خاصية Super HDR . استعمال تقنية AI من لقطة المعاينة إلى اللقطة النهائية
خاصية Super HDR . استعمال تقنية AI من لقطة المعاينة إلى اللقطة النهائية
مع آخر تحديث لخاصية Super HDR تبدو لقطة المعاينة بخاصية Super HDR مثل اللقطة النهائية. هكذا يمكنك رؤية مدى وضوح صورك وفيديوهاتك قبل التقاطها. كما أنها مفيدة حتى عند التصوير باستعمال الكاميرات المخصصة لشبكة التواصل الاجتماعي.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (60) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (60)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
صورة لامراة وقت الغروب. مع خاصية Super HDR، يتم تحسين الألوان ودرجة التشبع، مما يضفي بريقاً على الجسم المصور ويجعل الغيوم واضحة في السماء. الصورة الملتقطة بخاصية Super HDR والمعروضة في العدسة، تتطابق مع الصورة الواضحة والمحفوظة في الاستديو.
تصوير GalaxyS24Ultra #withGalaxy
دوّرها وابحث عنها بكل بساطة
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (61) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (61)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
توجد صفحة مدونة مفتوحة في تطبيق متصفح الويب. تظهر نافذة Google متراكبةً فوق التطبيق. يُستخدم قلم SPen لرسم دائرة حول نص في صفحة المدونة: بطاطس تورنيدو. تظهر نتائج البحث عن “بطاطس تورنيدو” في نافذة منبثقة فوق التطبيق. يُستخدم قلم SPen لسحب النتائج لأعلى إلى شاشة كاملة من نتائج بحث Google.
ابحث بسهولة غير مسبوقة باستخدام خاصية Circle to Search. تتبع فقط الجسم الموجود في الصورة للحصول على نتائج بحث Google. بين يديك طريقة بصرية جديدة للعثور على ما تبحث عنه.
Circle to Search
ارسم دائرة، تجد النتيجة
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (63) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (63)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم تشغيل مقطع فيديو تمت مشاركته على أحد تطبيقات وسائل التواصل الاجتماعي على شاشة عرض هاتف Galaxy S24 Ultra. يظهر في الفيديو عرضاً شاملاً لغرفة معيشة مزينة حديثاً. يتم الاقتراب من اللقطة المعروضة إلى ملصق داخل إطار على الحائط. ويتم الضغط على زر Home (الصفحة الرئيسية) لفترة طويلة. يظهر شريط بحث Google في أسفل الشاشة. يتم رسم دائرة حول الملصق. يتم تحديد الملصق وتظهر نتائج Google المماثلة في نافذة منبثقة فوق تطبيق وسائل التواصل الاجتماعي. خاصية Circle to Search باستخدام Google.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (64) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (64)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (65) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (65)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يشغّل أحد تطبيقات التواصل الاجتماعي منشور لفيديو. يُظهر منشور تطبيق التواصل الاجتماعي عرضاً شاملاً لغرفة معيشة مزينة حديثاً.
اضغط مطولاً على زر الشاشة الرئيسية
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (66) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (66)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم رسم دائرة منقطة حول ملصق داخل إطار على الحائط. تظهر كلمة Google مكتوبة في أعلى الإطار ويظهر شريط بحث Google في الأسفل. يتم رسم دائرة حول الملصق.
ارسم دائرة أو اضغط للبحث.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (67) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (67)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (68) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (68)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم تحديد الملصق وتظهر نتائج Google المماثلة في نافذة منبثقة فوق تطبيق وسائل التواصل الاجتماعي.
Circle to Search
البحث عن أي شيء دون التبديل بين التطبيقات.
الترجمة المباشرة. أسهل طريقة للتواصل.
بفضل الترجمة المباشرة، يمكنك الآن الحصول على الترجمة والشرح لحظة بلحظة، أثناء الاتصال. أزل حواجز اللغة بشكل غير مسبوق، حتى أثناء التراسل. ما عليك سوى الرد بلغتك، ليتم ترجمته في الطرف الآخر.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (69) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (69)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
ترجمة المكالمة الهاتفية لحظة بلحظة، حيث تعرض الشاشة نص الحوار بلغتين.
الترجمة المباشرة
التواصل الفوري بلغة أجنبية
اضغط للاتصال
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (70) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (70)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
هناك مكالمة هاتفية جارية على شاشة عرض Galaxy S24 Ultra.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (71) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (71)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
هناك مكالمة هاتفية جارية على شاشة عرض Galaxy S24 Ultra. تظهر القائمة المنسدلة للغات في أعلى المحادثة.
انقر للترجمة
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (72) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (72)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم إجراء نسخ صوتي للحوار المُتحدَّث به من المكالمة الهاتفية على الشاشة باللغة الأصلية المُتحدَّث بها، ثم تظهر اللغة المترجمة أسفل النسخ الصوتي الأصلي.
الترجمة المباشرة
لقد تركت محفظتك في سيارة أجرة أثناء السفر! كيف يجب أن تتحدث مع سائق سيارة أجرة أجنبي؟
تطبيق للترجمة الفورية في جيبك
هل تريد طلب توصية من أحد السكان المحليين؟ لا تقلق! فيوجد تطبيق للترجمة الفورية في جيبك. استمتع به حتى عند تشغيل وضع الطيران من دون Wi-Fi.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (73) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (73)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
في تطبيق Interpreter، تتم كتابة محادثة بلغتين وترجمتها في الوقت الفعلي.
اختر نبرة الصوت المناسبة للنص مع Chat Assist
قم بإعداد رسائل نصية عبر تقنية الذكاء الاصطناعي في أعلى وظيفة Chat Assist. الآن يمكنك التعبير عما تريد بصوت محترف، أو صوت صديق مقرب، أو حتى بصوت مهذب. هكذا يمكنك الانتقال في ثوانٍ معدودة من حالة "كيف أقول هذا؟" إلى "لماذا لم أفكر بهذا من قبل؟".
مساعد الدردشة
ترجمة نصوص فورية بين يدك
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (75) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (75)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر محادثة نصية على شاشة هاتف Galaxy S24 Ultra. وتظهر الرسائل مكتوبة بلغة أجنبية. وتظهر فقاعة منبثقة تحمل العبارة، "اضغط للترجمة." عند الضغط على هذه الفقاعة، تتحول إلى شريط به قائمة منسدلة تتضمن لغة الإدخال والإخراج. تعرض كل رسالة على شكل فقاعة الآن كلاً من الرسالة الأصلية وترجمتها.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (76) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (76)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
قائمة محادثات.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (77) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (77)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم فتح المحادثة لإظهار حوار بلغة أجنبية.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (78) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (78)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تعرض القائمة المنسدلة للغة الإدخال والإخراج "الخيار الافتراضي" و"اللغة الإنجليزية" على التوالي. تعرض الآن كل رسالة على شكل فقاعة كلاً من الرسالة الأصلية وترجمتها باللغة الإنجليزية.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (79) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (79)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم تغيير اللغة الإنجليزية إلى الفرنسية في قائمة الإخراج.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (80) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (80)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تتم الآن ترجمة الرسائل إلى اللغة الفرنسية.
مساعد الدردشة
تحسين تواصلك من خلال ترجمة المحادثات والرسائل النصية.
لخص الملاحظات في تطبيق Note بسرعة عبر الذكاء الاصطناعي
سواء كنت تطبع نصاً بسرعة، أو تدون ملاحظات، ستجد أن كل شيء سهل وواضح مع Note Assist . ببساطة ابدأ الكتابة، ثم أعد الصياغة بشكل مختصر، واضح وسهل المراجعة لاحقاً.
وحين تبحث عن ملاحظة قديمة، سيعرض غطاء الهاتف الجديد اختصارات بسيطة - بحيث تبقى الشاشة منظمة مما يسهل عليك إيجاد ما تبحث عنها.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (81) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (81)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
إبراز نص طويل في تطبيق Note. وبعدة لمسات بسيطة، يظهر الإطار العام للنص. يتم حفظ المستند.
مساعد التدوين
ملاحظة أكثر ذكاءً وأقل صعوبة
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (82) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (82)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر ملاحظة على شاشة هاتف Galaxy S24 Ultra. وتتضمن الملاحظة مقالة لبيان صحفي طويل. يتم الضغط على زر نجوم Galaxy AI في شريط الأدوات السفلي. تظهر قائمة منبثقة ويتم الضغط على "التنسيق التلقائي". وبعدها يتم الضغط على "رؤوس الصفحة والتعداد النقطي." تُجرى معالجة للملاحظة ويتم إنشاء مخطّط تفصيلي للمقالة. يتغير تنسيق المخطّط التفصيلي في كل مرة يتم فيها تمرير الملاحظة إلى اليسار.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (83) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (83)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم عرض مقالة لبيان صحفي طويل في ملاحظة.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (84) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (84)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
تظهر قائمة منبثقة.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (85) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (85)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (86) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (86)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم إجراء معالجة للملاحظة ويتم إنشاء مخطّط تفصيلي للمقالة في نافذة منبثقة فوق الملاحظة.
أنقر هنا
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (87) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (87)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
يتم حفظ نسخة المخطّط التفصيلي في الملاحظة الأصلية.
مساعد التدوين
تنسيق تلقائي للنصوص في الملاحظة لتكون بشكل نقاط سهلة القراءة.
أكثر ألعاب الهاتف المحمول واقعية لدينا
شعار Arena Breakout. تشغيل التتبع الشعاعي. عرض مقارنة على شاشة Galaxy S24 Ultra يحاكي مؤثرات التتبع الشعاعي في لقطة لعبة تم التقاطها من Arena Breakout. مع التتبع الشعاعي تبرز الانعكاسات على الأسطح بشكل أكبر.
النصر حليفك مع معالج Snapdragon® 8 Gen 3 المخصص لأجهزة Galaxy. يتيح لك نظام المعالجة الأسرع، القوة التي تحتاجها للعب. وبعذ ذلك، يمكنك كشف مؤثرات الرسوم لحظة بلحظة مع تقنية التتبع الشعاعي للحصول على ظلال وانعكاسات بمنتهى الواقعية.
والآن إليك المفاجأة. قمنا بمضاعفة حجم قسم Vapor Chamber الخاص بهاتف GalaxyS24Ultra لتعزيز التشتيت الحراري ومنحك تجربة رسوم انسيابية لا تنسى.
- وحدة المعالجة العصبية
41 % التشغيل المطور مع الذكاء الاصطناعي
- وحدة المعالجة الرسومية
30 % أقوى في الرسوم والأداء
- وحدة المعالجة المركزية
20 % نظام حوسبة أسرع وأكثر فعالية في استهلاك الطاقة
بطارية تدوم للعب طوال اليوم
بفضل سعة التخزين الهائلة والفعالية الأعلى في استهلاك الطاقة، تمنحك بطارية هاتف Ultra فرصة أكبر ووقتاً أطول للاستعداد لأكبر التحديات. ,
- شاهد فيديوهات حتى
30 ساعة
- استمتع بالموسيقى حتى
95 ساعة
شاشة الهاتف الأكثر سطوعاً تحت الشمس بقوة 2600 شمعة
تمتاز أكبر شاشة لدينا بإمكانية تحسين الرؤية. فطبقة Corning® Gorilla® Armor تقلل الانعكاسات وتحسن وضوح الرؤية، حتى في ضوء الشمس المباشر. وبعد ذلك، يعمل محسن الرؤية على تعزيز التباين والألوان للاستمتاع بتجربة استثنائية.
عرض فيديو فائق الوضوح في مقارنة على شاشة هاتف Galaxy S24 Ultra. الجهاز محمول خلال النهار تحت أشعة الشمس، مع عرض الفيديو على الشاشة.
لماذا تغير من جهاز iOS إلى Galaxy؟
حول من جهاز iOS بمنتهى السهولة
احتفظ بصورك ومقاطع الفيديو لديك وجهات اتصالك وتقويمك وتطبيقاتك عبر تطبيق Smart Switch — حتى إن كان جهازك السابق يعمل بنظام iOS.,,
انتقل إلى Smart Switch
كن رائد الذكاء الاصطناعي
غيّر إلى Galaxy لتنعم بسهولة الحياة مع عصر جديد من الهاتف المعزز بالذكاء الاصطناعي.
وداعاً لحواجز الانتقال بين الأجهزة
حول إلى Galaxy لتكتشف أسهل الطرق في العمل واللعب والحفاظ على الصحة في مختلف الأجهزة.
انتقل إلى تجربة الاجهزة المتصلة
خاصية Try Galaxy على هاتفك
ألم تجرِّب أحدث جهاز Galaxy حتى الآن؟ ما رأيك في تجربته الآن؟ وهنا على هاتفك! استمتع ببدء هذه التجربة من خلال هذا التنزيل.
ألم تجرِّب أحدث جهاز Galaxy حتى الآن؟ ما رأيك في تجربته الآن؟ وهنا على هاتفك! امسح ببساطة الرمز QR code ضوئياً وقم بالتنزيل للبدء.
الخصوصية بين أيد أمينة.
ما زالت خصوصية المستخدم على سلّم أولوياتنا في عصر الذكاء الاصطناعي AI. ومع إطلاق Galaxy AI على فئة Galaxy S24 Series، يمكنك التأكد من أنّنا لن نخزن أو نستخدم بياناتك الشخصية لأي غرض من دون موافقتك.
![Galaxy S24 Ultra | Galaxy AI | سامسونج EG (97) Galaxy S24 Ultra | Galaxy AI | سامسونج EG (97)](https://i0.wp.com/www.samsung.com/samsung/resources/global/galaxy-s24-ultra/common/images/blank.gif)
Samsung Knox
التغيير يبدأ بخطوات صغيرة
نتقدم بخطوات ملموسة نحو المستقبل المستدام، حيث أننا نؤمن ببناء رحلة مستدامة من خلال إجراء تغييرات بسيطة ولكن نتائجها هائلة ستلمسها بنفسك.
استبدل ووفر
استبدل واحصل على رصيد حتى 500 ريال سعودي.
سعة تخزين تصل إلى 1TB
وفر مع خيارات من سعة التخزين 256GB و 512GB و 1TB.
تألق بالعصر الجديد
اكتشف المزيد
الأسئلة الأكثر تداولاً
-
يأتي هاتف GalaxyS24Ultra بألوان الرمادي تيتانيوم، الأسود تيتانيوم، البنفسجي تيتانيوم، والأصفر تيتانيوم. أما ألوان الأزرق تيتانيوم، والأخضر تيتانيوم، والبرتقالي تيتانيوم فهي متاحة فقط عبر Samsung.com.
انتقل إلى الألوان
-
يوفر هاتف GalaxyS24Ultra تجربة أفضل من سلفه في كل شيء، ابتداء من إطار التيتانيوم إلى برامج الذكاء الاصطناعي. ويتضمن هاتف GalaxyS24Ultra نظام كاميرا Quad Tele قادر على التقاط صور مقربة أكثر وضوحاً من هاتف Galaxy S23 Ultra، حيث أن الكاميرا بدقة 50MP تأتي الآن مع تقريب بصري بمعدل 5 مرات، مما يعني أنه حتى عند تقريب الصورة بمعدل 5 مرات، يمكنك ملاحظة قوة التصوير الليلي، والمتمثلة في وضوح الصور الملتقطة في الإضاءة الخافتة يدعم محرك ProVisual الجديد تجربة التصوير الشاملة مثل دقة الوضوح العالية، وخاصية Super HDR، وتقريب الصورة عبر الذكاء الاصطناعي، والتصوير الليلي ومساعد التصوير. وتمتاز شاشة هاتف GalaxyS24Ultra بوضوح أكبر من شاشة هاتف Galaxy S23 Ultra، بسبب زيادة ذروة السطوع التي تبلغ 2600 شمعة، واستعمال زجاج Corning® Gorilla® Armor الجديد.
-
كاميرا هاتف GalaxyS24Ultra هي أول كاميرا هاتف Galaxy مجهزة بنظام Quad Tele، الذي يتيح للمستخدمين التقاط صور أكثر وضوحاً ونقاءً في نطاق التقريب البصري الذي يستخدمونه عادة. , وهكذا عند التصوير في نطاقات التقريب الرقمي، يمكن للمستخدمين الحصول على صور ومقاطع فيديو أكثر دقة وتفصيلاً من السابق، بفضل دقة وضوح التقريب عبر الذكاء الاصطناعي، وذلك بالاستناد إلى محرك ProVisual الجديد. بالإضافة إلى تقريب الصورة، يقوم محرك ProVisual القوي بتحسين دقة الوضوح والتصوير الليلي وصور Super HDR.,
انتقل إلى الكاميرا
-
شاشة هاتف GalaxyS24Ultra التي يبلغ حجمها 6.8 بوصة، هي أكبر بمقدار 0.6 بوصة من شاشة هاتف Galaxy S24 بحجم 6.2 بوصة، ومقدار 0.1 بوصة مقارنة بشاشة هاتف +Galaxy S24 بحجم 6.7 بوصة.
انتقل إلى أبعاد التصميم
-
نعم، يأتي هاتف GalaxyS24Ultra مع قلم SPen مدمج.
انتقل إلى قلم SPen
-
تتميز بطارية هاتف GalaxyS24Ultra (النموذجية) التي تبلغ سعتها 5000mAh بعمر طويل، بحيث يمكنك مشاهدة مقاطع الفيديو لمدة تصل إلى 30 ساعة أو الاستمتاع بالموسيقى لمدة تصل إلى 95 ساعة. ,,
انتقل إلى البطارية
-
من منظور مكونات الأجهزة، يعد هاتف GalaxyS24Ultra خبير الألعاب بفضل المعالج القوي ونظام التشتيت الحراري الفعال والشاشة ذات الوضوح العالي والبطارية المعمرة، التي تعزز طاقة الجهاز للاستمتاع بجميع ألعاب الهاتف المحمول المفضلة لديك. ومع الأداء المتطور تأتي أدوات اللعب المتطورة، مثل التتبع الشعاعي الذي يجعل الظلال والانعكاسات تنبض بالحيوية في رسومات اللعب.
انتقل إلى الأداء
-
يستخدم هاتف GalaxyS24Ultra تقنية الذكاء الاصطناعي في العديد من التطبيقات. على سبيل المثال، تستخدم الكاميرا تقنية تقريب الصورة AI Zoom لالتقاط أفضل الصور المقربة. كما تستخدم وظيفة مساعد التصوير Photo Assist تقنية الذكاء الاصطناعي لملء الخلفية وتحريك الأجسام وضبط حجمها أو حذفها. وهناك أيضاً الترجمة المباشرة التي تتيح لك الاتصال والتحدث بلغات مختلفة.
انتقل إلى Galaxy AI
-
نعم، يمكنك نقل بياناتك من جهاز iOS أو أي جهاز Android آخر إلى جهاز Galaxy الجديد بسهولة تامة مع Smart Switch.,,
انتقل إلى Smart Switch
-
يستطيع المعالج المطور تشغيل هاتف GalaxyS24Ultra مع تحسين أداء المعالج NPU بنسبة 41% ووحدة معالجة الرسومات بنسبة 30% ووحدة المعالجة المركزية بنسبة 20% مقارنة بهاتف Galaxy S23 Ultra. قسم Vapor Chamber الخاص بها أكبر بنسبة 92% من سابقه لتحسين تشتيت الحرارة. مع قوة 2600 شمعة ، يحتوي هاتف GalaxyS24Ultra بقوة 2600 شمعة على أكثر شاشة Galaxy سطوعاً حتى الآن. كما أن الشاشة المعززة بطبقة Corning® Gorilla® Armor ، أقل انعكاساً من هاتف Galaxy S23 Ultra. أخيراً، يحتوي هاتف GalaxyS24Ultra على كاميرا بزاوية واسعة بدقة 200MP مع محرك ProVisual لتحسين الذكاء الاصطناعي، وهو أول تطبيق يستخدم مع هاتف Galaxy.
GalaxyS24|S24+
اعرف المزيد
تأمل طرقاً ذكية للحصول على هاتف GalaxyS24Ultra
اشترِ الآن احجز الآن اشترِ الآن منافذ البيع
الحياة أكثر بهجة مع Galaxy
اكتشف المزيد
عرض بزاوية 360°
انتقل في جولة
*الألوان المطلوبة حصرياً عبر الإنترنت متوفرة فقط عبر Samsung.com.
طرق مبهرة جديدة لإنجاز الأعمال
انتقل إلى سامسونج للأعمال
*قد تختلف جميع المواصفات والأوصاف الواردة هنا عن المواصفات والأوصاف الفعلية للمنتج. وتحتفظ سامسونج بحقها في إجراء تغييرات على هذه الوثيقة والمنتج الوارد وصفه هنا في أي وقت ودون التزام منها بتقديم إخطار بهذا التغيير. كما تخضع جميع الوظائف والخصائص والمواصفات وواجهة المستخدم الرسومية والمعلومات الأخرى المتعلقة بالمنتج الواردة في هذه الوثيقة للتغيير دون إشعار أو التزام ويشمل ذلك على سبيل المثال لا الحصر المزايا والتصميم والتسعير والمكونات والأداء والتوافر وإمكانات المنتج. المحتويات الظاهرة على الشاشة هي لأغراض التوضيح فقط.
*قد يتطلب استخدام بعض خصائص الذكاء الاصطناعي لدى سامسونج، تسجيل الدخول في حساب سامسونج.
*لا تقدم سامسونج أي وعود أو ضمانات تتعلق بدقة وكمال والاعتماد على النتائج التي توفرها خصائص الذكاء الاصطناعي.
*سيتم تقديم مزايا Galaxy AI مجاناً حتى نهاية عام 2025، وذلك مع أجهزة Samsung Galaxy المدعمة. قد تُفرَض شروط مختلفة على مزايا الذكاء الاصطناعي المقدمة من أطراف أخرى.
*يتم عرض الصور لأغراض التوضيح. تقليل المشاهد المتسلسلة لأغراض التوضيح. قد تختلف واجهة المستخدم الفعلية عن تلك المعروضة.
- تقليل المشاهد المتسلسلة لأغراض التوضيح. عرض النتائج لأغراض توضيحية فقط. تعتمد النتائج على الصور المتطابقة. يتطلب اتصال بالإنترنت. قد يحتاج المستخدمون لتحديث نظام Android إلى أحدث إصدار. قد تعتمد وظائف المنتج على إعدادات التطبيق والجهاز. بعض الوظائف قد لا تتوافق مع تطبيقات معينة. يعتمد مدى توفر الخدمة على البلد واللغة. دقة النتائج غير مضمونة.
- تتطلب الترجمة المباشرة اتصالا بالشبكة وتسجيل الدخول في حساب سامسونج، وهي متاحة فقط عبر تطبيق Samsung Phone المثبت مسبقا. قد تتطلب بعض اللغات تنزيل حزمة اللغة. يعتمد مدى توفر الخدمة على اللغة. دقة النتائج غير مضمونة.
- تتطلب خاصية Interpreter تسجيل الدخول إلى حساب سامسونج. قد تتطلب بعض اللغات تنزيل حزمة اللغة. كما يختلف مدى توفر الخدمة باختلاف اللغة. دقة النتائج ليست مضمونة. قد يختلف مدى التوفر والميزات المدعومة باختلاف البلد أو المنطقة أو شركة الاتصالات. وبالمثل، قد يختلف مدى التوفر بالنسبة للغات المدعومة.
- تتطلب وظيفة "مساعد التدوين" Note Assist اتصالا بالشبكة وتسجيل الدخول في حساب سامسونج. يطبق حد أقصى لعدد الحروف. يعتمد مدى توفر الخدمة على اللغة. ودقة النتائج غير مضمونة.
- تتطلب وظيفة التحرير Generative Edit اتصالا بالشبكة وتسجيل الدخول في حساب سامسونج. ينتج عن التحرير Generative Edit تغيير حجم الصورة بدقة تصل إلى 12MP. ويتم دمج الصورة الناتجة والمحفوظة بعلامة مرئية للإشارة إلى أن الصورة تم إنشاؤها بواسطة الذكاء الاصطناعي. مدى دقة النتائج والاعتماد عليها غير مضمون.
- بالقياس قطرياً، فإن حجم شاشة هاتف GalaxyS24Ultra يبلغ 6.8 بوصات كهيكل مستطيلي كامل و 6.8 بوصات مع احتساب الزوايا المنحنية. تعتبر مساحة المشاهدة الفعلية أقل بسبب الزوايا المنحنية وفتحة الكاميرا.
- لا تستخدم طبقة التيتانيوم إلا مع إطار الجهاز، وهذا الإطار لا يتضمن زر مستوى الصوت وأزرار جانبية.
- مقارنة بهاتف Galaxy S23 Ultra.
- يعتمد توفر اللون على البلد أو مزود شبكة المحمول.
- يتم تمكين خاصية التقريب البصري عالي الجودة عبر مستشعر البكسل التكيفي.
- يطبق تقريب الصورة AI Zoom على مسافات فاصلة بين أطوال التقريب الرقمي. دقة النتائج غير مضمونة.
- تعتمد النتائج على ظروف الإضاءة و/أو التصوير، بما فيها وجود عدة أجسام في اللقطة، وانحراف الأجسام عن اللقطة، أو الأجسام المتحركة.
- تخضع مسافات التقريب بمعدل 3 مرات و 5 مرات للتقريب البصري optical zoom، أما مسافات التقريب بمعدل مرتين و 10 مرات، فتخضع للتقريب optical quality zoom.
- يجب تفعيل تقريب الصورة بمعدل مرتين 2x zoom في إعدادات تطبيق مساعد الكاميرا. يمكن تنزيل مساعد الكاميرا من متجر Galaxy.
- يجب مشاهدة الفيديو بخاصية 8K video على جهاز يدعم عرض فيديو 8K video.
- تشتمل خاصية 100X Space Zoom على التقريب 10x Optical Zoom والتقريب 100X Digital Zoom باستخدام تكنولوجيا Super Resolution المعتمدة على الذكاء الاصطناعي. ربما يتسبب التقريب لأكثر من 10 أضعاف في تدهور جودة الصورة.
- قد لا تدعم بعض التطبيقات خاصية Super HDR
- تتطلب ميزة اقتراح نبرة الصوت لدى خاصية Chat Assist اتصالا بالشبكة وتسجيل الدخول في حساب سامسونج. ولتفعيل الخدمة، يجب أن تلبي متطلبات طول المدة والمسافات. يعتمد توفر الخدمة على اللغة. دقة النتائج غير مضمونة.
- شركة Arena Breakout © Proxima Beta Pte المحدودة. جميع الحقوق محفوظة. جميع العلامات التجارية والشعارات وحقوق التأليف والنشر الأخرى هي ملك لأصحابها. متاح للشراء من متجر Samsung Galaxy ومتاجر التطبيقات الأخرى في بلدان محددة.
- منتجات Snapdragon هي من إنتاج شركة Qualcomm Technologies، Inc. و / أو الشركات التابعة لها.
- قسم Vapor Chamber المثبت في هاتف GalaxyS24Ultra هو اكبر بمعدل 92% بالمقارنة مع هاتف Galaxy S23 Ultra.
- التحسينات الظاهرة في أداء المعالج، تمت بالمقارنة مع هاتف Galaxy S23 Ultra. ويعتمد الأداء الفعلي على بيئة المستخدم وظروف الاستخدام والبرامج والتطبيقات المثبتة.
- قد يختلف عمر البطارية الفعلي باختلاف بيئة الشبكة والمزايا والتطبيقات المستعملة وعدد المرات التي تم فيها إجراء المكالمات والرسائل، وعدد مرات الشحن، وغيرها من العوامل الأخرى. يخضع لتقدير متوسط ملف المستخدم المعد من قبل UX Connect Research، التي اجرت تقييماً مستقلاً خلال الفترة بين 25 نوفمبر 2023 و 15 ديسمبر 2023 في الولايات المتحدة الأمريكية والمملكة المتحدة، على إصدارات تجريبية SM-S921, SM-S926 و SM-S928 وفقاً للوضع الأساسي باستخدام شبكات LTE و 5G Sub6. لم يخضع لفحص شبكة 5G mmWave.
- بالاستناد إلى ظروف فحص المختبر الخاص بسامسونج والمطبق على إصدار تمهيدي للطراز المتصل بسماعة عبر بلوتوث حسب الاعدادات الرئيسية لشبكة LTE. تقاس تقديرياً حسب قدرة البطارية والجهد المقاس في استهلاك البطارية خلال تشغيل الفيديو (وضوح ملف الفيديو 720 بكسل، محفوظ في الجهاز)، وتشغيل الصوت (ملف mp3، سرعة 192kbps، محفوظ في الجهاز مع إطفاء شاشة LCD). تعتمد المدة الفعلية لتشغيل الفيديو والصوت على اتصال الشبكة، الاعدادات، نسق الملف، سطوع الشاشة، حالة البطارية وغيرها الكثير من العوامل الأخرى.
- حصلت شاشة Dynamic AMOLED 2X.المدعمة بمحسن الرؤية على هاتفا هاتف GalaxyS24Ultra على اعتماد هيئة VDE Germany عن كثافة ألوان 100% ضمن نطاق لوني DCI-P3. وهذا يعني أن الصور لن تكون باهتة وستحصل على ألوان بمنتهى النقاء مهما اختلفت مستويات السطوع. كما تستطيع الشاشة أن تحقق ذروة سطوع تصل إلى 2600 شمعة، مما يحسن درجة التباين بين الجانبين المطلم والمضيء في المحتوى الرقمي وما ينتج عن ذلك من صور أكثر سطوعاً مع مغدل تباين 5,000,000:1 وهو ما يجعلك تستمتع بتجربة جهاز محمول أكثر سحراً.
- تتطلب التحويلات السلكية من أجهزة Android™ أن يكون جهاز الاستقبال مدعم بنظام تشغيل Android™ 4.3 أو أحدث، وجهاز الإرسال من نظام Android™ 4.3 أو أحدث. يمكن إتمام التحويلات عبر الاتصال اللاسلكي، وبدون الحاجة لأي كابلات. بالنسبة للاتصالات اللاسلكية، يجب أن يكون جهاز الاستقبال من نظام Android™ 4.0 أو أحدث، وجهاز الإرسال من نظام Android™ 4.0 أو أحدث. افتح خاصية Smart Switch Mobile في "الإعدادات" على جهاز Galaxy المستقبل أو قم بتحميل تطبيق Smart Switch Mobile من متجر Galaxy. تعتمد البيانات والمحتويات المتاحة للتحويل على طريقة الإرسال.
- تتطلب التحويلات السلكية من أجهزة iOS أن يكون جهاز الاستقبال مدعم بنظام تشغيل Android™ 4.3 أو أحدث، وجهاز الإرسال من نظام iOS 5 أو أحدث. يمكن إتمام التحويلات عبر الاتصال اللاسلكي أو iCloud.، وبدون الحاجة لأي كابلات. بالنسبة للاتصالات اللاسلكية، يجب أن يكون جهاز الاستقبال من نظام Android™ 4.0 أو أحدث، وجهاز الإرسال من نظام iOS 12 أو أحدث. وتتطلب التحويلات عبر iCloud أن يكون جهاز الاستقبال بنظام Android™ 4.0 أو أحدث، وجهاز الإرسال بنظام iOS 5 وأحدث. افتح Smart Switch Mobile في "الإعدادات" على جهاز الاستقبال Galaxy أو قم بتحميل تطبيق Smart Switch Mobile من متجر Galaxy. بالنسبة للتحويلات اللاسلكية، يمكنك تنزيل تطبيق Smart Switch المخصص لأجهزة iOS من متجر التطبيقات على جهاز iPhone or iPad. تعتمد البيانات والمحتويات المتحة للتحويل على طريقة الإرسال.
- يوصى باستخدام التحويلات السلكية عند نقل وتحويل مجموعة واسعة من البيانات في وقت واحد.
- تباع كل من سماعة Galaxy Buds2 Pro وساعة Galaxy Watch6 Classic وجهاز Galaxy Tab S9 بشكل منفصل.
- متوفر على الأجهزة التي تعمل بنظام التشغيل Android OS 10 (Q OS) أو أحدث وواجهة One UI 2.1 أو أحدث. تتضمن أجهزة الكمبيوتر المدعومة أجهزة Notebooks و Galaxy Books من سامسونج، بما في ذلك أجهزة الكمبيوتر التي تستند إلى نظام Qualcomm الصادر في عام 2020 أو أحدث وأجهزة الكمبيوتر التي تعمل بنظام Windows من الشركات المصنعة الأخرى التي تعمل بإصدار Windows 10 2004 أو أحدث والتي تتضمن مشغلات بلوتوث من انتل إصدار 22.50.02 أو أحدث ومشغلات Wi-Fi من انتل، إصدار 22.50.07 أو أحدث.
- يباع جهاز Galaxy Tab S9 بشكل منفصل.
- عند مشاركة الملفات باستخدام رموز QR وجهات الاتصال ، يمكن نقل ما يصل إلى 1,000 ملف مرة واحدة. يجب أن تكون سعة الملفات الفردية أقل من 3GB، بحيث تصل إجمالي البيانات التي يمكن نقلها يومياً إلى 5GB. تنتهي صلاحية الروابط بعد يومين. يتطلب الجهاز الخاص بالمرسل وجود حساب سامسونج، كما تتطلب أجهزة المرسل والمستقبل اتصالا بالإنترنت.
- خاصية Knox Matrix مدعمة في الهواتف الذكية والأجهزة اللوحية من Galaxy والتي تستخدم واجهة One UI 6.0 أو أحدث. قد يختلف مدى توفرها بحسب البلد أو المنطقة.
- تطبق الشروط والأحكام. يعتمد مدى التوفر على مزود شبكة المحمول، البلد أو المنطقة. تحقق من مدى تأهل جهازك للاستبدال في صفحة الاستبدال.
- قد تختلف خيارات سعة التخزين ومدى توفرها بحسب مزود شبكة المحمول، البلد، أو المنطقة. كما يعتمد مدى توفر سعة التخزين الفعلي على البرنامج المثبت في الجهاز المحمول.
- تباع جميع الملحقات بشكل منفصل.
- بالقياس قطرياً، فإن حجم شاشة هاتف GalaxyS24Ultra يبلغ 6.8 بوصات كهيكل مستطيلي كامل و 6.8 بوصات مع احتساب الزوايا المنحنية، وحجم شاشة Galaxy S24 يبلغ 6.2 بوصات كهيكل مستطيلي كامل و 6 بوصات مع احتساب الزوايا المنحنية، أما شاشة هاتف Galaxy S24+ فيبلغ حجمها 6.7 بوصات كهيكل مستطيلي كامل و 6.5 بوصات مع احتساب الزوايا المنحنية. تعتبر مساحة المشاهدة الفعلية أقل بسبب الزوايا المنحنية وفتحة الكاميرا.
- تم قياس القيمة النموذجية في ظروف معملية لدى أطراف خارجية. القيمة النموذجية هي متوسط القيمة التقديرية التي تأخذ في الاعتبار حدوث انحراف في سعة البطارية فيما بين العينات التي خضعت للاختبار وفقاً لمعيار IEC 61960. وتبلغ سعة البطارية المقدَّرة (كحد أدنى) 3880mAh بالنسبة لهاتف Galaxy S24 و 4755mAh بالنسبة لهاتف +Galaxy S24 و 4855mAh بالنسبة لهاتف Galaxy S22 Ultra. قد يختلف عمر البطارية الفعلي باختلاف بيئة الشبكة وأنماط الاستخدام وغيرهما من العوامل الأخرى.
- هواتف Galaxy S24 وS24+ وS24 Ultra مصنفة بمعيار IP68. بناء على اختبار الغمر بالماء العذب على عمق يصل إلى 1.5 متر لمدة تقارب 30 دقيقة. لا يُنصح باستخدامه على الشاطئ أو في بركة السباحة. مقاومة الجهاز للماء والغبار ليست دائمة وقد تقل مع مرور الوقت بسبب الاستخدام العادي.
- لا تتوفر خاصية "التصوير الفوري بطيء الحركة" إلا على مشغل فيديو Samsung مُسبق التثبيت وتطبيق Samsung Gallery. وقد يختلف توفر الخدمة حسب مواصفات الفيديو.
- تتطلّب خاصية الترجمة في Chat Assist اتصالاً بالشبكة وتسجيل الدخول إلى Samsung Account وتنزيل حزمة اللغة من Galaxy store. ويجب الوفاء بمتطلبات طول النص لتفعيل الخاصية. قد يختلف توفر الخدمة حسب البلد أو المنطقة أو اللغة. قد لا تدعم بعض تطبيقات المحادثة هذه الخاصية. دقة النتائج ليست مضمونة.
')); } } }; const isZoom = function () { const winInnerWidth = window.innerWidth, winOuterWidth = window.outerWidth; let zoomLevel = 100 / ((winInnerWidth / winOuterWidth) * 100); if (zoomLevel > 1.75) { document.documentElement.classList.add('browser-zoomed-175'); } else { document.documentElement.classList.remove('browser-zoomed-175'); } }; return { addLoadStatusClass: addLoadStatusClass, setResolution: setResolution, onClickSup: onClickSup, centeredFocus: centeredFocus, setArBanner: setArBanner, isZoom: isZoom, } })(); (function () { const resize = window.flagship.common.resize, common = window.flagship.highlights.common, utils = window.flagship.common.utils, agent = navigator.userAgent.toLowerCase(), maxOs = agent.indexOf('mac os') > -1, touchDevice = ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)); let els = {}; const init = function () { els.videoWrap = document.querySelectorAll('.common-video'); els.isGlobal = document.documentElement.classList.contains('global'); if (!!els.videoWrap[0]) { setElements(); } }; const setElements = function () { // popup els.viewerPopup = document.querySelector('.highlights-viewer'); els.lowLightPopup = document.querySelector('.highlights-low-light-popup'); els.zoomVideoPopup = document.querySelector('.highlights-quad-telephoto-popup'); els.generativeEditPopup = document.querySelector('.highlights-suggestion-ai-popup'); els.generativeEditExperience = document.querySelector('#generative-edit-experience'); els.circleToSearchExperience = document.querySelector('#circle-to-search-experience'); els.liveTranslateExperience = document.querySelector('#live-translate-experience'); els.chatAssistExperience = document.querySelector('#chat-assist-experience'); els.noteAssistExperience = document.querySelector('#note-assist-experience'); // video els.videosWrap = document.querySelectorAll('.common-video'); els.videos = document.querySelectorAll('.common-video video'); for (var i = 0; i < els.videosWrap.length; i++) { els.videos[i].videoWrap = els.videosWrap[i]; } }; const bindEvents = function () { window.addEventListener('load', anchorPosition); window.addEventListener('hashchange', anchorPosition); }; const anchorPosition = function () { if (window.location.hash != '') { switch (window.location.hash) { case '#see-in-360': if (els.viewerPopup) els.viewerPopup.show(); break; case '#low-light-zoom': if (els.lowLightPopup) els.lowLightPopup.show(); break; case '#5x-zoom': if (els.zoomVideoPopup) els.zoomVideoPopup.show(); break; case '#generative-edit': if (els.generativeEditPopup) els.generativeEditPopup.show(); break; case '#generative-edit-experience': if (els.generativeEditExperience) { els.generativeEditExperience.show(); } break; case '#circle-to-search-experience': if (els.circleToSearchExperience) { els.circleToSearchExperience.show(); } break; case '#live-translate-experience': if (els.liveTranslateExperience) { els.liveTranslateExperience.show(); } break; case '#chat-assist-experience': if (els.chatAssistExperience) { els.chatAssistExperience.show(); } break; case '#note-assist-experience': if (els.noteAssistExperience) { els.noteAssistExperience.show(); } break; default: let hash = location.hash.split('#')[1], hashSection = document.querySelector('#contents #' + hash), hashTimeout = null; clearTimeout(hashTimeout); hashTimeout = setTimeout(function () { let sectionTop = hashSection.getBoundingClientRect().top, navHeight = utils.getNavHeight(), hashScroll = window.pageYOffset + sectionTop - navHeight; window.scrollTo(0, hashScroll); }, 300); break; } } }; var setResize = function () { resize.init([{ resolution: 1920, resolutionName: 'desktop', eventFunction: '' }, { resolution: 1023, resolutionName: 'tablet', eventFunction: '' }, { resolution: 767, resolutionName: 'mobile', eventFunction: '' }, { resolution: 320, resolutionName: 'mobileS', eventFunction: '' }], 200); resize.add(common.setResolution); }; const setScrollControl = function () { window.scrollController = ANIUTIL.scrollController(); scrollController.init({ speed: 120, duration: 0.5 }); }; const setImageLoader = function () { window.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-img-src', responsiveClass: '.js-res-img', preset: els.isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.bgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-bg-img', loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }; const setVideoLoader = function () { window.videoLoader = ANIUTIL.mediaLoader({ type: 'video', lazyClass: '.js-video-src', responsiveClass: '.js-res-video', preset: els.isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (video.videoWrap && !video.videoWrap.classList.contains('is-loaded')) { video.videoWrap.classList.add('is-loaded'); } } }); }; const setCenteredfocus = function () { els.contents = document.querySelector('#contents'); els.allClickables = els.contents.querySelectorAll('a, button, input, select'); for (let i = 0; i < els.allClickables.length; i++) { els.allClickables[i].addEventListener('focusin', common.centeredFocus); } }; const setDisclaimerNumber = function () { const supTag = document.querySelectorAll('.click_sup'), btmDicl = document.querySelectorAll('li.common-bottom-disclaimer__list-item'); let btmDiclArr = []; for (let i = 0; i < btmDicl.length; i++) { let dataSup = btmDicl[i].getAttribute('data-sup'); btmDiclArr.push(dataSup); } for (let j = 0; j < supTag.length; j++) { let dataSupTag = supTag[j].getAttribute('data-sup-tag'); let supChildCount = supTag[j].parentElement.childElementCount; if (btmDiclArr.indexOf(dataSupTag) > -1) { supTag[j].innerText = btmDiclArr.indexOf(dataSupTag) + 1; } else { if (supChildCount == 1) { supTag[j].parentElement.remove(); } else { let supParent = supTag[j].parentElement.childNodes; let supArr = []; for (let supIndex = 0; supIndex < supParent.length; supIndex++) { supArr.push(supParent[supIndex]); } let index = supArr.indexOf(supTag[j]); if (index != 0 && index % 2 == 0) { supParent[index].remove(); supParent[index - 1].remove(); } else { if (index != supArr.length) supParent[index + 1].remove(); supParent[index].remove(); } } } } }; const setDisclaimer = function () { els.supClicker = document.querySelectorAll('a.click_sup'); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', common.onClickSup); } }; const setVideoTheme = function () { for (let i = 0; i < els.videoWrap.length; i++) { let colorType = els.videoWrap[i].getAttribute('data-theme-type'); if (colorType === 'white') { els.videoWrap[i].classList.add('common-video__white'); } else if (colorType === 'black') { els.videoWrap[i].classList.add('common-video__black'); } } }; const setVideoBlind = function () { for (let i = 0; i < els.videoWrap.length; i++) { els.videoWrap[i].control = els.videoWrap[i].querySelector('.common-video__control'); els.videoWrap[i].blind = els.videoWrap[i].querySelector('.blind'); els.videoWrap[i].blind.innerHTML = (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) ? LOCAL_VARI.play : 'play'; } }; const onLoadHandler = function () { common.addLoadStatusClass(); common.setArBanner(); init(); bindEvents(); setResize(); if (!maxOs && !touchDevice) { setScrollControl(); } setImageLoader(); setVideoLoader(); setCenteredfocus(); setDisclaimerNumber(); setDisclaimer(); setVideoTheme(); setVideoBlind(); common.isZoom(); resize.add(common.isZoom); }; onLoadHandler(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.accordion = (function () { const resize = window.flagship.common.resize; let els = {}; let objs = { accordion: [] }; let prevDevice = null; let currDevice = resize.checkResolution(); const init = function () { els.accordionList = document.querySelectorAll('.common-accordion__list'); if (!!els.accordionList && els.accordionList.length > 0) { bindEvents(); } }; const bindEvents = function () { resize.add(onResizeHandler); setAccordion(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { onResponsiveHandler(); prevDevice = currDevice; } }; const onResponsiveHandler = function () { for (let i = 0; i < els.accordionList.length; i++) { let isOpenedItem = els.accordionList[i].querySelector('.is-open'); if (!!isOpenedItem) { let isOpenedItemContent = isOpenedItem.querySelector('.js-accordion-content'); let clientHeight = isOpenedItemContent.children[0].clientHeight; isOpenedItemContent.style.height = `${clientHeight}px`; } } }; const setAccordion = function () { for (let i = 0; i < els.accordionList.length; i++) { objs.accordion[i] = new window.flagship.common.accordion({ wrap: els.accordionList[i], openType: 'single', open: { start: function (target) { handlerList.setImages(target); handlerList.setVideo(target); }, end: function (target) { let targetVideo = target.querySelector('.common-accordion__content video'); if (targetVideo && targetVideo.paused) targetVideo.play(); } }, close: { start: function (target) { let targetVideo = target.querySelector('.common-accordion__content video'); if (targetVideo && !targetVideo.paused) { targetVideo.pause(); targetVideo.currentTime = 0; } }, end: function () { } } }); objs.accordion[i].init(); } }; const handlerList = { setImages: function (target) { let targetImages = target.querySelectorAll('.common-accordion__content img'); if (targetImages && targetImages.length > 0) { for (let i = 0; i < targetImages.length; i++) { if (!targetImages[i].classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([targetImages[i]]); } } } }, setVideo: function (target) { let targetVideos = target.querySelectorAll('.common-accordion__content video'); if (targetVideos && targetVideos.length > 0) { for (let i = 0; i < targetVideos.length; i++) { if (!targetVideos[i].classList.contains('is-video-load-complete')) { videoLoader.setResponsiveMedia([targetVideos[i]]); } } } } } return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.clickToVideo = (function () { let els = {}, objs = { clickToVideo: [], }; const init = function () { els.clickToVideosWrap = document.querySelectorAll('.js-scroll-video-disable .common-video'); if (els.clickToVideosWrap.length > 0) { setElements(); setVideo(); } }; const setElements = function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { els.clickToVideosWrap[i].video = els.clickToVideosWrap[i].querySelector('.common-video__figure>video'); els.clickToVideosWrap[i].controller = els.clickToVideosWrap[i].querySelector('.common-video__control'); els.clickToVideosWrap[i].controller.video = els.clickToVideosWrap[i].video; els.clickToVideosWrap[i].controller.addEventListener('click', clickVideoCta); } }; const setVideo = function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { objs.clickToVideo[i] = ANIUTIL.videoHandler({ wrap: els.clickToVideosWrap[i], video: els.clickToVideosWrap[i].video, controller: els.clickToVideosWrap[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }; const clickVideoCta = function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.scrollVideo = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, objs = { scrollVideo: [], scene: [] }, currDevice = resize.checkResolution(); const init = function () { els.scrollVideoWraps = document.querySelectorAll('.common-video.js-scroll-video'); els.pageScrollVideoWraps = []; if (!!els.scrollVideoWraps) { for (let i = 0; i < els.scrollVideoWraps.length; i++) { if (!els.scrollVideoWraps[i].parentElement.classList.contains('common-popup__video') && !els.scrollVideoWraps[i].parentElement.classList.contains('js-scroll-video-disable')) { els.pageScrollVideoWraps.push(els.scrollVideoWraps[i]); } } } if (els.pageScrollVideoWraps.length > 0) { setElements(); objList.setVideo(); objList.setScene(); bindEvents(); } }; const setElements = function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { els.pageScrollVideoWraps[i].video = els.pageScrollVideoWraps[i].querySelector('.common-video__figure>video'); els.pageScrollVideoWraps[i].controller = els.pageScrollVideoWraps[i].querySelector('.common-video__control'); els.pageScrollVideoWraps[i].controller.video = els.pageScrollVideoWraps[i].video; els.pageScrollVideoWraps[i].startPoint = !!els.pageScrollVideoWraps[i].getAttribute('data-start-point') ? parseInt(els.pageScrollVideoWraps[i].getAttribute('data-start-point')) : undefined; els.pageScrollVideoWraps[i].reversePoint = !!els.pageScrollVideoWraps[i].getAttribute('data-reverse-point') ? parseInt(els.pageScrollVideoWraps[i].getAttribute('data-reverse-point')) : undefined; els.pageScrollVideoWraps[i].moStartPoint = !!els.pageScrollVideoWraps[i].getAttribute('data-mo-start-point') ? parseInt(els.pageScrollVideoWraps[i].getAttribute('data-mo-start-point')) : undefined; els.pageScrollVideoWraps[i].moReversePoint = !!els.pageScrollVideoWraps[i].getAttribute('data-mo-reverse-point') ? parseInt(els.pageScrollVideoWraps[i].getAttribute('data-mo-reverse-point')) : undefined; els.pageScrollVideoWraps[i].controller.addEventListener('click', handlerList.videoCta); } }; const bindEvents = function () { window.addEventListener('scroll', handlerList.scroll); handlerList.scroll(); resize.add(onResizeHandler); }; const onResizeHandler = function (currRes) { currDevice = currRes; }; const objList = { setVideo: function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { objs.scrollVideo[i] = ANIUTIL.videoHandler({ playType: 'scrollPlay', startPoint: (currDevice.indexOf('mobile') > -1) ? els.pageScrollVideoWraps[i].moStartPoint : els.pageScrollVideoWraps[i].startPoint, reversePoint: (currDevice.indexOf('mobile') > -1) ? els.pageScrollVideoWraps[i].moReversePoint : els.pageScrollVideoWraps[i].reversePoint, wrap: els.pageScrollVideoWraps[i], video: els.pageScrollVideoWraps[i].video, controller: els.pageScrollVideoWraps[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }, setScene: function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { objs.scene[i] = SCROLLER({ trackElement: els.pageScrollVideoWraps[i].video, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); } } }; const handlerList = { scroll: function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { objs.scene[i].trackAnimation(function () { objs.scrollVideo[i].scrollActive(this.progress); }); } }, videoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.tutorialPopup = function (opts) { const utils = window.flagship.common.utils; let els = {}; let status = {}; let show = {}, hide = {}; status.isGlobal = document.documentElement.classList.contains('global'); const init = function () { setElements(); setOpts(); bindEvent(); }; const setElements = function () { els.html = document.documentElement; els.tutorialPopup = opts.tutorialPopup; els.closeCtas = opts.closeCtas; els.dimmed = !!!opts.dimmed ? '' : opts.dimmed; els.tutorialPopupClass = opts.tutorialPopupClass; }; const setOpts = function () { show.start = (!!!opts.show) ? undefined : opts.show.start; show.end = (!!!opts.show) ? undefined : opts.show.end; hide.start = (!!!opts.hide) ? undefined : opts.hide.start; hide.end = (!!!opts.hide) ? undefined : opts.hide.end; } const bindEvent = function () { opts.openerEvent.element.addEventListener('click', showLayer); els.tutorialPopup.show = showLayer; els.tutorialPopup.hide = hideLayer; }; const showLayer = function (e) { if (opts.openerEvent.proxy) { if (opts.openerEvent.parent) { if (e.target.parentElement.classList.contains(opts.openerEvent.class)) { els.openerCta = e.target.parentElement; } } else { if (e.target.classList.contains(opts.openerEvent.class)) { els.openerCta = e.target; } } } else { els.openerCta = this; } els.tutorialPopup.opener = els.openerCta; if (show.start) show.start(els); els.html.classList.add('is-layer-open'); utils.hiddenScroll(els.tutorialPopup); if (utils.detector.isIosDevice) { els.tutorialPopup.opener.blur(); els.openerCta.style.display = 'none'; } els.closeCtas[0].focus(); setTimeout(function () { els.closeCtas[0].focus(); }, 400); for (let i = 0; i < els.closeCtas.length; i++) { els.closeCtas[i].addEventListener('click', hideLayer); } if (els.dimmed) els.dimmed.addEventListener('click', onClickDimmed); if (show.end) show.end(els); }; const hideLayer = function () { if (utils.detector.isIosDevice) els.openerCta.style.display = ''; if (hide.start) hide.start(els); for (let i = 0; i < els.closeCtas.length; i++) { els.closeCtas[i].removeEventListener('click', hideLayer); } if (els.dimmed) els.dimmed.removeEventListener('click', onClickDimmed); els.html.classList.remove('is-layer-open'); utils.visibleScroll(); if (!!!els.openerCta) { els.tutorialPopup.opener.focus(); } else { els.openerCta.focus(); } setTimeout(function () { if (!!!els.openerCta) { els.tutorialPopup.opener.focus(); } else { els.openerCta.focus(); } }, 300); if (hide.end) hide.end(els); }; const onClickDimmed = function (e) { if (e.currentTarget == e.target) { hideLayer(); } }; return init(); }; })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.camera = (function () { let els = {}; let objs = {}; const init = function () { els.section = document.querySelector('.highlights-camera'); if (!!els.section) { bindEvents(); } }; const bindEvents = function () { setScene(); window.addEventListener('scroll', scrollHandler); }; const setScene = function () { TweenMax.set(els.section, { y: 150 }); objs.scene = SCROLLER({ trackElement: els.section, useFixed: false }); }; const scrollHandler = function () { objs.scene.trackAnimation(function () { let activeValue = ANIUTIL.calRange({ targetValue: 1, progress: this.progress, startPoint: 0, endPoint: 40 }); let moveValue = ANIUTIL.calRange({ targetValue: 150, progress: this.progress, startPoint: 0, endPoint: 40 }); TweenMax.to(els.section, 0, { y: 150 - moveValue }); els.section.style.opacity = activeValue; }); } return { init: init } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.cameraAi = (function () { let els = {}; let objs = {}; const init = function () { els.section = document.querySelector('.highlights-ai'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.gradient = els.section.querySelector('.highlights-ai__gradient'); els.text = els.section.querySelector('.common-headline span'); els.intelligence = els.section.querySelector('.highlights-ai__intelligence video'); }; const bindEvents = function () { setScene(); window.addEventListener('scroll', scrollHandler); scrollHandler(); }; const setScene = function () { TweenMax.set(els.section, { y: 100 }); objs.scene = SCROLLER({ trackElement: els.section, useFixed: false }); }; const scrollHandler = function () { objs.scene.trackAnimation(function () { let activeValue = ANIUTIL.calRange({ targetValue: 70, progress: this.progress, startPoint: 10, endPoint: 30 }); TweenMax.to(els.section, 0, { y: 100 - activeValue }); let _active = function () { if (els.intelligence.readyState < 4) { els.intelligence.addEventListener('canplay', function () { if (!els.section.classList.contains('is-active') && els.intelligence.paused) { els.intelligence.currentTime = 0; els.intelligence.play(); } }); } else { if (!els.section.classList.contains('is-active') && els.intelligence.paused) { els.intelligence.currentTime = 0; els.intelligence.play(); } } if (!els.section.classList.contains('is-active')) { setTimeout(() => { els.section.classList.add('is-active'); }, 700); } }; if (this.wheelDirection == 'down' && this.progress > 40 && this.progress < 70) { _active(); } else if (this.wheelDirection == 'up' && this.progress > 50 && this.progress < 70) { _active(); } if (this.progress == 0 || this.progress == 100) { els.section.classList.remove('is-active'); els.intelligence.pause(); els.intelligence.currentTime = 0; } }); } return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.chatAssistTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-chat-assist-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 200); }, click: function () { let self = this; for (let i = 0; i < els.tooltipCta.length; i++) { els.tooltipCta[i].addEventListener('click', function () { self.nextVideoPlay(i); }); } }, endCallback: function () { if (stepInfo[this.video.playIndex].tooltip == 'true') { this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); let nextPlayindex = this.video.playIndex + 1; if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]); } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.circleToSearchTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-circle-to-search-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); status.isKeydownTime = null; }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 200); }, click: function () { els.tooltipCta[0].addEventListener('mousedown', eventList.pressButton); els.tooltipCta[0].addEventListener('mouseup', function () { clearTimeout(status.mousedown); }); els.tooltipCta[0].addEventListener('touchstart', eventList.pressButton); els.tooltipCta[0].addEventListener('touchend', function () { clearTimeout(status.mousedown); }); els.tooltipCta[0].addEventListener('keydown', eventList.keydownButton); els.tooltipCta[1].addEventListener('click', function () { eventList.nextVideoPlay(2); }); }, pressButton: function (e) { e.preventDefault(); if (els.videos[2].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[2]]); } clearTimeout(status.mousedown); status.mousedown = setTimeout(() => { eventList.nextVideoPlay(1); }, 1000); }, keydownButton: function (e) { if (e.type == 'keydown' && e.keyCode != 13) return; if (status.isKeydownTime == null) { status.isKeydownTime = Date.now(); } else { let keyDownDuration = Date.now() - status.isKeydownTime; if (keyDownDuration >= 1000) { if (els.videos[2].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[2]]); } eventList.nextVideoPlay(1); status.isKeydownTime = null; } } }, endCallback: function () { let autoplay = this.video.playIndex == 0 || this.video.playIndex == 3; if (stepInfo[this.video.playIndex].tooltip == 'true') { this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (autoplay) { eventList.nextVideoPlay(this.video.playIndex); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); switch (this.video.playIndex) { case 2: videoLoader.setResponsiveMedia([els.videos[3], els.videos[4]]); break; default: break; } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.color = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}, status = {}, objs = {}; let activeClass = 'is-active'; let oldIndex = null; let currDevice = resize.checkResolution(); let prevDevice = null; const init = function () { els.section = document.querySelector('.highlights-color'); if (!!els.section) { setElements(); setStatus(); bindEvents(); } }; const setElements = function () { // topSwiper els.topSwiperWrap = els.section.querySelector('.highlights-color__carousel'); if (!!els.topSwiperWrap) { els.topSwiperSlides = els.topSwiperWrap.querySelectorAll('.highlights-color__carousel-slide'); if (els.topSwiperSlides.length > 1) { els.topSwiperContainer = els.section.querySelector('.highlights-color__carousel-container'); els.topSwiperNextArrow = els.topSwiperContainer.querySelector('.highlights-color__arrow--next'); els.topSwiperPrevArrow = els.topSwiperContainer.querySelector('.highlights-color__arrow--prev'); els.topSwiperPagination = els.section.querySelector('.highlights-color__pagination'); } } // colorchipSwiper els.colorchipWrap = els.section.querySelector('.highlights-color__tab-colors'); els.colorchipSwiperContainer = els.colorchipWrap.querySelector('.swiper-container'); els.colorchipSwiperArrowWrap = els.colorchipWrap.querySelector('.highlights-color__tab-navigation'); els.colorchipSwiperNextArrow = els.colorchipWrap.querySelector('.highlights-color__navigation-arrow--next'); els.colorchipSwiperPrevArrow = els.colorchipWrap.querySelector('.highlights-color__navigation-arrow--prev'); // colorchipItem els.colorchipItemWrap = els.section.querySelector('.highlights-color__tab'); els.colorchipItems = els.colorchipItemWrap.querySelectorAll('.highlights-color__tab-item'); els.colorchipBtns = els.colorchipItemWrap.querySelectorAll('.highlights-color__tab-button'); for (let i = 0; i < els.colorchipBtns.length; i++) { els.colorchipBtns[i].setAttribute('data-js-index', i); } // colorName els.colorNameWrap = els.section.querySelector('.highlights-color__tab-names'); els.colorNames = els.colorNameWrap.querySelectorAll('.highlights-color__tab-name'); // colorPanel els.panelWrap = els.section.querySelector('.highlights-color__tab-panel-group'); els.panels = els.panelWrap.querySelectorAll('.highlights-color__tab-panel'); // 360 Popup Btn els.popupBtn = els.section.querySelector('.common-cta-area button'); }; const setStatus = function () { status.isClick = false; // index status.targetIndex = null; status.oldColorIndex = null; }; const bindEvents = function () { resize.add(handlerList.onResize); setColorchipEvent(); if (!els.topSwiperWrap || (!!els.topSwiperWrap && (!!els.topSwiperSlides && els.topSwiperSlides.length < 2))) return; setTimeout(function () { window.addEventListener('scroll', handlerList.scroll); }, 1000); objList.setScene(); setSwiper.top(); els.topSwiperNextArrow.addEventListener('click', handlerList.onClickArrow); els.topSwiperNextArrow.addEventListener('keydown', handlerList.onClickArrow); els.topSwiperPrevArrow.addEventListener('click', handlerList.onClickArrow); els.topSwiperPrevArrow.addEventListener('keydown', handlerList.onClickArrow); }; const setColorchipEvent = function () { let colorchipSwiperLength = currDevice.indexOf('mobile') > -1 ? 5 : 7; if (els.colorchipBtns.length >= colorchipSwiperLength) { status.isLoop = true; oldIndex = els.colorchipBtns.length; if (els.colorchipSwiperArrowWrap.style.display == 'none') { els.colorchipSwiperArrowWrap.style.display = ''; } if (els.colorchipWrap.classList.contains('js-colorchip-static')) { els.colorchipWrap.classList.remove('js-colorchip-static'); } setSwiper.colorchip(); } else { status.isLoop = false; if (els.colorchipSwiperArrowWrap.style.display != 'none') { els.colorchipSwiperArrowWrap.style.display = 'none'; } if (!els.colorchipWrap.classList.contains('js-colorchip-static')) { els.colorchipWrap.classList.add('js-colorchip-static'); } if (objs.colorchipSwiper != null) { let realIndex = objs.colorchipSwiper.realIndex; if (!els.colorchipBtns[realIndex].classList.contains(activeClass)) { els.colorchipBtns[realIndex].classList.add(activeClass); els.colorchipBtns[realIndex].setAttribute('aria-selected', true); } swiperEvents.colorchip.destroy(); } let currentColorchip = els.colorchipItemWrap.querySelector(`.${activeClass}`); status.oldColorIndex = currentColorchip.getAttribute('data-js-index'); for (let i = 0; i < els.colorchipBtns.length; i++) { els.colorchipBtns[i].addEventListener('click', handlerList.onClickColorchip); els.colorchipItems[i].removeAttribute('tabindex'); els.colorchipItems[i].removeAttribute('aria-hidden'); } } }; const objList = { topSwiper: function () { if (objs.topSwiper == null) { objs.topSwiper = new Swiper(els.topSwiperContainer, { init: false, speed: 800, navigation: { nextEl: els.topSwiperNextArrow, prevEl: els.topSwiperPrevArrow, }, pagination: { el: els.topSwiperPagination, type: 'bullets', clickable: true, renderBullet: function () { return '
'; } }, slidesPerView: 'auto', centeredSlides: true, }); } }, colorchipSwiper: function () { if (objs.colorchipSwiper == null) { objs.colorchipSwiper = new Swiper(els.colorchipSwiperContainer, { init: false, navigation: { nextEl: els.colorchipSwiperNextArrow, prevEl: els.colorchipSwiperPrevArrow, }, slidesPerView: 'auto', centeredSlides: true, loop: true, speed: 300, touchRatio: 0, }); } }, setScene: function () { objs.topScene = SCROLLER({ trackElement: els.topSwiperContainer, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); } }; const setSwiper = { top: function () { objList.topSwiper(); objs.topSwiper.on('init', swiperEvents.top.init); objs.topSwiper.on('slideChange', swiperEvents.top.slideChange); objs.topSwiper.init(); }, colorchip: function () { objList.colorchipSwiper(); objs.colorchipSwiper.on('init', swiperEvents.colorchip.init); objs.colorchipSwiper.on('slideChange', swiperEvents.colorchip.slideChange); objs.colorchipSwiper.on('transitionEnd', swiperEvents.colorchip.transitionEnd); objs.colorchipSwiper.init(); els.loopColorchipBtns = els.section.querySelectorAll('.highlights-color__tab-button'); for (let i = 0; i < els.loopColorchipBtns.length; i++) { els.loopColorchipBtns[i].index = i; els.loopColorchipBtns[i].addEventListener('click', handlerList.onClickColorchip); } if (status.targetIndex != 0) status.targetIndex = 0; eventList.colorchip(); eventList.colorName(); eventList.panel(); } }; const swiperEvents = { top: { init: function () { let notification = this.el.querySelector('.swiper-notification'); let bullets = this.pagination.bullets; this.slides[this.activeIndex].style.transitionDuration = '0s'; setTimeout(() => { this.slides[this.activeIndex].style.transitionDuration = ''; }, 100); if (!!notification) this.el.removeChild(notification); accessibility.slide.top(objs.topSwiper); accessibility.pagination.tagging(bullets); accessibility.pagination.label(bullets); els.topSwiperPrevArrow.removeAttribute('aria-label'); els.topSwiperNextArrow.removeAttribute('aria-label'); setTimeout(function () { handlerList.scroll(); }, 900); status.isTest = false; for (let i = 0; i < bullets.length; i++) { bullets[i].removeAttribute('role'); bullets[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); objs.topSwiper.slideTo(i); }); } }, slideChange: function () { accessibility.slide.top(objs.topSwiper); accessibility.pagination.label(objs.topSwiper.pagination.bullets); } }, colorchip: { init: function () { let notification = this.el.querySelector('.swiper-notification'); if (!!notification) this.el.removeChild(notification); accessibility.slide.colorchip(objs.colorchipSwiper); els.colorchipSwiperPrevArrow.removeAttribute('aria-label'); els.colorchipSwiperNextArrow.removeAttribute('aria-label'); let cloneSlide = this.el.querySelectorAll('.swiper-slide-duplicate'); for (let i = 0; i < cloneSlide.length; i++) { let activeClone = cloneSlide[i].querySelector('.highlights-color__tab-button.is-active'); if (!!activeClone) activeClone.classList.remove('is-active'); } }, slideChange: function () { let activeIndex = this.activeIndex; let oldColor = els.loopColorchipBtns[oldIndex]; status.oldColorIndex = oldColor.getAttribute('data-js-index'); status.targetIndex = els.loopColorchipBtns[activeIndex].getAttribute('data-js-index'); eventList.colorchip(); eventList.colorName(); eventList.panel(); accessibility.slide.colorchip(objs.colorchipSwiper); eventList.setPopupBtnColor(els.panels[status.targetIndex]); oldIndex = activeIndex; }, transitionEnd: function () { if (status.isClick) status.isClick = false; }, destroy: function () { objs.colorchipSwiper.destroy(true); objs.colorchipSwiper = null; }, }, }; const handlerList = { scroll: function () { objs.topScene.trackAnimation(function () { if (this.wheelDirection == 'down' && this.progress > 45 && this.progress < 70) { if (objs.topSwiper != null) { objs.topSwiper.slideNext(); objs.topScene.destroy(); window.removeEventListener('scroll', handlerList.scroll); } } else if (this.wheelDirection == 'up' && this.progress < 50) { if (objs.topSwiper != null) { objs.topSwiper.slideNext(); objs.topScene.destroy(); window.removeEventListener('scroll', handlerList.scroll); } } }); }, onResize: function (currRes) { currDevice = currRes; if (currDevice !== prevDevice) { setColorchipEvent(); if (objs.colorchipSwiper != null) { accessibility.slide.colorchip(objs.colorchipSwiper); } prevDevice = currDevice; } }, onClickArrow: function (e) { status.isArrowClick = true; status.arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (objs.topSwiper.isBeginning && !objs.topSwiper.isEnd) { els.topSwiperPrevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.topSwiperNextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.topSwiperPrevArrow.style.display = ''; }, 400); } else if (!objs.topSwiper.isBeginning && objs.topSwiper.isEnd) { els.topSwiperNextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.topSwiperPrevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.topSwiperNextArrow.style.display = ''; }, 400); } } }, onClickColorchip: function () { status.isClick = true; let targetColor = this; if (status.isLoop) { if (targetColor.classList.contains('is-active')) return; eventList.slideTo(targetColor); } else { status.targetIndex = targetColor.getAttribute('data-js-index'); eventList.colorchip(); eventList.colorName(); eventList.panel(); status.oldColorIndex = status.targetIndex; } } }; const eventList = { colorchip: function () { let oldColor = els.colorchipItemWrap.querySelectorAll(`.${activeClass}`); let activeIndex = status.isLoop ? objs.colorchipSwiper.activeIndex : status.targetIndex; let targetColorchipBtns = status.isLoop ? els.loopColorchipBtns[activeIndex] : els.colorchipBtns[activeIndex]; if (!targetColorchipBtns.classList.contains(activeClass)) { for (let i = 0; i < oldColor.length; i++) { oldColor[i].classList.remove(activeClass); oldColor[i].setAttribute('aria-selected', false); } targetColorchipBtns.classList.add(activeClass); targetColorchipBtns.setAttribute('aria-selected', true); } }, colorName: function () { for (let i = 0; i < els.colorNames.length; i++) { if (els.colorNames[i].classList.contains(activeClass)) { els.colorNames[i].classList.remove(activeClass); } } if (!els.colorNames[status.targetIndex].classList.contains(activeClass)) { els.colorNames[status.targetIndex].classList.add(activeClass); } }, panel: function () { for (let i = 0; i < els.panels.length; i++) { if (els.panels[i].classList.contains(activeClass)) { els.panels[i].classList.remove(activeClass); els.panels[i].setAttribute('aria-hidden', true); } } if (!els.panels[status.targetIndex].classList.contains(activeClass)) { els.panels[status.targetIndex].classList.add(activeClass); els.panels[status.targetIndex].setAttribute('aria-hidden', false); els.popupBtn.setAttribute('data-model-color', els.panels[status.targetIndex].getAttribute('id')); } if (status.targetIndex != 0) { let targetPanelImgs = els.panels[status.targetIndex].querySelectorAll('img'); if (!targetPanelImgs[0].classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([targetPanelImgs[0]]); } if (!targetPanelImgs[1].classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([targetPanelImgs[1]]); } } }, slideTo: function (targetColor) { let self = objs.colorchipSwiper; let activeIndex = targetColor.index; objs.slideChangeTime = null; if (status.isClick) { let moveSize = oldIndex - activeIndex; if (moveSize > 0) { if (moveSize == 1) { objs.colorchipSwiper.slidePrev(); } else if (moveSize == 3) { objs.colorchipSwiper.slidePrev(0); objs.colorchipSwiper.slidePrev(0); self.slidePrev(); } else { objs.colorchipSwiper.slidePrev(0); self.slidePrev(); } } else { if (moveSize == -1) { objs.colorchipSwiper.slideNext(); } else if (moveSize == -3) { objs.colorchipSwiper.slideNext(0); objs.colorchipSwiper.slideNext(0); self.slideNext(); } else { objs.colorchipSwiper.slideNext(0); self.slideNext(); } } self.slides[self.activeIndex].querySelector('button').focus(); clearTimeout(objs.slideChangeTime); objs.slideChangeTime = setTimeout(function () { self.slides[self.activeIndex].querySelector('button').focus(); }, 200); status.isClick = false; } }, setPopupBtnColor: function (target) { els.popupBtn.setAttribute('data-model-color', target.getAttribute('id')); } }; const accessibility = { slide: { top: function (swiperObjs) { for (let i = 0; i < swiperObjs.slides.length; i++) { if (i != swiperObjs.activeIndex) { utils.onAccessibility(swiperObjs.slides[i]); } else { utils.offAccessibility(swiperObjs.slides[i]); } } }, colorchip: function (swiperObjs) { let isNotActivedColorchips = null; for (let i = 0; i < swiperObjs.slides.length; i++) { if (currDevice.indexOf('mobile') > -1) { isNotActivedColorchips = (i != swiperObjs.activeIndex) && (i > swiperObjs.activeIndex + 2) || (i < swiperObjs.activeIndex - 2) } else { isNotActivedColorchips = (i != swiperObjs.activeIndex) && (i > swiperObjs.activeIndex + 3) || (i < swiperObjs.activeIndex - 3) } if (isNotActivedColorchips) { utils.onAccessibility(swiperObjs.slides[i]); } else { utils.offAccessibility(swiperObjs.slides[i]); } } } }, pagination: { tagging: function (pagination) { const tagging = { 'data-omni-type': 'microsite_gallery', 'data-omni': 'galaxy-s24-ultra:highlights:design^colors:index:', 'ga-ca': 'gallery', 'ga-ac': 'feature gallery', 'ga-la': 'galaxy-s24-ultra:highlights:design^colors:index:' }; if (!!pagination) { for (let i = 0; i < pagination.length; i++) { Object.keys(tagging).forEach(key => { if (key == 'data-omni' || key == 'ga-la') { pagination[i].setAttribute(key, tagging[key] + (i + 1)); } else { pagination[i].setAttribute(key, tagging[key]); } }); } } }, label: function (bullets) { for (let i = 0; i < bullets.length; i++) { let isExclusive = objs.topSwiper.slides[i].getAttribute('data-colortype') == 'true' ? true : false; let slideName; if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { slideName = !!isExclusive ? LOCAL_VARI.exclusive : LOCAL_VARI.default; if (i === objs.topSwiper.realIndex) { bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName} ${LOCAL_VARI.selected.toLowerCase()}`); } else { bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName}`); } } else { slideName = !!isExclusive ? 'online exclusive color' : 'default color'; if (i === objs.topSwiper.realIndex) { bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName} selected`); } else { bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName}`); } } } }, } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.display = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let objs = {}; let status = {}; let currDevice = resize.checkResolution(); let prevDevice = null; const init = function () { els.section = document.querySelector('.highlights-display'); if (!!els.section) { setElements(); setStatus(); bindEvents(); } }; const setElements = function () { els.resizeTimeout = null; els.displayBarWrap = els.section.querySelector('.highlights-display__bar'); els.displayBar = els.displayBarWrap.querySelector('.bar'); els.displayImage = els.section.querySelector('.highlights-display__image'); els.displayCoverImage = els.section.querySelector('.highlights-display__cover'); els.isGrab = false; els.isAction = false; els.displayCoverLeftWrap = els.section.querySelector('.highlights-display__tap-left'); els.displayCoverLeftBtn = els.section.querySelector('.highlights-display__tap-left button'); els.displayCoverRightBtn = els.section.querySelector('.highlights-display__tap-right button'); els.controller = els.section.querySelector('.highlights-display__bar-controller'); els.imgWrap = els.section.querySelector('.highlights-display__image-inner'); els.tabWrap = els.section.querySelector('.highlights-display__tap-wrap'); maxPercent = currDevice.indexOf('mobile') > -1 ? 0.675 : 0.75; minPercent = currDevice.indexOf('mobile') > -1 ? 0.325 : 0.25; }; const setStatus = function () { status.isTabMove = false; }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', onLoadHandler, { once: true }); window.addEventListener('scroll', onScrollHandler); els.section.addEventListener('keydown', grabEventHandler.onMoveEvent); els.section.addEventListener('click', grabEventHandler.onMoveEvent); els.section.addEventListener('mousedown', grabEventHandler.onStart); els.section.addEventListener('mousemove', grabEventHandler.onMove); els.section.addEventListener('mouseup', grabEventHandler.onEnd); els.section.addEventListener('mouseleave', grabEventHandler.onEnd); els.section.addEventListener('touchstart', grabEventHandler.onStart); els.section.addEventListener('touchmove', grabEventHandler.onMove); els.section.addEventListener('touchend', grabEventHandler.onEnd); els.section.addEventListener('touchcancel', grabEventHandler.onEnd); resize.add(onResizeHandler); }; const setAnimations = function () { let minValue = currDevice.indexOf('mobile') > -1 ? 32.5 : 25; let maxValue = currDevice.indexOf('mobile') > -1 ? 67.5 : 75; TweenMax.set(els.displayBar, { left: `${minValue}%`, ease: Power2.easeOut }); TweenMax.set(els.displayCoverImage, { width: `${minValue}%`, ease: Power2.easeOut }); objs.barAnim = new TimelineLite(); objs.barAnim .to(els.displayBar, 1, { left: `${maxValue}%`, ease: Power2.easeOut }) .to(els.displayBar, 1, { left: 50 + '%', ease: Power2.easeOut }); objs.imgAnim = new TimelineLite(); objs.imgAnim .to(els.displayCoverImage, 1, { width: `${maxValue}%`, ease: Power2.easeOut }) .to(els.displayCoverImage, 1, { width: 50 + '%', ease: Power2.easeOut }); TweenMax.set(els.displayCoverLeftWrap, { width: `${minValue}%`, ease: Power2.easeOut }); objs.imgAnim = new TimelineLite(); objs.imgAnim .to(els.displayCoverLeftWrap, 1, { width: `${maxValue}%`, ease: Power2.easeOut }) .to(els.displayCoverLeftWrap, 1, { width: 50 + '%', ease: Power2.easeOut }); }; const onLoadHandler = function () { onScrollHandler(); }; const onResizeHandler = function (currRes) { currDevice = currRes; clearTimeout(els.resizeTimeout); els.resizeTimeout = setTimeout(function () { onScrollHandler(); }, 150); if (currDevice != prevDevice) { onResponsiveHandler(); prevDevice = currDevice; } }; const onResponsiveHandler = function () { maxPercent = currDevice.indexOf('mobile') > -1 ? 0.675 : 0.75; minPercent = currDevice.indexOf('mobile') > -1 ? 0.325 : 0.25; TweenMax.set(els.displayBar, { left: 50 + '%' }); TweenMax.set(els.displayCoverImage, { width: 50 + '%' }); TweenMax.set(els.displayCoverLeftWrap, { width: 50 + '%' }); }; const onScrollHandler = function () { let winOffsetTop = window.pageYOffset + utils.getNavHeight(); let winOffsetBottom = window.pageYOffset + window.innerHeight; let targetRect = els.displayImage.getBoundingClientRect(); let targetOffsetTop = window.pageYOffset + targetRect.top; let targetOffsetBottom = window.pageYOffset + targetRect.bottom; if ((winOffsetBottom - (window.innerHeight * 0.25) > targetOffsetTop && winOffsetTop + (window.innerHeight * 0.25) < targetOffsetBottom) && !els.isAction) { setAnimations(); els.isAction = true; } }; const grabEventHandler = { onStart: function (e) { e.target.matches('.highlights-display__bar-controller') && (els.isGrab = true); }, onEnd: function () { els.isGrab = false; }, onMove: function (e) { if (els.isGrab) { e && e.preventDefault(); let wrapRect = els.displayBarWrap.getBoundingClientRect(); let wrapMaxWidth = wrapRect.width * maxPercent; let wrapMinWidth = wrapRect.width * minPercent; let xPosition = !e.touches ? e.pageX : e.touches[0].pageX; let barPosition = xPosition - wrapRect.left; if (barPosition > wrapMaxWidth) barPosition = wrapMaxWidth; else if (barPosition < wrapMinWidth) barPosition = wrapMinWidth; let barPercent = ((barPosition / wrapRect.width) * 100); els.displayBar.style.left = barPercent + '%'; els.displayCoverImage.style.width = barPercent + '%'; grabEventHandler.setArrowSize(barPercent); } }, onMoveEvent: function (e) { let wrapRect = els.displayBarWrap.getBoundingClientRect(); let wrapMaxWidth = wrapRect.width * maxPercent; let wrapMinWidth = wrapRect.width * minPercent; let barRect = els.displayBar.getBoundingClientRect(); let barPosition = barRect.left - wrapRect.left; let moveValue = Math.ceil(wrapMaxWidth / ((currDevice.indexOf('desktop') > -1) ? 8 : 5.5)); let isMove = e.target.classList.contains('highlights-display__tap-button') || e.target.classList.contains('highlights-display__bar-controller'); if (isMove) { status.isTabMove = true; if (e.type == 'click' && e.target.classList.contains('highlights-display__tap-button')) { let leftBtn = 'highlights-display__tap-left'; let rightBtn = 'highlights-display__tap-right'; if (e.target.parentElement.classList.contains(leftBtn)) { barPosition -= moveValue; } else if (e.target.parentElement.classList.contains(rightBtn)) { barPosition += moveValue; } } if (e.target.classList.contains('highlights-display__bar-controller') && (e.keyCode == 39 || e.keyCode == 37)) { e && e.preventDefault(); if (e.keyCode == 39) barPosition += moveValue; else if (e.keyCode == 37) barPosition -= moveValue; } if (barPosition < wrapMinWidth) barPosition = wrapMinWidth; else if (barPosition > wrapMaxWidth) barPosition = wrapMaxWidth; let barPercent = ((barPosition / wrapRect.width) * 100); TweenMax.to(els.displayBar, 0.3, { left: barPercent + '%', ease: Power2.easeOut }); TweenMax.to(els.displayCoverImage, 0.3, { width: barPercent + '%', ease: Power2.easeOut }); grabEventHandler.setArrowSize(barPercent); } }, setArrowSize: function (barPercent) { let imgWidth = els.imgWrap.getBoundingClientRect().width; let tabWidth = els.tabWrap.getBoundingClientRect().width; let imgValue = imgWidth * (barPercent * (1 / 100)); let tabValue = (imgWidth - tabWidth) / 2; let moveTabBtnValue = Math.floor(imgValue - tabValue); if (status.isTabMove) { TweenMax.to(els.displayCoverLeftWrap, 0.3, { width: moveTabBtnValue + 'px', ease: Power2.easeOut }); status.isTabMove = false; } else { els.displayCoverLeftWrap.style.width = moveTabBtnValue + 'px'; } } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.experiences = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}, objs = {}, status = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.highlights-galaxy-offers'); if (!!els.section) { els.offersItems = els.section.querySelectorAll('.highlights-galaxy-offers__card-item'); if (!!els.offersItems && (els.offersItems.length > 1)) { setElements(); bindEvents(); } } }; const setElements = function () { els.swiperContainer = els.section.querySelector('.highlights-galaxy-offers__card-container'); els.nextArrow = els.section.querySelector('.highlights-galaxy-offers__arrow--next'); els.prevArrow = els.section.querySelector('.highlights-galaxy-offers__arrow--prev'); }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', handlerList.onLoad, { once: true }); resize.add(handlerList.onResize); els.nextArrow.addEventListener('click', swiperEvents.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvents.onClickArrow); els.prevArrow.addEventListener('click', swiperEvents.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvents.onClickArrow); }; const objList = { swiper: function () { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { init: false, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, loop: false, slidesPerView: 'auto', centeredSlides: false, }); } } }; const handlerList = { onLoad: function () { if (currDevice.indexOf('mobile') > -1) { setSwiper(); } }, onResize: function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { handlerList.onResponsive(); prevDevice = currDevice; } }, onResponsive: function () { if (currDevice.indexOf('mobile') > -1) { setSwiper(); } else { swiperEvents.destroy(); } } }; const setSwiper = function () { objList.swiper(); objs.swiper.on('init', swiperEvents.init); objs.swiper.on('slideChange', swiperEvents.slideChange); objs.swiper.init(); }; const swiperEvents = { init: function () { let notification = this.el.querySelector('.swiper-notification'); if (!!notification) this.el.removeChild(notification); accessibility.slide(); }, slideChange: function () { accessibility.slide(); }, destroy: function () { if (objs.swiper != null) { objs.swiper.navigation.destroy(true); objs.swiper.destroy(true); objs.swiper = null; } }, onClickArrow: function (e) { status.arrowTimeout = null; status.arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (objs.swiper.isBeginning && !objs.swiper.isEnd) { els.nextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.prevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.nextArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && objs.swiper.isEnd) { els.prevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.nextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.prevArrow.style.display = ''; }, 400); } } } }; const accessibility = { slide: function () { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } } }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.faq = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let objs = {}; let prevDevice = null; let currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.highlights-faq'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.faqList = els.section.querySelector('.highlights-faq__list'); }; const bindEvents = function () { resize.add(onResizeHandler); setAccordion(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { onResponsiveHandler(); prevDevice = currDevice; } }; const onResponsiveHandler = function () { let isOpenedItems = els.faqList.querySelectorAll('.highlights-faq__item.is-open'); if (isOpenedItems.length > 0) { for (let i = 0; i < isOpenedItems.length; i++) { let isOpenedItemContent = isOpenedItems[i].querySelector('.highlights-faq__answer'); let clientHeight = isOpenedItemContent.children[0].clientHeight; isOpenedItemContent.style.height = `${clientHeight}px`; } } }; const setAccordion = function () { objs.accordion = new window.flagship.common.accordion({ wrap: els.faqList, classList: { item: 'highlights-faq__item', button: 'highlights-faq__question-arrow', contents: 'highlights-faq__answer', activeClass: 'is-open' }, open: { start: function (target) { let targetInnerCta = target.querySelector('.highlights-faq__cta'); if (targetInnerCta) targetInnerCta.addEventListener('click', onClickFaqCta); } } }); objs.accordion.init(); }; const onClickFaqCta = function (e) { if (this.getAttribute('href').indexOf('#') == 0) { e.preventDefault(); let sectionId = this.getAttribute('href'); let section = document.querySelector(sectionId); let sectionTop = section.getBoundingClientRect().top; let movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(); let clickable = section.querySelectorAll('a, button'); let title = (sectionId == '#galaxy-ai') ? section.querySelector('.common-headline') : section.querySelector('h2'); if (title.classList.contains('common-display-mo')) { if (resize.checkResolution().indexOf('mobile') > -1) { title = section.querySelector('h2.common-display-mo'); } else { title = section.querySelector('h2.common-display-pc'); } } if (!!title) { let _focusOut = function () { title.removeAttribute('tabindex'); title.removeEventListener('focusout', _focusOut); }; title.addEventListener('focusout', _focusOut); title.setAttribute('tabindex', 0); title.focus(); } else { clickable[0].focus(); } window.scrollTo(0, movePosition); } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.gaming = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let objs = {}; let currDevice = resize.checkResolution(); let prevDevice = null; let maxPercent = 0.975; let minPercent = 0.018; const init = function () { els.section = document.querySelector('.highlights-gaming'); isRemaster = els.section.querySelector('.js-remaster'); if (!!els.section && !!isRemaster) { setElements(); bindEvents(); } }; const setElements = function () { els.resizeTimeout = null; els.gamingBarWrap = els.section.querySelector('.highlights-gaming__bar'); els.gamingBar = els.gamingBarWrap.querySelector('.bar'); els.gamingImage = els.section.querySelector('.highlights-gaming__image'); els.gamingCoverImage = els.section.querySelector('.highlights-gaming__cover'); els.isGrab = false; els.isAction = false; els.gamingCoverLeftWrap = els.section.querySelector('.highlights-gaming__tap-left'); els.gamingCoverLeftBtn = els.section.querySelector('.highlights-gaming__tap-left button'); els.gamingCoverRightBtn = els.section.querySelector('.highlights-gaming__tap-right button'); els.controller = els.section.querySelector('button.highlights-gaming__bar-controller'); }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', onLoadHandler, { once: true }); window.addEventListener('scroll', onScrollHandler); els.section.addEventListener('keydown', grabEventHandler.onMoveEvent); els.section.addEventListener('click', grabEventHandler.onMoveEvent); els.section.addEventListener('mousedown', grabEventHandler.onStart); els.section.addEventListener('mousemove', grabEventHandler.onMove); els.section.addEventListener('mouseup', grabEventHandler.onEnd); els.section.addEventListener('mouseleave', grabEventHandler.onEnd); els.section.addEventListener('touchstart', grabEventHandler.onStart); els.section.addEventListener('touchmove', grabEventHandler.onMove); els.section.addEventListener('touchend', grabEventHandler.onEnd); els.section.addEventListener('touchcancel', grabEventHandler.onEnd); resize.add(onResizeHandler); }; const setAnimations = function () { let minValue = 1.8; let maxValue = 97.5; TweenMax.set(els.gamingBar, { left: `${minValue}%`, ease: Power2.easeOut }); TweenMax.set(els.gamingCoverImage, { width: `${minValue}%`, ease: Power2.easeOut }); objs.barAnim = new TimelineLite(); objs.barAnim .to(els.gamingBar, 1, { left: `${maxValue}%`, ease: Power2.easeOut }) .to(els.gamingBar, 1, { left: 50 + '%', ease: Power2.easeOut }); objs.imgAnim = new TimelineLite(); objs.imgAnim .to(els.gamingCoverImage, 1, { width: `${maxValue}%`, ease: Power2.easeOut }) .to(els.gamingCoverImage, 1, { width: 50 + '%', ease: Power2.easeOut }); TweenMax.set(els.gamingCoverLeftWrap, { width: `${minValue}%`, ease: Power2.easeOut }); objs.imgAnim = new TimelineLite(); objs.imgAnim .to(els.gamingCoverLeftWrap, 1, { width: `${maxValue}%`, ease: Power2.easeOut }) .to(els.gamingCoverLeftWrap, 1, { width: 50 + '%', ease: Power2.easeOut }); }; const onLoadHandler = function () { onScrollHandler(); }; const onResizeHandler = function (currRes) { currDevice = currRes; clearTimeout(els.resizeTimeout); els.resizeTimeout = setTimeout(function () { onScrollHandler(); }, 150); if (currDevice != prevDevice) { prevDevice = currDevice; } }; const onScrollHandler = function () { let winOffsetTop = window.pageYOffset + utils.getNavHeight(); let winOffsetBottom = window.pageYOffset + window.innerHeight; let targetRect = els.gamingImage.getBoundingClientRect(); let targetOffsetTop = window.pageYOffset + targetRect.top; let targetOffsetBottom = window.pageYOffset + targetRect.bottom; if ((winOffsetBottom - (window.innerHeight * 0.25) > targetOffsetTop && winOffsetTop + (window.innerHeight * 0.25) < targetOffsetBottom) && !els.isAction) { setAnimations(); els.isAction = true; } }; const grabEventHandler = { onStart: function (e) { e.target.matches('.highlights-gaming__bar-controller') && (els.isGrab = true); }, onEnd: function () { els.isGrab = false; }, onMove: function (e) { if (els.isGrab) { e && e.preventDefault(); let wrapRect = els.gamingBarWrap.getBoundingClientRect(); let wrapMaxWidth = wrapRect.width * maxPercent; let wrapMinWidth = wrapRect.width * minPercent; let xPosition = !e.touches ? e.pageX : e.touches[0].pageX; let barPosition = xPosition - wrapRect.left; if (barPosition > wrapMaxWidth) barPosition = wrapMaxWidth; else if (barPosition < wrapMinWidth) barPosition = wrapMinWidth; let barPercent = ((barPosition / wrapRect.width) * 100); els.gamingBar.style.left = barPercent + '%'; els.gamingCoverImage.style.width = barPercent + '%'; els.gamingCoverLeftWrap.style.width = barPercent + '%'; } }, onMoveEvent: function (e) { let wrapRect = els.gamingBarWrap.getBoundingClientRect(); let wrapMaxWidth = wrapRect.width * maxPercent; let wrapMinWidth = wrapRect.width * minPercent; let barRect = els.gamingBar.getBoundingClientRect(); let barPosition = barRect.left - wrapRect.left; let moveValue = Math.ceil(wrapMaxWidth / ((currDevice.indexOf('desktop') > -1) ? 8 : 4)); let isMove = e.target.classList.contains('highlights-gaming__tap-button') || e.target.classList.contains('highlights-gaming__bar-controller'); if (isMove) { if (e.type == 'click' && e.target.classList.contains('highlights-gaming__tap-button')) { let leftBtn = 'highlights-gaming__tap-left'; let rightBtn = 'highlights-gaming__tap-right'; if (e.target.parentElement.classList.contains(leftBtn)) { barPosition -= moveValue; } else if (e.target.parentElement.classList.contains(rightBtn)) { barPosition += moveValue; } } if (e.target.classList.contains('highlights-gaming__bar-controller') && (e.keyCode == 39 || e.keyCode == 37)) { e && e.preventDefault(); if (e.keyCode == 39) barPosition += moveValue; else if (e.keyCode == 37) barPosition -= moveValue; } if (barPosition < wrapMinWidth) barPosition = wrapMinWidth; else if (barPosition > wrapMaxWidth) barPosition = wrapMaxWidth; let barPercent = ((barPosition / wrapRect.width) * 100); TweenMax.to(els.gamingBar, 0.3, { left: barPercent + '%', ease: Power2.easeOut }); TweenMax.to(els.gamingCoverImage, 0.3, { width: barPercent + '%', ease: Power2.easeOut }); TweenMax.to(els.gamingCoverLeftWrap, 0.3, { width: barPercent + '%', ease: Power2.easeOut }); } } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.liveTranslateTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-live-translate-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); els.muteCtas = els.section.querySelectorAll('.common-mute-button'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-play-button'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.videoMuteCta = el.querySelector('.common-mute-button'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('loadeddata', function () { this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videoList[index + 1].setAttribute('tabindex', 0); els.videoList[index + 1].focus(); els.videoList[index + 1].addEventListener('focusout', function () { let isTabindex = els.videoList[index + 1].getAttribute('tabindex'); if (!!isTabindex && isTabindex == 0) { els.videoList[index + 1].removeAttribute('tabindex'); } }); }, 200); }, click: function () { let self = this; els.tooltipCta[0].addEventListener('click', function () { self.nextVideoPlay(0); }); }, endCallback: function () { if (stepInfo[this.video.playIndex].tooltip == 'true') { if (!this.wrap.tooltipCta.classList.contains('is-bg-load-complete')) { this.wrap.tooltipCta.classList.add('is-bg-load-complete'); } this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } }, onClickMute: function () { for (let i = 0; i < els.muteCtas.length; i++) { els.muteCtas[i].video = els.muteCtas[i].parentElement.parentElement.video; els.muteCtas[i].addEventListener('click', function () { let isMute = this.video.muted; if (!!isMute) { this.classList.add('is-unmuted'); this.video.muted = false; this.blind.innerText = this.getAttribute('data-mute'); setTagging.mute(this); } else { this.classList.remove('is-unmuted'); this.video.muted = true; this.blind.innerText = this.getAttribute('data-unmute'); setTagging.unmute(this); } }); } }, setMuteBlindText: function () { for (let i = 0; i < els.muteCtas.length; i++) { els.muteCtas[i].blind = els.muteCtas[i].querySelector('.blind'); els.muteCtas[i].blind.innerText = els.muteCtas[i].getAttribute('data-unmute'); } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); utils.offAccessibility(this.wrap.videoMuteCta); if (this.video.playIndex == 0) { let self = this; clearTimeout(status.videoFocusTimeout); status.videoFocusTimeout = setTimeout(function () { self.wrap.videoMuteCta.focus(); status.videoFocusTimeout = null; }, 400); } if (!this.video.muted) { this.wrap.videoMuteCta.classList.remove('is-unmuted'); this.wrap.videoMuteCta.video.muted = true; this.wrap.videoMuteCta.blind.innerText = this.wrap.videoMuteCta.getAttribute('data-unmute'); setTagging.unmute(this.wrap.videoMuteCta); } this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } }, mute: function (targetCta) { if (targetCta.hasAttribute('data-omni')) { let dataOmni = targetCta.getAttribute('data-omni').toLowerCase(); targetCta.setAttribute('data-omni', dataOmni.replace('unmute', 'mute')); } if (targetCta.hasAttribute('ga-la')) { let gaLa = targetCta.getAttribute('ga-la').toLowerCase(); targetCta.setAttribute('ga-la', gaLa.replace('unmute', 'mute')); } }, unmute: function (targetCta) { if (targetCta.hasAttribute('data-omni')) { let dataOmni = targetCta.getAttribute('data-omni').toLowerCase(); targetCta.setAttribute('data-omni', dataOmni.replace('mute', 'unmute')); } if (targetCta.hasAttribute('ga-la')) { let gaLa = targetCta.getAttribute('ga-la').toLowerCase(); targetCta.setAttribute('ga-la', gaLa.replace('mute', 'unmute')); } }, }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.setMuteBlindText(); eventList.videoController(); eventList.click(); eventList.onClickMute(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.lowLightPopup = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let status = {}; const setPopupLazyLoader = { image: function () { objs.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-low-light-popup-img-src', responsiveClass: '.js-low-light-popup-res-img', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.popupBgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-low-light-popup-bg-img', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }, video: function () { objs.videoLoader = ANIUTIL.mediaLoader({ type: 'video', lazyClass: '.js-low-light-popup-video-src', responsiveClass: '.js-low-light-popup-res-video', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (video.videoWrap && !video.videoWrap.classList.contains('is-loaded')) { video.videoWrap.classList.add('is-loaded'); } } }); } }; const init = function () { els.section = document.querySelector('.highlights-low-light'); els.layerPopup = document.querySelector('.highlights-low-light-popup'); if (!!els.layerPopup) { setElements(); setStatus(); objList.setPopup(); bindEvents(); } }; const setElements = function () { status.isGlobal = document.documentElement.classList.contains('global'); els.contents = document.querySelector('#contents'); els.openCta = els.section.querySelector('.js-layer-popup'); els.innerWrap = els.layerPopup.querySelector('.common-popup__inner-wrapper'); els.closeCtas = els.layerPopup.querySelectorAll('.common-popup__close-cta'); els.dimmed = els.layerPopup.querySelector('.common-popup__dimmed'); els.supClicker = els.layerPopup.querySelectorAll('a.click_sup'); els.videoWrap = els.layerPopup.querySelector('.common-video'); els.videoWrap.video = els.videoWrap.querySelector('.common-video__video'); els.videoWrap.controller = els.videoWrap.querySelector('.common-video__control'); els.videoWrap.controller.video = els.videoWrap.video; els.hashPopupOpener = null; }; const setStatus = function () { status.isHash = false; }; const bindEvents = function () { els.videoWrap.controller.addEventListener('click', handlerList.videoCta); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', handlerList.onClickSup); } }; const objList = { setPopup: function () { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.highlights-low-light-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCtas[0], els.closeCtas[1]], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.innerWrap.scrollTop = 0; els.layerPopup.classList.add('is-init'); target.openerCta.blur(); setPopupLazyLoader.image(); setPopupLazyLoader.video(); objList.setVideo(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { status.isHash = true; els.hashPopupOpener = els.openCta; } }, end: function () { if (utils.detector.isIosDevice) els.layerPopup.style.display = 'block'; els.layerPopup.classList.add('is-open'); } }, hide: { start: function (target) { target.openerCta.focus(); els.layerPopup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); els.videoWrap.video.pause(); els.videoWrap.video.currentTime = 0; if (status.isHash && els.hashPopupOpener) { els.hashPopupOpener.focus(); setTimeout(function () { els.hashPopupOpener.focus(); status.isHash = false; els.hashPopupOpener = null; }, 300); } } } }); }, setVideo: function () { objs.video = ANIUTIL.videoHandler({ wrap: els.videoWrap, video: els.videoWrap.video, controller: els.videoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }; const handlerList = { videoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }, onClickSup: function (e) { e.preventDefault(); e.stopPropagation(); els.layerPopup.hide(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.lowLight = (function () { let els = {}; let objs = {}; let status = {}; const utils = window.flagship.common.utils; const init = function () { els.section = document.querySelector('.highlights-low-light'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.swiperContainer = els.section.querySelector('.highlights-low-light__carousel'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.pagination = els.section.querySelector('.highlights-low-light__carousel-pagination'); }; const bindEvents = function () { setSwiper(); els.nextArrow.addEventListener('click', swiperEvents.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvents.onClickArrow); els.prevArrow.addEventListener('click', swiperEvents.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvents.onClickArrow); }; const setSwiper = function () { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { init: false, slidesPerView: 'auto', speed: 800, navigation: { prevEl: els.prevArrow, nextEl: els.nextArrow, }, pagination: { el: els.pagination, type: 'bullets', clickable: true, renderBullet: function () { return '
'; } } }); }; objs.swiper.on('init', swiperEvents.init); objs.swiper.on('slideChange', swiperEvents.slideChange); objs.swiper.init(); }; const swiperEvents = { init: function () { let notification = this.el.querySelector('.swiper-notification'); els.bullets = this.pagination.bullets; if (!!notification) this.el.removeChild(notification); accessibility.slide(); accessibility.pagination.tagging(); accessibility.pagination.label(); els.nextArrow.removeAttribute('aria-label'); els.prevArrow.removeAttribute('aria-label'); for (let i = 0; i < els.bullets.length; i++) { els.bullets[i].removeAttribute('role'); els.bullets[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); objs.swiper.slideTo(i); }); } }, slideChange: function () { accessibility.slide(); accessibility.pagination.label(); }, onClickArrow: function (e) { status.arrowTimeout = null; status.arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (objs.swiper.isBeginning && !objs.swiper.isEnd) { els.prevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.nextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.prevArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && objs.swiper.isEnd) { els.nextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.prevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.nextArrow.style.display = ''; }, 400); } } } }; const accessibility = { slide: function () { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } }, pagination: { tagging: function () { const tagging = { 'data-omni-type': 'microsite_gallery', 'data-omni': 'galaxy-s24-ultra:highlights:camera^zoom:index:', 'ga-ca': 'gallery', 'ga-ac': 'feature gallery', 'ga-la': 'galaxy-s24-ultra:highlights:camera^zoom:index:', }; for (let i = 0; i < els.bullets.length; i++) { Object.keys(tagging).forEach(key => { if (key == 'data-omni' || key == 'ga-la') { els.bullets[i].setAttribute(key, tagging[key] + (i + 1)); } else { els.bullets[i].setAttribute(key, tagging[key]); } }); } }, label: function () { for (let i = 0; i < els.bullets.length; i++) { let slideName = objs.swiper.slides[i].getAttribute('data-slide-name'); if (i === objs.swiper.realIndex) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { els.bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName} ${LOCAL_VARI.selected.toLowerCase()}`); } else { els.bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName} selected`); } } else { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { els.bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName}`); } else { els.bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName}`); } } } }, } }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.overview = (() => { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let objs = {}; let eventFnc = {}; let statusClass = { progress: { active: 'js-progress-active', pause: 'js-progress-pause' }, video: { load: 'is-loaded', complete: 'is-video-load-complete' }, navigation: 'is-active', info: { visible: 'is-visible', active: 'is-active' }, }; let status = { currentDevice: resize.checkResolution(), isAuto: true, isClickControl: false, }; const init = () => { els.section = document.querySelector('.highlights-overview'); if (!!els.section) { setElements(); setProperty(); objList.setScene(); bindEvents(); } }; const setElements = () => { els.sectionInner = els.section.querySelector('.common-inner'); els.overviewContents = els.section.querySelector('.highlights-overview__contents') els.swiperContainer = els.section.querySelector('.js-overview-carousel'); els.slides = els.section.querySelectorAll('.highlights-overview__carousel-slide'); els.videoWrap = els.section.querySelectorAll('.common-video'); els.videos = els.section.querySelectorAll('.common-video__video'); els.videoControlCta = els.section.querySelectorAll('.common-video__control'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.progressWrap = els.section.querySelectorAll('.js-progress-wrap'); els.progressBar = els.section.querySelectorAll('.js-progress-bar'); els.navigationWrap = els.section.querySelector('.highlights-overview__navigation'); els.navigationInner = els.navigationWrap.querySelector('.highlights-overview__navigation-inner'); els.navigationList = els.navigationWrap.querySelectorAll('.highlights-overview__navigation-listitem'); els.navigationBtn = els.navigationWrap.querySelectorAll('.highlights-overview__navigation-button-wrap'); els.infoItem = els.section.querySelectorAll('.highlights-overview__info-item'); els.featureCtas = els.section.querySelectorAll('a.common-cta-encased'); els.sup = els.section.querySelectorAll('a.click_sup'); // tutorial els.tutorialOpenCtas = els.section.querySelectorAll('.js-tutorial-popup'); els.tutorialCloseCtas = document.querySelectorAll('.common-tutorial__close-cta'); }; const setProperty = () => { status.navSlideWrapWidth = els.navigationWrap.clientWidth; status.isRtl = document.documentElement.classList.contains('rtl'); for (let i = 0; i < els.videos.length; i++) { els.videos[i].controlCta = els.videoControlCta[i]; els.videos[i].wrap = els.videoWrap[i]; els.videoControlCta[i].video = els.videos[i]; } for (let j = 0; j < els.navigationBtn.length; j++) { els.navigationBtn[j].index = j; els.navigationBtn[j].img = els.navigationBtn[j].querySelectorAll('.highlights-overview__navigation-button-image img'); els.navigationBtn[j].img[0].parentWrap = els.navigationBtn[j]; els.navigationBtn[j].img[1].parentWrap = els.navigationBtn[j]; els.navigationBtn[j].text = els.navigationBtn[j].querySelector('.highlights-overview__navigation-button-text'); els.navigationBtn[j].text.parentWrap = els.navigationBtn[j]; els.navigationBtn[j].addEventListener('keydown', eventList.onClickNavigation); } }; const objList = { setSwiper: () => { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, init: false, speed: 500, }); objs.swiper.currentIndex = 0; objs.swiper.on('init', function () { let notification = this.el.querySelector('.swiper-notification'); this.el.removeChild(notification); els.nextArrow.removeAttribute('aria-label'); els.prevArrow.removeAttribute('aria-label'); objList.setVideo(); eventList.setVideoController(); eventList.scroll(); eventList.animationEnd(); accessibility.slide(); accessibility.setTitle(); }); objs.swiper.on('slideChange', swiperEvent.slideChange); objs.swiper.on('transitionEnd', swiperEvent.transitionEnd); objs.swiper.on('touchMove', swiperEvent.touchMove); objs.swiper.on('touchEnd', swiperEvent.touchEnd); objs.swiper.init(); } }, setVideo: () => { for (let i = 0; i < els.slides.length; i++) { let isSlide = els.slides[i]; let isVideoWrap = isSlide.querySelector('.common-video'); let isVideo = isSlide.querySelector('.common-video__video'); objs[`video_${i}`] = ANIUTIL.videoHandler({ playType: 'scrollPlay', wrap: isVideoWrap, video: isVideo, controller: isVideo.controlCta, startPoint: resize.checkResolution().indexOf('mobile') > -1 ? 25 : 35, reversePoint: resize.checkResolution().indexOf('mobile') > -1 ? 75 : 80, playCallback: function () { status.isAuto = true; if (!!!els.progressBar[i].style['animation-duration']) els.progressBar[i].style['animation-duration'] = `${isVideo.duration}s`; els.progressWrap[i].classList.remove(statusClass.progress.pause); if (isVideo.currentTime == 0) els.progressWrap[i].classList.remove(statusClass.progress.active); setTimeout(() => { els.progressWrap[i].classList.add(statusClass.progress.active); }, 20); accessibility.setTagging.pause(isVideo.controlCta); }, pauseCallback: function () { status.isAuto = false; setTimeout(() => { els.progressWrap[i].classList.add(statusClass.progress.pause); }, 100); accessibility.setTagging.play(isVideo.controlCta); }, endCallback: function () { if (!isVideoWrap.classList.contains('is-completed')) isVideoWrap.classList.add('is-completed'); status.isAuto = true; }, resetCallback: function () { setTimeout(() => { els.progressWrap[i].classList.remove(statusClass.progress.pause); els.progressWrap[i].classList.remove(statusClass.progress.active); }, 100); } }); } }, setScene: () => { objs.scene = SCROLLER({ trackElement: els.overviewContents, useFixed: false }); }, setNavSwiper: () => { if (objs.navSwiper == null) { objs.navSwiper = new Swiper(els.navigationWrap, { init: false, slidesPerView: 'auto', }); objs.navSwiper.on('init', function () { let notification = this.el.querySelector('.swiper-notification'); this.el.removeChild(notification); }); objs.navSwiper.on('touchMove', swiperEvent.checkScrollEnd); objs.navSwiper.init(); } } }; const bindEvents = () => { objList.setSwiper(); window.addEventListener('scroll', eventList.scroll); els.navigationWrap.addEventListener('click', eventList.onClickNavigation); els.nextArrow.addEventListener('click', swiperEvent.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvent.onClickArrow); els.prevArrow.addEventListener('click', swiperEvent.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvent.onClickArrow); swiperEvent.navInitCheck(); for (let i = 0; i < els.featureCtas.length; i++) { els.featureCtas[i].addEventListener('click', eventList.clickFeatureCta); } // tutorial for (let j = 0; j < els.tutorialOpenCtas.length; j++) { els.tutorialOpenCtas[j].addEventListener('click', eventList.clickTutorialOpenCta); } // tutorial close for (let i = 0; i < els.tutorialCloseCtas.length; i++) { els.tutorialCloseCtas[i].addEventListener('click', function () { if (!status.activeVideoPaused) status.activeVideo.play(); }) } for (let i = 0; i < els.sup.length; i++) { els.sup[i].addEventListener('click', function () { status.isAuto = false; }); } resize.add(eventList.onResize); }; const swiperEvent = { slideChange: () => { let activeIndex = objs.swiper.activeIndex; let currentIndex = objs.swiper.currentIndex; let slideLength = objs.swiper.slides.length; let loadIndex = activeIndex == slideLength - 1 ? 0 : activeIndex; let loadVideoLength = els.section.querySelectorAll(`.${statusClass.video.load}`).length; let allSlideloadComplete = els.videos.length == loadVideoLength; let nextIndex = (objs.swiper.activeIndex < objs.swiper.slides.length - 1) ? (objs.swiper.activeIndex + 1) : 0; if (!allSlideloadComplete && els.videos.length > loadIndex) { if (!els.videos[activeIndex].classList.contains(statusClass.video.complete)) { videoLoader.setResponsiveMedia([els.videos[activeIndex]]); els.videoWrap[activeIndex].classList.add(statusClass.video.load); } if (!els.videos[nextIndex].classList.contains(statusClass.video.complete)) { videoLoader.setResponsiveMedia([els.videos[nextIndex]]); els.videoWrap[nextIndex].classList.add(statusClass.video.load); } } if (currentIndex != activeIndex) { objs[`video_${currentIndex}`].eventList.reset.call(objs[`video_${currentIndex}`]); objs[`video_${currentIndex}`].video.removeEventListener('canplay', objs[`video_${currentIndex}`].video.play); if (!!utils.isLowNetwork() || !status.isAuto) { els.progressWrap[currentIndex].classList.remove(statusClass.progress.active); els.progressWrap[activeIndex].classList.remove(statusClass.progress.pause); } else { els.progressWrap[currentIndex].classList.remove(statusClass.progress.active); if (objs[`video_${activeIndex}`] != undefined && objs[`video_${activeIndex}`].video.readyState >= 4) { objs[`video_${activeIndex}`].video.play(); } else { objs[`video_${activeIndex}`].video.addEventListener('canplay', function () { this.play(); }); } } if (!els.navigationBtn[activeIndex].classList.contains(statusClass.navigation)) { els.navigationBtn[currentIndex].classList.remove(statusClass.navigation); els.navigationBtn[activeIndex].classList.add(statusClass.navigation); accessibility.setTitle(); } if (!els.infoItem[activeIndex].classList.contains(statusClass.info.visible)) { els.infoItem[currentIndex].classList.remove(statusClass.info.visible); els.infoItem[activeIndex].classList.add(statusClass.info.visible); } if (!els.infoItem[activeIndex].classList.contains(statusClass.info.active)) { els.infoItem[currentIndex].classList.remove(statusClass.info.active); els.infoItem[activeIndex].classList.add(statusClass.info.active); } } if (objs.navSwiper != null) swiperEvent.setNavSwiperXvalue(activeIndex); accessibility.slide(); objs.swiper.currentIndex = activeIndex; }, transitionEnd: function () { if (!!status.isClickControl) return; objs[`video_${objs.swiper.activeIndex}`].video.controlCta.focus(); }, touchMove: function () { objs.swiper.off('transitionEnd', swiperEvent.transitionEnd); }, touchEnd: function () { objs.swiper.on('transitionEnd', swiperEvent.transitionEnd); }, onClickArrow: (e) => { status.arrowTimeout = null; status.arrowStyleTimeout = null; status.accessibilityTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); status.isClickControl = true; if (objs.swiper.isBeginning && !objs.swiper.isEnd) { els.prevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.nextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.prevArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && objs.swiper.isEnd) { els.nextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.prevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.nextArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && !objs.swiper.isEnd) { let target = e.target.classList.contains('swiper-button-next') ? els.nextArrow : els.prevArrow; let noTarget = target.classList.contains('swiper-button-next') ? els.prevArrow : els.nextArrow; objs.swiper.slides[objs.swiper.activeIndex].setAttribute('tabindex', -1); objs.swiper.slides[objs.swiper.activeIndex].setAttribute('aria-hidden', true); noTarget.setAttribute('tabindex', -1); noTarget.setAttribute('aria-hidden', true); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { target.focus(); }, 300); clearTimeout(status.accessibilityTimeout); status.accessibilityTimeout = setTimeout(function () { objs.swiper.slides[objs.swiper.activeIndex].removeAttribute('tabindex'); objs.swiper.slides[objs.swiper.activeIndex].removeAttribute('aria-hidden'); noTarget.removeAttribute('tabindex'); noTarget.removeAttribute('aria-hidden'); }, 400); } eventList.animationEndDestroy(); } }, navInitCheck: () => { let wrapPadding = parseInt(window.getComputedStyle(els.sectionInner).paddingLeft) * 2; let getComputedStyle = window.getComputedStyle(els.navigationList[0]); let navMargin = !!status.isRtl ? parseInt(getComputedStyle.marginLeft) : parseInt(getComputedStyle.marginRight); let navSlideWidth = els.navigationList[0].clientWidth; let slideWrapWidth = (navSlideWidth * els.navigationList.length) + (navMargin * (els.navigationList.length - 1)); status.navSwiperPadding = (status.navSlideWrapWidth - slideWrapWidth) / 2; let contentsWidth = els.sectionInner.clientWidth - wrapPadding - status.navSwiperPadding; status.isNavInit = (status.currentDevice.indexOf('mobile') > -1 && contentsWidth <= slideWrapWidth) || els.navigationList.length > 4; if (!!status.isNavInit) { objList.setNavSwiper(); } else { swiperEvent.destroy(); } }, setNavSwiperXvalue: (activeIndex) => { if (activeIndex === 0 || activeIndex === 1) { status.xValue = 0; } else if (activeIndex > 1) { if ((status.navSwiperPadding * 2) < 0) { status.xValue = (status.navSlideWrapWidth - els.navigationInner.clientWidth) + Math.abs((status.navSwiperPadding * 2)); } else { status.xValue = status.navSlideWrapWidth - els.navigationInner.clientWidth; } } if (!status.isRtl) els.navigationInner.style.transform = `translate3d(-${status.xValue}px, 0px, 0px)`; else els.navigationInner.style.transform = `translate3d(${status.xValue}px, 0px, 0px)`; swiperEvent.checkScrollEnd(); }, checkScrollEnd: () => { if (!status.isRtl) { if (objs.navSwiper.getTranslate() < 0) els.navigationWrap.classList.add('is-scroll-end'); else els.navigationWrap.classList.remove('is-scroll-end'); } else { if (objs.navSwiper.getTranslate() < 0) els.navigationWrap.classList.remove('is-scroll-end'); else els.navigationWrap.classList.add('is-scroll-end'); } }, destroy: () => { if (objs.navSwiper != null) { objs.navSwiper.destroy(true); objs.navSwiper = null; } } } const eventList = { setVideoController: () => { for (let i = 0; i < els.videoControlCta.length; i++) { els.videoControlCta[i].addEventListener('click', function () { let isVideo = this.video; if (isVideo.paused) { isVideo.play(); } else { isVideo.pause(); } }); } }, scroll: () => { objs.scene.trackAnimation(function () { objs[`video_${objs.swiper.activeIndex}`].scrollActive(this.progress); }); }, animationEnd: () => { eventFnc.animationEnd = {}; if (!!utils.isLowNetwork()) return; for (let i = 0; i < els.progressBar.length; i++) { eventFnc.animationEnd[i] = function () { if (objs.swiper.activeIndex == (objs.swiper.slides.length - 1)) { status.isAuto = false; els.progressBar[i].removeEventListener('animationend', eventFnc.animationEnd[i]); } else { setTimeout(() => { if (!status.isAuto) return; objs.swiper.slideNext(500); els.progressBar[i].removeEventListener('animationend', eventFnc.animationEnd[i]); }, 800); } }; els.progressBar[i].addEventListener('animationend', eventFnc.animationEnd[i]); } }, animationEndDestroy: () => { for (let i = 0; i < els.progressBar.length; i++) { els.progressBar[i].removeEventListener('animationend', eventFnc.animationEnd[i]); } }, onClickNavigation: (e) => { if (e.target.classList.contains('swiper-wrapper') || (e.type == 'keydown' && e.keyCode != 13)) return; let oldTarget = els.navigationWrap.querySelector(`.${statusClass.navigation}`); let targetMatches = e.target.matches('.highlights-overview__navigation-button-image img') || e.target.matches('.highlights-overview__navigation-button-text'); if (targetMatches) { currentTarget = e.target.parentWrap; } else if (e.target.classList.contains('highlights-overview__navigation-button')) { currentTarget = e.target.parentElement; } if (!currentTarget.classList.contains(statusClass.navigation)) { oldTarget.classList.remove(statusClass.navigation); currentTarget.classList.add(statusClass.navigation); objs.swiper.slideTo(currentTarget.index, 500, false); accessibility.setTitle(); } status.isClickControl = true; eventList.animationEndDestroy(); }, clickFeatureCta: (e) => { e.preventDefault(); let target = e.target.matches('.common-cta-encased__text') ? e.target.parentElement : e.target; let sectionId = target.getAttribute('href'); let section = document.querySelector(sectionId); let sectionTop = section.getBoundingClientRect().top; let movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(); let clickable = section.querySelectorAll('a, button'); let title = section.querySelector('h2.common-sub-headline'); if (title.classList.contains('common-display-mo')) { if (resize.checkResolution().indexOf('mobile') > -1) { title = section.querySelector('h2.common-sub-headline.common-display-mo'); } else { title = section.querySelector('h2.common-sub-headline.common-display-pc'); } } if (!!title) { let _focusOut = function () { title.removeAttribute('tabindex'); title.removeEventListener('focusout', _focusOut); }; title.addEventListener('focusout', _focusOut); title.setAttribute('tabindex', 0); title.focus(); } else { clickable[0].focus(); } window.scrollTo(0, movePosition); }, onResize: function (currRes) { status.currentDevice = currRes; status.navSlideWrapWidth = els.navigationWrap.clientWidth; swiperEvent.navInitCheck(); }, clickTutorialOpenCta: function () { let hash = this.getAttribute('data-hash'); let tutorialPopup = document.querySelector(`#${hash}`); let tutorialPopupList = document.querySelectorAll('.common-tutorial'); if (tutorialPopup) { status.isAuto = false; status.activeVideo = objs[`video_${objs.swiper.activeIndex}`].video; status.activeVideoPaused = status.activeVideo.paused; tutorialPopup.show(); if (utils.detector.isIosDevice || utils.detector.isTouchDevice) this.blur(); else this.focus(); for (let i = 0; i < tutorialPopupList.length; i++) { tutorialPopupList[i].isOverview = true; tutorialPopupList[i].overviewCta = this; } } }, }; const accessibility = { slide: () => { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } }, setTitle: () => { for (let i = 0; i < els.navigationBtn.length; i++) { let button = els.navigationBtn[i].querySelector('button'); button.removeAttribute('title'); if (i == objs.swiper.activeIndex) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { button.setAttribute('title', LOCAL_VARI.selected); } else { button.setAttribute('title', 'Selected'); } } } }, setTagging: { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.quadTelPopup = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let status = {}; let currDevice = resize.checkResolution(); let prevDevice = null; const setPopupLazyLoader = { image: function () { objs.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-quad-telephoto-popup-img-src', responsiveClass: '.js-quad-telephoto-popup-res-img', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.popupBgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-quad-telephoto-popup-bg-img', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }, video: function () { objs.videoLoader = ANIUTIL.mediaLoader({ type: 'video', lazyClass: '.js-quad-telephoto-popup-video-src', responsiveClass: '.js-quad-telephoto-popup-res-video', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (video.videoWrap && !video.videoWrap.classList.contains('is-loaded')) { video.videoWrap.classList.add('is-loaded'); } } }); } }; const init = function () { els.section = document.querySelector('.highlights-quad-telephoto'); els.layerPopup = document.querySelector('.highlights-quad-telephoto-popup'); if (!!els.layerPopup) { setElements(); setStatus(); objList.setPopup(); bindEvents(); } }; const setElements = function () { status.isGlobal = document.documentElement.classList.contains('global'); els.innerWrap = els.layerPopup.querySelector('.common-popup__inner-wrapper'); els.contents = document.querySelector('#contents'); els.openCta = els.section.querySelector('.js-layer-popup'); els.closeCtas = els.layerPopup.querySelectorAll('.common-popup__close-cta'); els.dimmed = els.layerPopup.querySelector('.common-popup__dimmed'); els.supClicker = els.layerPopup.querySelectorAll('a.click_sup'); els.scrollVideoWrap = els.layerPopup.querySelector('.common-video.js-scroll-video'); els.scrollVideoWrap.video = els.scrollVideoWrap.querySelector('.common-video__video'); els.scrollVideoWrap.controller = els.scrollVideoWrap.querySelector('.common-video__control'); els.scrollVideoWrap.controller.video = els.scrollVideoWrap.video; els.hashPopupOpener = null; }; const setStatus = function () { status.isHash = false; }; const bindEvents = function () { resize.add(handlerList.onResize); els.innerWrap.addEventListener('scroll', handlerList.scroll); els.scrollVideoWrap.controller.addEventListener('click', handlerList.videoCta); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', handlerList.onClickSup); } }; const objList = { setPopup: function () { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.highlights-quad-telephoto-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCtas[0], els.closeCtas[1]], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.innerWrap.scrollTop = 0; els.layerPopup.classList.add('is-init'); target.openerCta.blur(); setPopupLazyLoader.image(); setPopupLazyLoader.video(); objList.setVideo(); objList.setScene(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { status.isHash = true; els.hashPopupOpener = els.openCta; } setTimeout(function () { handlerList.scroll(); }, 300); }, end: function () { if (utils.detector.isIosDevice) els.layerPopup.style.display = 'block'; els.layerPopup.classList.add('is-open'); } }, hide: { start: function (target) { target.openerCta.focus(); els.layerPopup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); els.scrollVideoWrap.video.pause(); els.scrollVideoWrap.video.currentTime = 0; if (status.isHash && els.hashPopupOpener) { els.hashPopupOpener.focus(); setTimeout(function () { els.hashPopupOpener.focus(); status.isHash = false; els.hashPopupOpener = null; }, 300); } } } }); }, setVideo: function () { objs.scrollVideo = ANIUTIL.videoHandler({ playType: 'scrollPlay', startPoint: (currDevice.indexOf('mobile') > -1) ? 15 : 30, reversePoint: (currDevice.indexOf('mobile') > -1) ? 40 : 55, wrap: els.scrollVideoWrap, video: els.scrollVideoWrap.video, controller: els.scrollVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); }, setScene: function () { objs.scene = SCROLLER({ trackElement: els.scrollVideoWrap.video, innerScroll: { use: true, wrap: els.layerPopup }, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); } }; const handlerList = { scroll: function () { objs.scene.trackAnimation(function () { objs.scrollVideo.scrollActive(this.progress); }); }, onResize: function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { els.scrollVideoWrap.video.pause(); els.scrollVideoWrap.video.currentTime = 0; setTimeout(() => { objList.setVideo(); }, 300); prevDevice = currDevice; } }, videoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }, onClickSup: function (e) { e.preventDefault(); e.stopPropagation(); els.layerPopup.hide(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.quadTelephoto = (function () { let els = {}; let objs = {}; const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let activeClass = 'is-active'; const init = function () { els.section = document.querySelector('.highlights-quad-telephoto'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.swiperContainer = els.section.querySelector('.highlights-quad-telephoto__zoom-image-wrap'); els.zoomCtaList = els.section.querySelector('.highlights-quad-telephoto__zoom-button-list'); els.zoomCta = els.section.querySelectorAll('.highlights-quad-telephoto__zoom-button'); els.tooltip = els.section.querySelector('.highlights-quad-telephoto__zoom-tooltip'); }; const objList = { setScene: function () { objs.scene = SCROLLER({ trackElement: els.section, useFixed: false }); }, setSwiper: function () { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { init: false, }); objs.swiper.on('init', swiperEvents.init); objs.swiper.on('slideChange', swiperEvents.slideChange); objs.swiper.init(); } } }; const bindEvents = function () { objList.setSwiper(); els.zoomCtaList.addEventListener('click', handlerList.onClickZoomCta); els.section.addEventListener('keydown', handlerList.onClickZoomCta); objList.setScene(); window.addEventListener('scroll', handlerList.scroll); handlerList.scroll(); }; const handlerList = { scroll: function () { objs.scene.trackAnimation(function () { let startProgress = resize.checkResolution() == 'desktop' ? 50 : 35; if (this.progress > startProgress && this.progress < 70) { let speed = 1000; objs.swiper.slideTo(1, 800); setTimeout(() => { objs.swiper.slideTo(2, 800); }, speed); setTimeout(() => { objs.swiper.slideTo(3, 800); }, speed * 2); setTimeout(() => { objs.swiper.slideTo(4, 800); }, speed * 3); setTimeout(() => { objs.swiper.slideTo(5, 800); }, speed * 4); setTimeout(() => { objs.swiper.slideTo(1, false); }, 5500); setTimeout(() => { els.tooltip.removeAttribute('aria-hidden'); TweenMax.to(els.tooltip, 0.4, { opacity: 1 }); }, 6000); window.removeEventListener('scroll', handlerList.scroll); } }); }, onClickZoomCta: function (e) { if (e.type == 'keydown' && e.keyCode != 13) return; let isZoomCta = e.target.classList.contains('highlights-quad-telephoto__zoom-button-title') ? e.target.parentElement : e.target; let isIndex = isZoomCta.getAttribute('data-index'); if (!els.tooltip.classList.contains('is-hide')) { TweenMax.to(els.tooltip, 0.4, { opacity: 0, ease: 'linear', onComplete: function () { els.tooltip.style.display = 'none'; els.tooltip.setAttribute('aria-hidden', 'true'); } }); els.tooltip.classList.add('is-hide'); } if (!isZoomCta.parentElement.classList.contains(activeClass)) { isZoomCta.parentElement.classList.add(activeClass); objs.swiper.slideTo(isIndex, 800); accessibility.setTitle(isZoomCta); accessibility.slide(); } } }; const swiperEvents = { init: function () { let notification = this.el.querySelector('.swiper-notification'); this.el.removeChild(notification); accessibility.setTitle(els.zoomCta[objs.swiper.activeIndex]); accessibility.slide(); }, slideChange: function () { for (let i = 0; i < els.zoomCta.length; i++) { els.zoomCta[i].removeAttribute('title'); els.zoomCta[i].parentElement.classList.remove(activeClass); } els.zoomCta[objs.swiper.activeIndex].parentElement.classList.add(activeClass); accessibility.setTitle(els.zoomCta[objs.swiper.activeIndex]); accessibility.slide(); } }; const accessibility = { slide: function () { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } }, setTitle: function (cta) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { cta.setAttribute('title', LOCAL_VARI.selected); } else { cta.setAttribute('title', 'selected'); } }, }; return { init: init } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.quote = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.highlights-media-quote'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.swiper = null; els.itemArray = []; els.quoteWrap = els.section.querySelector('.highlights-media-quote__inner'); els.quoteContainer = els.section.querySelector('.highlights-media-quote__list-wrap'); els.quoteList = els.section.querySelector('.highlights-media-quote__list'); els.quoteListItems = els.quoteList.querySelectorAll('.highlights-media-quote__item'); els.arrowWrap = els.section.querySelector('.highlights-media-quote__arrow'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.quotePagination = els.section.querySelector('.highlights-media-quote__pagination'); }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', onLodeHandler, { once: true }); resize.add(onResizeHandler); els.nextArrow.addEventListener('click', swiperEvents.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvents.onClickArrow); els.prevArrow.addEventListener('click', swiperEvents.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvents.onClickArrow); }; const onLodeHandler = function () { onResponsiveChange(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { onResponsiveChange(); prevDevice = currDevice; } }; const onResponsiveChange = function () { if (currDevice.indexOf('mobile') > -1) { setSwiper(); } else { swiperEvents.destroy(); } }; const setSwiper = function () { if (els.swiper === null) { els.quoteWrap.classList.add('js-swiper-initialized'); els.swiper = new Swiper(els.quoteContainer, { init: false, slidesPerView: 'auto', centeredSlides: true, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, pagination: { el: els.quotePagination, type: 'bullets', renderBullet: function () { return '
'; } } }); els.swiper.on('init', swiperEvents.init); els.swiper.on('slideChange', swiperEvents.slideChange); els.swiper.init(); } }; const swiperEvents = { init: function () { let self = this, notification = self.el.querySelector('.swiper-notification'); if (!!notification) self.el.removeChild(notification); setAccessibility.slide(); setAccessibility.arrow(); setPaginationTagging.call(self); setPaginationLabel.call(self); for (let i = 0; i < self.pagination.bullets.length; i++) { (function (idx) { self.pagination.bullets[i].addEventListener('click', function () { self.slideTo(idx); }); })(i); } }, slideChange: function () { setAccessibility.slide(); setAccessibility.arrow(); setPaginationLabel.call(this); }, onClickArrow: function (e) { if ((e.type == 'keydown' && e.keyCode == 13) || (e.type == 'click' && document.documentElement.classList.contains('isTouchDevice'))) { e.preventDefault(); clearTimeout(els.arrowTimeout); els.arrowTimeout = setTimeout(function () { if (els.swiper.isBeginning && !els.swiper.isEnd) { els.nextArrow.focus(); } else if (!els.swiper.isBeginning && els.swiper.isEnd) { els.prevArrow.focus(); } }, 300); } }, destroy: function () { if (els.swiper != null) { els.quoteWrap.classList.remove('js-swiper-initialized'); els.swiper.pagination.destroy(true); els.swiper.navigation.destroy(true); els.swiper.destroy(true); els.swiper = null; } }, }; const setPaginationTagging = function () { let bullets = Array.prototype.slice.call(this.pagination.bullets), paginationTagging = { 'data-omni-type': 'microsite_contentinter', 'data-omni': 'galaxy-s24-ultra:highlights:overview:media-quote:index:', 'ga-ca': 'indication', 'ga-ac': 'carousel', 'ga-la': 'galaxy-s24-ultra:highlights:overview:media-quote:index:', }; bullets.forEach(function (ele, idx) { Object.keys(paginationTagging).forEach(function (key) { if (key == 'data-omni' || key == 'ga-la') { ele.setAttribute(key, paginationTagging[key] + (idx + 1)); } else { ele.setAttribute(key, paginationTagging[key]); } }); }); }; const setPaginationLabel = function () { let self = this, slides = Array.prototype.slice.call(this.slides), bullets = Array.prototype.slice.call(this.pagination.bullets); bullets.forEach(function (bullet, bulletIndex) { let ariaLabelText = slides[bulletIndex].querySelector('.highlights-media-quote__media').innerText; if (self.realIndex == bulletIndex) { bullet.setAttribute('aria-label', ariaLabelText + ' Selected'); } else { bullet.setAttribute('aria-label', ariaLabelText); } }); }; const setAccessibility = { slide: function () { for (let i = 0; i < els.swiper.slides.length; i++) { if (i != els.swiper.snapIndex) { utils.onAccessibility(els.swiper.slides[i]); } else { utils.offAccessibility(els.swiper.slides[i]); } } }, arrow: function () { if (els.swiper.isBeginning && !els.swiper.isEnd) { utils.offAccessibility(els.nextArrow); utils.onAccessibility(els.prevArrow); } else if (!els.swiper.isBeginning && els.swiper.isEnd) { utils.offAccessibility(els.prevArrow); utils.onAccessibility(els.nextArrow); } else { utils.offAccessibility(els.nextArrow); utils.offAccessibility(els.prevArrow); } } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.samsungNoteTutorial = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; const init = function () { els.section = document.querySelector('.highlights-samsung-note-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 200); }, click: function () { let self = this; for (let i = 0; i < els.tooltipCta.length; i++) { els.tooltipCta[i].addEventListener('click', function () { self.nextVideoPlay(i); }); } }, endCallback: function () { if (stepInfo[this.video.playIndex].tooltip == 'true') { this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); let nextPlayindex = this.video.playIndex + 1; if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]); } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.suggestionAiTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-generative-edit-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.coverImages = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__cover-image'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.generativeCta = els.tutorialVideoContainer.querySelector('.js-tutorial-generative-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 200); }, click: function () { let self = this; els.tooltipCta[0].addEventListener('click', function () { if (els.videos[2].readyState < 4) { imageLoader.setResponsiveMedia([els.coverImages[2], els.coverImages[3], els.coverImages[4]]); videoLoader.setResponsiveMedia([els.videos[2], els.videos[3], els.videos[4]]); } self.nextVideoPlay(0); }) els.tooltipCta[1].addEventListener('click', function () { self.nextVideoPlay(1); }), els.generativeCta.addEventListener('click', function () { this.setAttribute('disabled', ''); utils.onAccessibility(els.generativeCta); this.parentElement.classList.remove('is-visible'); self.nextVideoPlay(5); }) }, endCallback: function () { let autoplay = this.video.playIndex == 2 || this.video.playIndex == 6; if (stepInfo[this.video.playIndex].tooltip == 'true') { if (this.video.playIndex != 5) this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (autoplay) { eventList.nextVideoPlay(this.video.playIndex); } let self = this; switch (this.video.playIndex) { case 2: if (!els.generativeCta.classList.contains('is-bg-load-complete')) { els.generativeCta.classList.add('is-bg-load-complete'); } els.generativeCta.parentElement.classList.add('is-visible'); break; case 3: if (els.videos[5].readyState < 4) { imageLoader.setResponsiveMedia([els.coverImages[5]]); videoLoader.setResponsiveMedia([els.videos[5]]); } (function (wrap, video) { setTimeout(() => { self.wrap.alert.classList.remove('is-visible'); eventList.nextVideoPlay(video.playIndex); }, 3000) })(this.wrap, this.video); break; case 4: if (els.videos[6].readyState < 4) { imageLoader.setResponsiveMedia([els.coverImages[6], els.coverImages[7]]); videoLoader.setResponsiveMedia([els.videos[6], els.videos[7]]); } (function (wrap, video) { setTimeout(() => { self.wrap.alert.classList.remove('is-visible'); eventList.nextVideoPlay(video.playIndex); }, 3000) })(this.wrap, this.video); break; case 5: els.generativeCta.removeAttribute('disabled'); utils.offAccessibility(els.generativeCta); break; case 7: els.generativeCta.parentElement.classList.add('is-visible'); els.generativeCta.classList.add('is-tutorial-end'); break; default: break; } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; if (this.video.playIndex != 5) { utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } } if (this.video.playIndex == (els.videos.length - 3)) { setTimeout(function () { els.generativeCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this) } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.tutorial = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; const common = window.flagship.highlights.common; const tutorialPopup = window.flagship.highlights.tutorialPopup; let objs = {}; let status = {}; let commonEls = {}; let isDevice = resize.checkResolution(); status.isGlobal = document.documentElement.classList.contains('global'); let sectionList = document.querySelectorAll('#generative-edit, #circle-to-search, #live-translate, #chat-assist, #note-assist'); let layerPopup = document.querySelectorAll('#generative-edit-experience, #circle-to-search-experience, #live-translate-experience, #chat-assist-experience, #note-assist-experience'); let popupClassList = [ '.highlights-generative-edit-tutorial', '.highlights-circle-to-search-tutorial', '.highlights-live-translate-tutorial', '.highlights-chat-assist-tutorial', '.highlights-samsung-note-tutorial' ] let statusClass = { isVisible: 'is-visible', isTutorialOpend: 'is-tutorial-opened', isTutorialOpenedMo: 'is-tutorial-opened-mo', isInfoOpen: 'is-info-open', isInfoVisible: 'is-info-visible', isTutorialEnd: 'is-tutorial-end', isActive: 'is-active', isBgLoadComplete: 'is-bg-load-complete', isCompleted: 'is-completed', isOpen: 'is-open', } const init = function () { status.isHash = false; status.isIos = utils.detector.isIosDevice; status.overview = {}; commonEls.globalSubNav = document.querySelector('#subnav'); commonEls.globalContents = document.querySelector('#contents'); commonEls.dotcomContents = document.querySelector('.pd-g-floating-nav'); commonEls.overview = document.querySelector('.highlights-overview'); commonEls.gnb = document.querySelector('.nv00-gnb'); commonEls.tooltipWrap = document.querySelectorAll('.js-tutorial-tooltip'); if (status.isGlobal) { commonEls.contentsChildren = document.querySelector('#contents').children; commonEls.commonUi = document.querySelectorAll('#accessibility-navigation, #header, #footer'); } else { commonEls.wrapChildren = document.querySelector('#wrap').children; commonEls.contentChildren = document.querySelector('#content').children; commonEls.rootChildren = document.querySelector('#content .root .responsivegrid .aem-Grid--12').children; commonEls.flotingNavi = document.querySelector('.pd-g-floating-nav'); commonEls.flotingNaviFixedWrap = document.querySelector('.floating-navigation__wrap'); } for (let i = 0; i < sectionList.length; i++) { let opts = { section: sectionList[i], layerPopup: layerPopup[i], popupClass: popupClassList[i], openCta: sectionList[i].querySelector('.js-tutorial-popup'), closeCta: layerPopup[i].querySelector('.common-tutorial__close-cta--popup'), moCloseCta: layerPopup[i].querySelector('.common-tutorial__close-cta--video'), } els = getElements(opts); tooltipAccessibility(); setPopup(opts, els); bindEvents(els, i); } }; const getElements = function (opts) { let els = {}; els.openCta = opts.section.querySelector('.js-tutorial-popup'); els.layerPopup = opts.layerPopup; els.innerWrapper = opts.layerPopup.querySelector('.common-tutorial__inner-wrapper'); els.innerWrap = opts.layerPopup.querySelector('.common-tutorial__inner-wrap'); els.textWrap = opts.layerPopup.querySelector('.common-tutorial__text'); els.closeCta = opts.layerPopup.querySelector('.common-tutorial__close-cta--popup'); els.moCloseCta = opts.moCloseCta; els.infoPopup = opts.layerPopup.querySelector('.common-tutorial__info-area'); els.videoContent = opts.layerPopup.querySelector('.common-tutorial__video-content'); els.introVideoSection = opts.layerPopup.querySelector('.common-tutorial__intro-video'); els.introVideoWrap = opts.layerPopup.querySelector('.common-tutorial__intro-video .common-video'); els.introVideo = opts.layerPopup.querySelector('.common-tutorial__intro-video video'); els.introCoverImage = opts.layerPopup.querySelector('.common-tutorial__intro-video .common-video__cover-image'); if (opts.layerPopup.classList.contains('highlights-live-translate-tutorial')) { els.introCta = opts.layerPopup.querySelector('.common-tutorial__intro-video .js-tutorial-tooltip-cta'); } els.tutorialContents = opts.layerPopup.querySelector('.common-tutorial__video-content'); els.tutorialVideoContainer = opts.layerPopup.querySelector('.common-tutorial__main-video'); els.tutorialVideoWrap = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .common-tutorial__video'); els.tutorialVideos = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .common-tutorial__video video'); els.tutorialCoverImages = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .common-video__cover-image'); els.tutorialActiveCta = opts.layerPopup.querySelector('.common-tutorial__cta--play button'); els.tutorialDeactiveCta = opts.layerPopup.querySelector('.common-tutorial__cta--pause button'); els.tutorialTooltip = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .js-tutorial-tooltip'); els.tutorialAlert = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .js-tutorial-alert'); els.generativeCta = opts.layerPopup.querySelector('.js-tutorial-generative-cta'); els.tutorialFrame = opts.layerPopup.querySelector('.common-tutorial__main-video.common-video__frame'); els.tutorialReplay = opts.layerPopup.querySelector('.common-tutorial__replay-cta'); els.tutorialNavigation = opts.layerPopup.querySelector('.common-tutorial__navigation'); els.navPrev = els.tutorialNavigation.querySelector('.common-tutorial__navigation-button--prev'); els.navNext = els.tutorialNavigation.querySelector('.common-tutorial__navigation-button--next'); els.tutorialPagination = opts.layerPopup.querySelector('.common-tutorial__pagination-area'); els.supClicker = opts.layerPopup.querySelectorAll('a.click_sup'); els.layerPopup.opener = els.openCta; els.layerPopup.targetOpener = opts.openCta; return els; }; const setProperty = function (els) { els.introVideoWrap.video = els.introVideo; els.introVideoWrap.controller = els.introVideoWrap.querySelector('.common-video__control'); els.introVideoWrap.controller.video = els.introVideo; }; const tooltipAccessibility = function () { for (let i = 0; i < commonEls.tooltipWrap.length; i++) { utils.onAccessibility(commonEls.tooltipWrap[i]); } }; const eventList = { common: { setMobileVideoWidth: function (els) { if (els.layerPopup.classList.contains('is-open') && resize.checkResolution().indexOf('mobile') > -1) { let containerWidth = window.innerWidth; let containerHeight = window.innerHeight; if (!status.isIos) { let videoHeight = Math.floor(containerWidth * 2.1666); if (videoHeight > containerHeight) { els.tutorialVideoContainer.style.width = `${Math.floor(containerHeight * 0.4615)}px`; els.tutorialVideoContainer.style.height = `${containerHeight}px`; } else { els.tutorialVideoContainer.style.width = ''; els.tutorialVideoContainer.style.height = `${videoHeight}px`; } } else { els.tutorialVideoContainer.style.width = `${Math.floor(containerHeight * 0.4615)}px`; } } else if (resize.checkResolution() != 'mobile' && els.tutorialVideoContainer.style.height) { if (!status.isIos) { els.tutorialVideoContainer.style.width = ''; els.tutorialVideoContainer.style.height = ''; } else { els.tutorialVideoContainer.style.width = ''; } } }, }, resize: { position: function (els) { if (els.layerPopup.classList.contains('is-open')) { if (isDevice.indexOf('desktop') > -1 && resize.checkResolution().indexOf('desktop') > -1) { let isHash = location.hash; if (!status.isGlobal && window.pageYOffset == 0 && !!isHash) { eventList.popup.setPopupPosition(els.layerPopup); } } if (isDevice != resize.checkResolution()) { eventList.popup.setPopupPosition(els.layerPopup); if (els.layerPopup.querySelector('.is-info-open, .is-tutorial-opened')) { eventList.tutorial.deactive(els); eventList.tutorial.reset(els); }; isDevice = resize.checkResolution(); } } }, }, tutorial: { videoContentReset: function (els) { els.videoContent.classList.remove(statusClass.isInfoOpen); els.videoContent.classList.remove(statusClass.isInfoVisible); els.videoContent.classList.add(statusClass.isTutorialOpend); }, reset: function (els) { if (els.generativeCta) { els.generativeCta.classList.remove(statusClass.isVisible, statusClass.isTutorialEnd); els.generativeCta.parentElement.classList.remove(statusClass.isVisible); } els.tutorialActiveCta.parentElement.classList.add(statusClass.isActive); els.tutorialDeactiveCta.parentElement.classList.remove(statusClass.isActive); els.tutorialContents.classList.remove(statusClass.isInfoOpen); els.videoContent.classList.remove(statusClass.isInfoVisible); els.tutorialContents.classList.remove(statusClass.isTutorialOpend); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.remove(statusClass.isTutorialOpenedMo); } for (let i = 0; i < els.tutorialVideoWrap.length; i++) { if (els.tutorialVideoWrap[i]) els.tutorialVideoWrap[i].classList.remove(statusClass.isVisible); if (els.tutorialVideos[i]) { if (!els.tutorialVideos[i].paused) { els.tutorialVideos[i].pause(); } els.tutorialVideos[i].currentTime = 0; } let isComplete = els.tutorialVideoWrap[i].querySelector(`.${statusClass.isCompleted}`); if (isComplete) els.tutorialVideos[i].videoHandler.resetCallback(); if (els.tutorialTooltip[i]) els.tutorialTooltip[i].classList.remove(statusClass.isVisible); if (els.tutorialAlert[i]) els.tutorialAlert[i].classList.remove(statusClass.isVisible); clearTimeout(status.infoRemoveTiming); } if (!!els.introCta) { els.introCta.parentElement.classList.remove(statusClass.isVisible); utils.onAccessibility(els.introCta.parentElement); } els.tutorialReplay.style.display = ''; if (!els.tutorialReplay.hasAttribute('tabindex')) els.tutorialReplay.setAttribute('tabindex', -1); if (!els.tutorialReplay.hasAttribute('aria-hidden')) els.tutorialReplay.setAttribute('aria-hidden', true); els.introVideoWrap.controller.removeAttribute('tabindex'); els.introVideoWrap.controller.removeAttribute('aria-hidden'); }, videoVisible: function (els) { if (!els.introVideo.paused) { els.introVideo.pause(); } els.videoContent.classList.add(statusClass.isInfoOpen); setTimeout(() => { els.videoContent.classList.add(statusClass.isInfoVisible); }, 0); els.tutorialVideoWrap[0].classList.add(statusClass.isVisible); }, imageLoad: function (els) { if (!els.tutorialFrame.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialFrame.classList.add(statusClass.isBgLoadComplete); } if (!els.tutorialDeactiveCta.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialDeactiveCta.classList.add(statusClass.isBgLoadComplete); } }, setActiveCta: function (els) { els.tutorialActiveCta.parentElement.classList.remove(statusClass.isActive); els.tutorialDeactiveCta.parentElement.classList.add(statusClass.isActive); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.add(statusClass.isTutorialOpenedMo); } }, activeInfo: function (els) { let self = this; clearTimeout(status.infoRemoveTiming); status.infoRemoveTiming = setTimeout(() => { self.videoContentReset(els); els.tutorialVideos[0].play(); utils.offAccessibility(els.tutorialVideoWrap[0]); let tutorialVideoController = els.tutorialVideoWrap[0].querySelector('.common-video__control.common-play-button'); tutorialVideoController.focus(); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.add(statusClass.isTutorialOpenedMo); } if (els.tutorialVideos[1].readyState < 4) { imageLoader.setResponsiveMedia([els.tutorialCoverImages[1]]); videoLoader.setResponsiveMedia([els.tutorialVideos[1]]); } els.tutorialVideos[0].focus(); status.infoRemoveTiming = null; }, 3000); }, active: function (els) { this.onAccessibility(els); if (resize.checkResolution().indexOf('mobile') > -1 && !status.isIos) { document.documentElement.requestFullscreen(); } if (resize.checkResolution().indexOf('mobile') > -1) { setTimeout(function () { els.moCloseCta.focus(); }, 300); } else { setTimeout(function () { els.tutorialDeactiveCta.focus(); }, 300); } status.infoRemoveTiming = null; this.videoVisible(els); this.imageLoad(els); this.setActiveCta(els); this.activeInfo(els); }, videoReset: function (els) { els.introVideo.currentTime = 0; if (isDevice == resize.checkResolution()) { els.introVideo.play(); } for (let i = 0; i < els.tutorialVideoWrap.length; i++) { els.tutorialVideoWrap[i].classList.remove(statusClass.isVisible); if (!els.tutorialVideos[i].paused) { els.tutorialVideos[i].pause(); els.tutorialVideos[i].currentTime = 0; } } }, ctaReset: function (els) { els.tutorialDeactiveCta.parentElement.classList.remove(statusClass.isActive); els.tutorialActiveCta.parentElement.classList.add(statusClass.isActive); if (resize.checkResolution().indexOf('mobile') == -1) { els.layerPopup.classList.remove(statusClass.isTutorialOpenedMo); } if (!!els.introCta) { els.introCta.parentElement.classList.remove(statusClass.isVisible); utils.onAccessibility(els.introCta.parentElement); } }, deactive: function (els) { els.videoContent.classList.remove(statusClass.isInfoOpen, statusClass.isInfoVisible, statusClass.isTutorialOpend); this.offAccessibility(els); if (resize.checkResolution().indexOf('mobile') > -1 && !status.isIos) { if (document.fullscreenElement != null) document.exitFullscreen(); } setTimeout(function () { els.tutorialActiveCta.focus(); }, 300); this.videoReset(els) this.ctaReset(els); for (let i = 0; i < els.tutorialVideoWrap.length; i++) { utils.onAccessibility(els.tutorialVideoWrap[i]); } }, onAccessibility: function (els) { if (resize.checkResolution().indexOf('mobile') > -1) { utils.onPopupAccessibility(els.textWrap); if (!status.isGlobal) { utils.onPopupAccessibility(commonEls.flotingNaviFixedWrap); } else { utils.onPopupAccessibility(commonEls.globalSubNav); } } utils.onPopupAccessibility(els.introVideoSection); }, offAccessibility: function (els) { if (resize.checkResolution().indexOf('mobile') > -1) { utils.offPopupAccessibility(els.textWrap); if (!status.isGlobal) { utils.offPopupAccessibility(commonEls.flotingNaviFixedWrap); } else { utils.offPopupAccessibility(commonEls.globalSubNav); } } utils.offPopupAccessibility(els.introVideoSection); } }, popup: { setOverviewStatus: function (opts) { if (opts.openCta.parentElement.getAttribute('class').indexOf('__tutorial-cta') > -1) { let isOverviewVideo = commonEls.overview.querySelector('.swiper-slide-active video'); if (!isOverviewVideo.paused) { status.overview = { video: isOverviewVideo, paused: true } isOverviewVideo.pause(); } } }, mediaLoad: function (els) { if (!els.tutorialActiveCta.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialActiveCta.classList.add(statusClass.isBgLoadComplete); } if (els.introVideo.readyState < 4) { imageLoader.setResponsiveMedia([els.introCoverImage]); videoLoader.setResponsiveMedia([els.introVideo]); } if (!els.navPrev.classList.contains(statusClass.isBgLoadComplete)) { els.navPrev.classList.add(statusClass.isBgLoadComplete); } if (!els.navNext.classList.contains(statusClass.isBgLoadComplete)) { els.navNext.classList.add(statusClass.isBgLoadComplete); } }, playIntroVideo: function (els) { if (els.introVideo.readyState >= 4) { els.introVideo.currentTime = 0; els.introVideo.play(); } else { els.introVideo.addEventListener('canplay', function () { if (this.paused) this.play(); }); } }, tutorialIntroImgLoad: function (els) { if (!!els.introCoverImage && !els.introCoverImage.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.introCoverImage]); } }, tutorialMediaLoad: function (els) { if (els.tutorialVideos[0].readyState < 4) { imageLoader.setResponsiveMedia([els.tutorialCoverImages[0]]); videoLoader.setResponsiveMedia([els.tutorialVideos[0]]); } if (!els.tutorialReplay.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialReplay.classList.add(statusClass.isBgLoadComplete) } }, setPopupPosition: function (layerPopup) { let isHash = location.hash; let dotcomGnbHeight = 0; if (!status.isGlobal && window.pageYOffset == 0 && !!isHash) { dotcomGnbHeight = document.querySelector('.nv00-gnb').clientHeight; layerPopup.style.top = `${utils.getNavHeight() + dotcomGnbHeight}px`; } else { layerPopup.style.top = `${utils.getNavHeight()}px`; } }, setUiEls: function (opts, els, target) { if (commonEls.globalSubNav) commonEls.globalSubNav.style.opacity = 1; opts.layerPopup.classList.add('is-init'); target.openerCta.blur(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { let oldOpenPopup = document.querySelector('.common-tutorial.is-open'); if (!!oldOpenPopup) { let oldOpenPopupId = oldOpenPopup.getAttribute('id'); if (`#${oldOpenPopupId}` != window.location.hash) { document.querySelector(`#${oldOpenPopupId}`).hide(); } } status.isHash = true; if (!status.isGlobal) commonEls.gnb.style.display = 'none'; } if (!!els.introCta) { els.introVideo.addEventListener('ended', function () { utils.offAccessibility(els.introCta.parentElement); setTimeout(function () { els.introCta.parentElement.classList.add(statusClass.isVisible); }, 100); }); } }, setSubnavi: function (opts) { if (commonEls.globalSubNav) commonEls.globalSubNav.style.opacity = .9; opts.layerPopup.classList.remove('is-init'); }, focusHandler: function (opts, els) { let isHash = status.isHash && els.layerPopup.targetOpener; let isOverview = els.layerPopup.isOverview; let isController = els.layerPopup.isController; if (isHash || !!isController && !!!isOverview) { els.layerPopup.targetOpener.blur(); if (!status.isIos) els.layerPopup.targetOpener.focus(); setTimeout(function () { els.layerPopup.targetOpener.focus(); if (isHash) { status.isHash = false; history.pushState('', document.title, window.location.pathname); if (!status.isGlobal) commonEls.gnb.style.display = ''; } if (!!isController) isController = false; }, 300); } if (!!isOverview) { opts.layerPopup.overviewCta.blur(); if (!status.isIos) opts.layerPopup.overviewCta.focus(); setTimeout(function () { if (!document.querySelector('.common-tutorial.is-open')) { opts.layerPopup.overviewCta.focus(); for (let i = 0; i < layerPopup.length; i++) { layerPopup[i].isOverview = false; layerPopup[i].overviewCta = null; } } }, 300); } }, onAccessibilityGlobal: function (els) { for (let i = 0; i < commonEls.contentsChildren.length; i++) { let isId = commonEls.contentsChildren[i].getAttribute('id'); if ((isId != null && isId.indexOf('experience') == -1 && isId.indexOf('subnav') == -1) || isId == null) { utils.onPopupAccessibility(commonEls.contentsChildren[i]); } } for (let i = 0; i < commonEls.commonUi.length; i++) { utils.onPopupAccessibility(commonEls.commonUi[i]); } }, offAccessibilityGlobal: function (els) { for (let i = 0; i < commonEls.contentsChildren.length; i++) { let isId = commonEls.contentsChildren[i].getAttribute('id'); if ((isId != null && isId.indexOf('experience') == -1 && isId.indexOf('subnav') == -1) || isId == null) { utils.offPopupAccessibility(commonEls.contentsChildren[i]); } } for (let i = 0; i < commonEls.commonUi.length; i++) { utils.offPopupAccessibility(commonEls.commonUi[i]); } }, onAccessibilityDotom: function (els) { let staticContent = document.querySelector('.static-content'); staticContent.style.zIndex = -1; staticContent.style.position = 'relative'; for (let i = 0; i < commonEls.wrapChildren.length; i++) { let isId = commonEls.wrapChildren[i].getAttribute('id'); if ((isId != null && isId.indexOf('content') == -1) || isId == null) { utils.onPopupAccessibility(commonEls.wrapChildren[i]); } } for (let i = 0; i < commonEls.contentChildren.length; i++) { let isClass = commonEls.contentChildren[i].getAttribute('class'); if ((isClass != null && isClass.indexOf('root') == -1) || isClass == null) { utils.onPopupAccessibility(commonEls.contentChildren[i]); } } for (let i = 0; i < commonEls.rootChildren.length; i++) { let isClass = commonEls.rootChildren[i].getAttribute('class'); if ((isClass != null && isClass.indexOf('pd-g-floating-nav') == -1) || isClass == null) { utils.onPopupAccessibility(commonEls.rootChildren[i]); } } }, offAccessibilityDotcom: function (els) { for (let i = 0; i < commonEls.wrapChildren.length; i++) { utils.offPopupAccessibility(commonEls.wrapChildren[i]); } if (!status.isIos) { for (let i = 0; i < commonEls.contentChildren.length; i++) { commonEls.contentChildren[i].removeAttribute('tabindex'); commonEls.contentChildren[i].removeAttribute('aria-hidden'); } for (let i = 0; i < commonEls.rootChildren.length; i++) { commonEls.rootChildren[i].removeAttribute('tabindex'); commonEls.rootChildren[i].removeAttribute('aria-hidden'); } } else { for (let i = 0; i < commonEls.contentChildren.length; i++) { utils.offPopupAccessibility(commonEls.contentChildren[i]); } for (let i = 0; i < commonEls.rootChildren.length; i++) { utils.offPopupAccessibility(commonEls.rootChildren[i]); } } setTimeout(function () { let staticContent = document.querySelector('.static-content'); staticContent.style.zIndex = ''; staticContent.style.position = ''; }, 200); }, onAccessibility: function (els) { els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); if (status.isGlobal) { this.onAccessibilityGlobal(els); } else { this.onAccessibilityDotom(els); } }, offAccessibility: function (els) { els.closeCta.setAttribute('tabindex', '-1'); els.closeCta.setAttribute('aria-hidden', true); if (status.isGlobal) { this.offAccessibilityGlobal(els); } else { this.offAccessibilityDotcom(els); } } } } const eventHandler = { resize: function (els) { window.addEventListener('resize', function () { eventList.resize.position(els); eventList.common.setMobileVideoWidth(els); }); }, infoPopupDeactive: function (els) { els.infoPopup.addEventListener('click', function () { eventList.tutorial.videoContentReset(els); clearTimeout(status.infoRemoveTiming); els.tutorialVideos[0].play(); let tutorialVideoController = els.tutorialVideoWrap[0].querySelector('.common-video__control.common-play-button'); tutorialVideoController.focus(); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.add(statusClass.isTutorialOpenedMo); } if (els.tutorialVideos[1].readyState < 4) { imageLoader.setResponsiveMedia([els.tutorialCoverImages[1]]); videoLoader.setResponsiveMedia([els.tutorialVideos[1]]); } status.infoRemoveTiming = null; }); }, tutorialActiveEvent: function (els) { if (!!els.introCta) { els.introCta.addEventListener('click', function () { eventList.tutorial.active(els); }); } els.tutorialActiveCta.addEventListener('click', function () { this.parentElement.classList.remove(statusClass.isActive); eventList.tutorial.active(els); }); }, tutorialDeactiveEvent: function (els) { els.tutorialDeactiveCta.addEventListener('click', function () { eventList.tutorial.deactive(els); eventList.tutorial.reset(els); }); }, reStartTutorial: function (els) { els.tutorialReplay.addEventListener('click', function () { this.style.display = ''; eventList.tutorial.reset(els); eventList.tutorial.active(els); utils.onAccessibility(els.tutorialVideoWrap[els.tutorialVideoWrap.length - 1]); }); }, videoController: function (index) { objs[`introVideo_${index}`].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); }, onClickMoCloseCta: function (els) { els.moCloseCta.addEventListener('click', function () { eventList.tutorial.deactive(els); eventList.tutorial.reset(els); }); }, onClickController: function (els) { els.tutorialNavigation.addEventListener('click', function (e) { let isNaviBtn = e.target.classList.contains('common-tutorial__navigation-button'); if (isNaviBtn) { _controllEvent(e.target); } }); els.tutorialPagination.addEventListener('click', function (e) { let isPaginationBtn = e.target.classList.contains('common-tutorial__pagination'); if (isPaginationBtn) { let currOpenPopupId = document.querySelector('.common-tutorial.is-open').getAttribute('id'); let targetId = e.target.getAttribute('data-hash'); if (targetId != currOpenPopupId) { _controllEvent(e.target); } } }); const _controllEvent = function (target) { let targetPopupId = target.getAttribute('data-hash'); document.querySelector('.common-tutorial.is-open').hide(); document.querySelector(`#${targetPopupId}`).show(); eventList.tutorial.reset(els); document.querySelector(`#${targetPopupId}`).isController = true; }; }, tutorialintroImgLoad: function (els) { window.addEventListener('scroll', function () { if (this.pageYOffset > 0) { eventList.popup.tutorialIntroImgLoad(els); } }) }, moveToTutorialPopup: function (els) { window.addEventListener('DOMContentLoaded', function () { if (!status.isGlobal) { commonEls.flotingNaviFixedWrap.after(els.layerPopup); } else { document.querySelector('#contents').prepend(els.layerPopup); if (status.isIos) commonEls.globalSubNav.after(els.layerPopup); } }); }, onClickSup: function (els) { for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; els.layerPopup.hide(); setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); }); } } } const setIntroVideo = function (el, index) { objs[`introVideo_${index}`] = ANIUTIL.videoHandler({ wrap: el, video: el.video, controller: el.controller, playCallback: function () { if (el.classList.contains(statusClass.isCompleted)) el.classList.remove(statusClass.isCompleted); setTagging.pause(el.controller); }, pauseCallback: function () { setTagging.play(el.controller); }, endCallback: function () { if (!el.classList.contains(statusClass.isCompleted)) el.classList.add(statusClass.isCompleted); } }); }; const setPopup = function (opts, els) { tutorialPopup({ tutorialPopup: opts.layerPopup, tutorialPopupClass: opts.popupClass, openerEvent: { element: opts.openCta, }, closeCtas: [opts.closeCta], show: { start: function (target) { eventList.popup.setOverviewStatus(opts); eventList.popup.mediaLoad(els); eventList.popup.playIntroVideo(els); eventList.popup.tutorialMediaLoad(els); eventList.popup.setPopupPosition(opts.layerPopup); eventList.popup.setUiEls(opts, els, target); eventList.popup.onAccessibility(els); }, end: function () { if (status.isIos) opts.layerPopup.style.display = 'block'; opts.layerPopup.classList.add('is-open'); eventList.common.setMobileVideoWidth(els); } }, hide: { start: function (target) { eventList.popup.offAccessibility(els); target.openerCta.focus(); opts.layerPopup.classList.remove('is-open'); }, end: function () { eventList.tutorial.reset(els); els.introVideo.pause(); eventList.popup.setSubnavi(opts); eventList.popup.focusHandler(opts, els); els.innerWrapper.scrollTop = 0; } } }); }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function (els, index) { eventHandler.moveToTutorialPopup(els); eventHandler.resize(els); eventHandler.infoPopupDeactive(els); eventHandler.tutorialActiveEvent(els); eventHandler.tutorialDeactiveEvent(els); eventHandler.reStartTutorial(els); eventHandler.onClickMoCloseCta(els); eventHandler.onClickController(els); eventHandler.tutorialintroImgLoad(els); eventHandler.onClickSup(els); // introVideo setProperty(els); setIntroVideo(els.introVideoWrap, index); eventHandler.videoController(index); }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.viewer = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}, status = {}, currDevice = resize.checkResolution(); const init = function () { els.viewerBtn = document.querySelector('.viewer-btn'); if (!!els.viewerBtn) { setElements(); setStatus(); setPopup(); bindEvents(); } }; const setElements = function () { els.wrapEl = document.querySelector('#wrap'); els.contents = document.querySelector('#contents'); // popup els.popup = document.querySelector('.highlights-viewer'); els.popupContents = els.popup.querySelector('.highlights-viewer__contents'); els.popupInner = els.popup.querySelector('.highlights-viewer__inner'); els.popupWrap = els.popup.querySelector('.highlights-viewer__wrap'); els.closeCta = els.popup.querySelector('.highlights-viewer__close-cta'); els.viewerWrap = els.popup.querySelector('.highlights-viewer__contents-wrap'); els.viewerContainer = els.popup.querySelector('.highlights-viewer__container'); els.viewerIframe = els.popup.querySelector('.highlights-viewer__container-viewer'); // popup-scroll els.popupScroll = els.popup.querySelector('.highlights-viewer__scroll'); els.popupScrollUpBtn = els.popup.querySelector('.highlights-viewer__scroll-btn--up'); els.popupScrollDownBtn = els.popup.querySelector('.highlights-viewer__scroll-btn--down'); // infoPopup els.infoBtn = els.popup.querySelector('.highlights-viewer__title-cta'); els.infoCloseBtn = els.popup.querySelector('.highlights-viewer__header-close-cta'); els.infoDimmed = els.popup.querySelector('.highlights-viewer__dimmed'); // timeout els.resizeTimeout = null; els.resizeInnerTimeout = null; // viewer els.viewerOpener = null; els.viewerModel = ''; els.viewerColor = ''; }; const setStatus = function () { status.viewerBaseUrl = '//www.samsung.com/global/galaxy/3d-360/viewer/?'; status.defaultParams = '&gesture_guide=0'; status.defaultParams += '&bgcolor=transparent'; status.defaultParams += '&skin=colorlayer'; status.defaultParams += '&theme=roundlayer'; status.defaultParams += '&intro=1'; status.defaultParams += '&ruler=1'; status.defaultParams += '&breakpoint_criteria=outer'; status.defaultParams += '&breakpoint_desktop_width=1024'; status.defaultParams += '&intro_pose=2'; status.defaultParams += '&intro_pose_once=1'; status.defaultParams += '&intro_pose_hold=1'; status.moPoseReady = false; status.isHash = false; }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', onLoadHandler, { once: true }); window.addEventListener('message', onReceiveV3DMessage, false); //els.popupContents.addEventListener('scroll', onScrollPopupContents); els.viewerIframe.addEventListener('DOMContentLoaded', viewerEvents.onLoadLayerPopupIframe); els.popupScroll.addEventListener('click', layerPopupScrollHandler.onClickLayerScroll); resize.add(onResizeHandler); }; const onLoadHandler = function () { setViewerWrap.innerWrapHeight(); setViewerWrap.layerScroll(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (utils.detector.isTouchDevice && !utils.detector.isIosDevice) setViewerWrap.innerWrapHeight(); setViewerWrap.layerScroll(); }; const setViewerWrap = { innerWrapHeight: function () { clearTimeout(els.resizeInnerTimeout); els.resizeInnerTimeout = setTimeout(function () { if (els.popupInner) { els.popupInner.style.height = parseInt(window.innerHeight * 0.9) + 'px'; } }, 0); }, layerScroll: function () { clearTimeout(els.resizeTimeout); els.resizeTimeout = setTimeout(function () { layerPopupScrollHandler.setLayerScroll(); }, 300); } }; const setPopup = function () { utils.layerPopup({ layerPopup: els.popup, layerPopupClass: '.highlights-viewer', openerEvent: { element: els.viewerBtn, }, closeCtas: [els.closeCta], moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.popup.classList.add('is-init'); viewerEvents.show(target.openerCta); }, end: function () { if (utils.detector.isIosDevice) els.popup.style.display = 'block'; els.popup.classList.add('is-open'); if (els.popup.classList.contains('is-info-open')) { setTimeout(function () { els.infoCloseBtn.focus(); }, 500); } } }, hide: { start: function () { els.popup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.popup.classList.remove('is-init'); }, 300); viewerEvents.hide(); } } }); }; const viewerEvents = { show: function (viewerOpener) { if (viewerOpener.classList.contains('viewer-btn')) { status.isHash = false; els.viewerOpener = viewerOpener; } else { status.isHash = true; els.viewerOpener = els.viewerBtn; } els.viewerModel = els.viewerOpener.getAttribute('data-model-name'); els.viewerColor = els.viewerOpener.getAttribute('data-model-color'); els.viewerIframe.setAttribute('src', getViewerUrl()); if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { viewerEvents.infoPopupShow(); } els.infoBtn.addEventListener('click', function () { viewerEvents.infoPopupShow(); setTimeout(function () { els.infoCloseBtn.focus(); }, 400); }); els.popupWrap.addEventListener('click', viewerEvents.onclickViewerDimmed); }, hide: function () { els.viewerModel = ''; els.viewerIframe.setAttribute('src', 'about:blank'); if (status.isHash) { setTimeout(function () { els.viewerOpener.focus(); }, 300); } }, infoPopupShow: function () { if (!els.popup.classList.contains('is-info-open')) { els.popup.classList.add('is-info-open'); els.infoCloseBtn.addEventListener('click', viewerEvents.infoPopupHide); els.infoDimmed.addEventListener('click', viewerEvents.infoPopupHide); setTimeout(function () { els.closeCta.setAttribute('tabindex', -1); els.closeCta.setAttribute('aria-hidden', true); els.infoBtn.setAttribute('tabindex', -1); els.infoBtn.setAttribute('aria-hidden', true); els.viewerContainer.setAttribute('tabindex', -1); els.viewerContainer.setAttribute('aria-hidden', true); }, 400); } }, infoPopupHide: function () { if (els.popup.classList.contains('is-info-open')) { els.popup.classList.remove('is-info-open'); setTimeout(function () { els.infoBtn.focus(); }, 300); setTimeout(function () { els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); els.infoBtn.removeAttribute('tabindex'); els.infoBtn.removeAttribute('aria-hidden'); els.viewerContainer.removeAttribute('tabindex'); els.viewerContainer.removeAttribute('aria-hidden'); }, 100); } }, onclickViewerDimmed: function (e) { if (e.currentTarget == e.target) { if (utils.detector.isIosDevice) els.viewerOpener.style.display = 'block'; els.popup.classList.remove('is-open'); document.documentElement.classList.remove('is-layer-open'); document.documentElement.style.overflow = ''; utils.visibleScroll(); utils.onAccessibility(els.popup); utils.offAccessibility(document.querySelector('#wrap')); setTimeout(function () { els.viewerOpener.focus(); }, 300); els.viewerModel = ''; els.viewerIframe.setAttribute('src', 'about:blank'); setTimeout(function () { els.popup.classList.remove('is-init'); }, 300); } }, onLoadLayerPopupIframe: function () { if (document.documentElement.classList.contains('color_yb') || (utils.getCookie('highContrastMode') != null && utils.getCookie('highContrastMode') == 1)) { els.viewerIframe.contentWindow.postMessage('V3D.highContrast.on', '*'); setTimeout(function () { els.viewerIframe.contentWindow.postMessage('V3D.highContrast.on', '*'); }, 300); } } }; const layerPopupScrollHandler = { setLayerScroll: function () { if (!els.popupContents) return; if (els.popupContents.scrollHeight > els.popupContents.clientHeight) { utils.offAccessibility(els.popupScroll); els.popupScroll && els.popupScroll.classList.add('is-scroll-btn'); } else { utils.onAccessibility(els.popupScroll); els.popupScroll && els.popupScroll.classList.remove('is-scroll-btn'); } }, onScrollPopupContents: function () { onUpdateLayerScroll(false); }, onClickLayerScroll: function (e) { e && e.preventDefault(); if (e.target.matches('.highlights-viewer__scroll-btn')) { let scrollDown = e.target.classList.contains('highlights-viewer__scroll-btn--down'), $popupContents = $(els.popupContents); if (scrollDown) { $popupContents.stop().animate({ scrollTop: $popupContents.scrollTop() + 100 }, { duration: 300, complete: function () { layerPopupScrollHandler.onUpdateLayerScroll(true); } }); } else { $popupContents.stop().animate({ scrollTop: $popupContents.scrollTop() - 100 }, { duration: 300, complete: function () { layerPopupScrollHandler.onUpdateLayerScroll(true); } }); } } }, onUpdateLayerScroll: function (isClicked) { const offsetTop = els.popupContents.scrollTop, layerBottom = els.popupContents.scrollHeight - els.popupContents.clientHeight; els.popupScrollUpBtn.removeAttribute('tabindex'); els.popupScrollUpBtn.removeAttribute('aria-hidden'); els.popupScrollUpBtn.removeAttribute('disabled'); els.popupScrollDownBtn.removeAttribute('tabindex'); els.popupScrollDownBtn.removeAttribute('aria-hidden'); els.popupScrollDownBtn.removeAttribute('disabled'); if (offsetTop == 0) { isClicked && els.popupScrollDownBtn && els.popupScrollDownBtn.focus(); els.popupScrollUpBtn.setAttribute('tabindex', '-1'); els.popupScrollUpBtn.setAttribute('aria-hidden', 'true'); els.popupScrollUpBtn.setAttribute('disabled', 'disabled'); } else if (offsetTop >= layerBottom - 1) { isClicked && els.popupScrollUpBtn && els.popupScrollUpBtn.focus(); els.popupScrollDownBtn.setAttribute('tabindex', '-1'); els.popupScrollDownBtn.setAttribute('aria-hidden', 'true'); els.popupScrollDownBtn.setAttribute('disabled', 'disabled'); } } }; const onReceiveV3DMessage = function (e) { if (e.data == 'V3D.state.popOpen') { if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { if (els.closeCta) { if (!els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.add('is-popup-opened'); els.closeCta.setAttribute('tabindex', '-1'); els.closeCta.setAttribute('aria-hidden', 'true'); els.closeCta.setAttribute('disabled', 'disabled'); } if (els.infoBtn) { els.infoBtn.setAttribute('tabindex', '-1'); els.infoBtn.setAttribute('aria-hidden', 'true'); } } } else if (e.data == 'V3D.state.popClose') { if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { if (els.closeCta) { if (els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.remove('is-popup-opened'); els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); els.closeCta.removeAttribute('disabled'); } if (els.infoBtn) { els.infoBtn.removeAttribute('tabindex'); els.infoBtn.removeAttribute('aria-hidden'); } } } else if (e.data == 'V3D.state.introPose.ready') { if (currDevice.indexOf('desktop') > -1) { els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*'); } status.moPoseReady = true; setTimeout(function () { status.moPoseReady = false; }, 2000); } else if (e.data == 'V3D.state.localData.ready') { els.viewerIframe && els.viewerIframe.contentWindow.postMessage(JSON.stringify(V3DLOCALDATA), '*'); } }; const getViewerUrl = function () { let viewerUrl = status.viewerBaseUrl; // model_name viewerUrl += 'model_name=' + els.viewerModel; if (document.documentElement.classList.contains('color_yb') || (utils.getCookie('highContrastMode') != null && utils.getCookie('highContrastMode') == 1)) { viewerUrl += '&highcontrast=1'; } else { viewerUrl += '&highcontrast=0'; } // RTL utils.isRTL() && (viewerUrl += '&rtl=1'); viewerUrl += status.defaultParams; viewerUrl += '#color=' + (els.viewerColor ? els.viewerColor : 'null'); return viewerUrl; }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.ytPopup = (function () { let els = {}; const utils = window.flagship.common.utils; const init = function () { els.layerPopup = document.querySelector('.common-youtube-popup'); if (!!els.layerPopup) { setElements(); setPopup(); } }; const setElements = function () { els.contents = document.querySelector('#contents'); els.openCtas = document.querySelectorAll('.js-youtube-popup'); els.closeCta = document.querySelector('.common-youtube-popup__close-cta'); els.ytIframe = els.layerPopup.querySelector('.common-youtube-popup__iframe > iframe'); els.ytDesc = els.layerPopup.querySelector('.youtube-player__desc'); els.dimmed = els.layerPopup.querySelector('.common-youtube-popup__close-area'); }; const setPopup = function () { for (let i = 0; i < els.openCtas.length; i++) { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.common-youtube-popup', openerEvent: { element: els.openCtas[i], }, closeCtas: [els.closeCta], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function () { els.layerPopup.classList.add('is-yt-open'); }, end: function (target) { eventList.setYoutube(target); } }, hide: { start: function () { els.layerPopup.classList.remove('is-yt-open'); }, end: function (target) { eventList.clearYoutube(); } } }); } }; const eventList = { setYoutube: function (target) { let opener = target.openerCta, ytSrc = 'htt' + 'ps://www.youtube.com/embed/' + opener.getAttribute('data-youtube-id') + '?wmode=opaque&rel=0&enablejsapi=1&version=3&autoplay=1', ytTitle = opener.getAttribute('data-youtube-title'), ytBlind = opener.querySelector('.blind').innerHTML; els.ytIframe.setAttribute('src', ytSrc); els.ytIframe.setAttribute('title', ytTitle); els.ytDesc.innerHTML = ytBlind; els.OpenerTarget = opener; }, clearYoutube: function () { els.ytIframe.removeAttribute('src'); els.ytDesc.innerHTML = ''; } }; return { init: init, } })(); })(); (function () { window.flagship.common.resize.bindEvent(); var initComponents = function () { flagship.highlights.accordion.init(); flagship.highlights.scrollVideo.init(); flagship.highlights.clickToVideo.init(); flagship.highlights.overview.init(); flagship.highlights.quote.init(); flagship.highlights.color.init(); flagship.highlights.viewer.init(); flagship.highlights.cameraAi.init(); flagship.highlights.camera.init(); flagship.highlights.lowLight.init(); flagship.highlights.lowLightPopup.init(); flagship.highlights.quadTelephoto.init(); flagship.highlights.quadTelPopup.init(); flagship.highlights.tutorial.init(); flagship.highlights.suggestionAiTutorial.init(); flagship.highlights.circleToSearchTutorial.init(); flagship.highlights.liveTranslateTutorial.init(); flagship.highlights.chatAssistTutorial.init(); flagship.highlights.samsungNoteTutorial.init(); flagship.highlights.gaming.init(); flagship.highlights.display.init(); flagship.highlights.experiences.init(); flagship.highlights.faq.init(); flagship.highlights.ytPopup.init(); }; initComponents(); })(); });