Ce site utilise des cookies. En cliquant ACCEPTER ou en continuant à naviguer le site, vous acceptez notre utilisation des cookies.
En savoir plus ici.
Votre outil d’auto-expression, le Galaxy Z Flip6, est plus compact et attrayant, avec Galaxy AI et un appareil photo de 50 MP de niveau professionnel prêt pour vos prises de vue.
L’IA est utilisée pour traduire une langue vers une autre langue sur l’écran principal du Galaxy Z Flip6. L’écran pivote et la traduction s’affiche sur la FlexWindow.
50 MP. Nouvel appareil photo. Des portraits époustouflants
L’écran principal du Galaxy Z Flip6 affiche un time-lapse d’un paysage urbain passant du jour à la nuit, tandis que la capacité de la batterie augmente pour atteindre un maximum de 4 000 milliampères-heures.
« Galaxy Z Flip6, la Puissance véritable d’un produit phare »
Digital Trends
« Excellentes performances et bonne autonomie »
Forbes
PLUS COMPACT
Le Galaxy Z Flip6 est vu en train de se fermer de profil. Il s’ouvre à nouveau, pivote et son angle passe en FlexMode.
GRAND IMPACT
Le nouveau design flottant du Galaxy Z Flip6 est moderne, fin et élégant, créant notre smartphone le plus compact à ce jour.
Coloré. Joyeux. Merveilleux
Trouvez votre couleur préférée ou choisissez l’une des couleurs exclusives en ligne uniquement sur Samsung.com.
Visionneuse 3d 360Exclusivité en ligne
BleuJauneMentheOmbre ArgentéNoir ArtisanalCouleurs exclusives en ligneBlancCouleurs exclusives en lignePêcheCouleurs exclusives en ligne
Angle prédéfini
* Les couleurs exclusives en ligne sont uniquement disponibles sur Samsung.com.
BleuJauneMentheOmbre ArgentéNoir ArtisanalCouleurs exclusives en ligneBlancCouleurs exclusives en lignePêcheCouleurs exclusives en ligne
Angle prédéfini
* Les couleurs exclusives en ligne sont uniquement disponibles sur Samsung.com.
La Galaxy AI est arrivée sur Galaxy Foldables
Galaxy AI
est arrivéesur Galaxy Foldablesest arrivéesur Galaxy Foldables
INTERPRETER
Votre expérience d’interprète supérieure avec FlexWindow
Perdu dans la traduction ? Le Galaxy Z Flip6 est votre passeport pour la communication : il fonctionne comme votre interprète personnel.,
Une conversation en deux langues est transcrite et traduite en temps réel.
Appuyez pour essayer
Galaxy AI transcrit les conversations en temps réel. Les traductions de chaque langue apparaissent sous forme de texte à l’écran.
Appuyez pour essayer
Le bouton double écran permet d’activer l’application Interpreter à partir de l’écran extérieur.
CHAT ASSIST
Le chat continue, même lorsqu’il est fermé
Envoyez des messages directement de la FlexWindow avec Chat Assist. Il vous suffit de sélectionner l’une des Suggested Replies, élaborées par l’IA à connaissance contextuelle.
La conversation par message texte apparaît sur la Flex Window du Galaxy Z Flip6.
Appuyez pour essayer
Les Réponses Suggérées proposent trois réponses potentielles à envoyer à un ami. En fonction de la conversation, les réponses acceptent la suggestion faite par l’ami de faire du skateboard ensemble.
Votre fenêtre, à votre façon
L’interface d’horloge FlexWindow présente la photo d’une femme avec des éléments interactifs représentant différents types de conditions météorologiques.
Interface d’horloge FlexWindow avec design végétal interactif.
L’interface d’horloge FlexWindow présente la photo d’une femme avec des éléments interactifs représentant différents types de conditions météorologiques.
Interface d’horloge FlexWindow avec design végétal interactif.
Discutez avec Google Gemini pour stimuler vos idées
Partenaire de longue date, Google est entièrement intégré à votre nouveau Galaxy Z grâce à l’ajout de la dernière version de Google Gemini. Chatez avec Gemini pour obtenir de l'aide afin d’apprendre de nouvelles façons de faire, d’écrire des notes de remerciement, de planifier des événements et plus encore.
Plongez dans le monde de l’IA
Circle to Search
Entourez simplement un objet ou du texte pour obtenir les résultats de recherche Google.
Live Translate
Obtenez une traduction vocale en temps réel sur diverses applications lorsque vous passez un appel.
Transcript Assist
Transcrivez vos conversations enregistrées en un texte modifiable en un clin d’œil.
Prenez des photos sublimes de jour comme de nuit, et même dans des endroits peu éclairés. Utilisez Nightography pour vous assurer que chaque photo brille par ses détails, grâce au ProVisual Engine.
L’appareil photo le plus puissant du Galaxy Z Flip, désormais équipé de l’IA
L’appareil photo arrière grand angle de 50 MP amélioré traite vos photos avec le ProVisual Engine pour capturer des scènes époustouflantes et des portraits plus riches.,,,,,
ProVisual Engine
appareil photo arrière
50 MPÉcran largeZoom de qualité optique 2x
12 MPAppareil photo frontal
FlexCam : capturez votre meilleur angle
FlexCam utilise Auto Zoom pour effectuer un zoom avant ou arrière sur les sujets et fournit un aperçu sur la FlexWindow pour une expérience selfie mains libres.
Une photo de trois amis est visible depuis la Flex Window du Galaxy Z Flip6. Galaxy AI est utilisé pour zoomer sur les sujets en mode mains libres.
Photo prise avec le Galaxy Z Flip6#withGalaxy
Les portraits de l’appareil photo arrière se distinguent
Utilisez la FlexWindow pour donner un aperçu à vos sujets pendant que vous les photographiez en 50 mégapixels. Ensuite, prenez une photo pour réaliser des portraits lumineux et détaillés, même à contre-jour.
Photo prise avec le Galaxy Z Flip6#withGalaxy
PHOTO ASSIST
Retouches sans effort : merci Galaxy AI
Generative Edit
Exploitez votre créativité avec Generative Edit dans Photo Assist pour déplacer, redimensionner ou supprimer des objets entiers de vos photos et remplir l’arrière-plan où ils se trouvaient auparavant.
L’un des sujets est sélectionné et déplacé vers un autre endroit de la photo. Les zones manquantes sont comblées à l’aide de l’IA.
Instant Slow-mo
Mettez l’accent sur les moments clés en appliquant le ralenti à vos vidéos et partagez-les ou enregistrez-les.
La vidéo est lue et commence à ralentir lorsque vous appuyez sur l’écran pour afficher Instant Slow-mo.
Photo prise avec le Galaxy Z Flip6#withGalaxy
Live Effect
Ajoutez de la profondeur pour donner une nouvelle vie à vos photos.
Live Effect est appliqué sur le sujet d’une photo pour donner un effet 3D.
Voir, photographier, partager, même la nuit
Les détails restent nets et clairs, même dans l'obscurité. Prenez des photos et publiez instantanément sur Instagram grâce au mode nuit de l'appareil photo intégré à l'application.,
Photo prise avec le Galaxy Z Flip6#withGalaxy
La plus grande autonomie sur un Galaxy Z Flip
Découvrez notre plus grosse batterie de Flip à ce jour. Associée au Snapdragon® 8 Gen 3 pour Galaxy, elle vous permet de parler, d’envoyer des SMS ou de jouer à votre guise, toute la journée.,
4000
4 000mAh
Écoutez de la musique jusqu’à
68heures
Regardez des vidéos jusqu’à
23heures
Le Snapdragon le plus rapide sur Galaxy Z Flip à ce jour,
Première Vapor Chamber sur un Galaxy Z Flip
Évitez la surchauffe et assurez un fonctionnement fluide avec une Vapor Chamber qui dissipe rapidement la chaleur.
On voit l’intérieur d’un Galaxy Z Flip6 avec deux séries de flèches qui en sortent pour représenter la chaleur qui s’en échappe.
Robuste. Fiable. Conçu pour durer
Bord de pliage renforcé
Renforcé pour résister à une plus grande pression.
Conçu pour durer
Découvrez notre charnière FlexHinge mince et innovante.
Blindé en aluminium
Le cadre en Armor Aluminum renforcé vous protège.,
Vraiment robuste
Excellente protection avec le verre Corning® Gorilla® Glass Victus® 2.
Résiste à l’eau
Résistance à l’eau classée IP48 pour les éclaboussures inattendues.
Envoyez des fichiers, des données et du contenu entre appareils, iOS et PC compris. C’est un moyen rapide et sûr de partager ouvertement.
Votre vie privée. Sécurisée.
Dans Confidentialité et sécurité, voyez rapidement quelles applications accèdent à vos informations, puis personnalisez vos paramètres. De plus, grâce aux fonctionnalités d’intelligence avancée, vous pouvez traiter les données pour les services d’IA depuis votre appareil Galaxy ou sur le cloud.
Passez à Galaxy
Passez à Galaxy, c'est facile. Améliorez votre expérience grâce à des fonctions exclusives aux utilisateurs de Galaxy.
Déjà essayé le dernier appareil Galaxy ? Et si vous le testiez maintenant ? Sur votre téléphone ! Il suffit de scanner le QR code et de télécharger l’appli.
Le Galaxy Z Flip6 est disponible dans une gamme de couleurs vives : Bleu, Jaune, Menthe et Ombre Argenté. Le Noir Artisanal, le Blanc et le Pêche sont des couleurs exclusives disponibles uniquement sur Samsung.com.
Le Galaxy Z Flip6 est équipé de plusieurs fonctionnalités d’IA, notamment Suggested Replies, une nouvelle fonction qui suggère des messages texte à l’aide de l’intelligence artificielle afin que vous puissiez y répondre même lorsque le Galaxy Z Flip6 est fermé, idéal lorsque vous êtes en déplacement. D’autres fonctionnalités d’IA incluent Live Translate et Interpreter. L’appareil photo bénéficie également d’une mise à niveau IA grâce à ProVisual Engine qui applique une qualité d’image optimisée aux éléments du sujet pour des portraits encore plus réussis.,,
Le Galaxy Z Flip6 est équipé d’un appareil photo arrière de 50 MP et du ProVisual Engine pour des photos plus nettes et lumineuses. Lorsque vous prenez des portraits, vous et votre sujet pouvez prévisualiser l’image grâce à la FlexWindow. Vous pouvez même garder les mains libres grâce au FlexMode, ce qui rend les selfies plus faciles que jamais.,
La FlexCam est conçue pour améliorer l’expérience du selfie en permettant d’avoir les mains libres à partir de l’appareil photo arrière. Auto Zoom vous aide à capturer sans effort le meilleur angle en zoomant ou en dézoomant sur vos sujets, puis en fournissant un aperçu dans la FlexWindow. AI Zoom garantit ensuite une qualité optimale pour vos photos.,
Le Galaxy Z Flip6 est plus compact et présente un nouveau design flottant amélioré par rapport au Galaxy Z Flip5, donnant l’impression que l’écran flotte sur le cadre. Il est également doté d’un rail d’appareil photo audacieux.,,
Cette fonctionnalité est accessible via les Paramètres. Une fois que vous avez choisi votre écran, vous pouvez personnaliser la mise en page et la façon dont les notifications seront affichées, et choisir divers widgets.,,
Le Galaxy Z Flip6 est doté d’une charnière FlexHinge durable et a été renforcé par un cadre Enhanced Armor Aluminum et un verre Corning® Gorilla® Glass Victus® 2.,,,
Le Galaxy Z Flip6 est doté d’une batterie de 4 000 mAh pour toute une journée d’autonomie. Profitez de 68 heures de musique ou regardez des vidéos pendant 23 heures.,,
Le Galaxy Z Flip6 dispose d’une capacité de batterie de 300mAh en plus par rapport au Galaxy Z Flip5, d’un appareil photo arrière de 50 MP et du tout premier système de refroidissement Vapor Chamber sur Galaxy Z Flip.
BleuJauneMentheOmbre ArgentéNoir ArtisanalCouleurs exclusives en ligneBlancCouleurs exclusives en lignePêcheCouleurs exclusives en ligne
Angle prédéfini
* Les couleurs exclusives en ligne sont uniquement disponibles sur Samsung.com.
Comparé aux précédents modèles Galaxy Z Flip.
Auto Zoom disponible en FlexMode avec l’appareil photo arrière et se désactive si le zoom est réglé manuellement. Limité dans des conditions de faible luminosité. Peut ne pas fonctionner si l’appareil est en mouvement ou si le sujet est trop proche.
La fonctionnalité Interpreter nécessite une connexion au Samsung Account. Certaines langues peuvent nécessiter le téléchargement du pack de langues. La disponibilité du service peut varier selon la langue. L’exactitude des résultats n’est pas garantie. La disponibilité et les fonctionnalités prises en charge peuvent varier selon le pays, la région ou l’opérateur. La disponibilité des langues prises en charge peut varier.
La résolution de 50 MP est disponible uniquement sur l’appareil photo arrière du Galaxy Z Flip6.
L’autonomie réelle de la batterie peut varier en fonction du réseau, de l’utilisation des fonctionnalités et des applications, de la fréquence des appels et des messages, du nombre de charges et de nombreux autres facteurs. Estimation faite selon les habitudes d’un utilisateur moyen, compilée et réalisée indépendamment par UX Connect Research avec les réglages par défaut sur des réseaux LTE et 5G Sub6.
* Épaisseur mesurée de haut en bas du verre lorsqu’il est déplié.
La disponibilité de la couleur peut varier selon les pays ou le fournisseur de service.
Interpreter peut être visualisé à partir de l’écran principal et de FlexWindow, mais cette fonction doit être activée manuellement. Non disponible uniquement sur FlexWindow.
La fonctionnalité Suggested Replies nécessite une connexion réseau pour recevoir des messages. Elle peut suggérer des réponses sans connexion réseau une fois que les messages sont reçus par l’appareil. Connexion au Samsung Account requise. La fonctionnalité Suggested Replies est uniquement prise en charge sur la FlexWindow. La disponibilité du service peut varier selon la langue, le pays et l’application. L’exactitude des résultats n’est pas garantie.
Séquences raccourcies et simulées. Résultats à des fins d'illustration uniquement. La disponibilité du service peut varier selon le pays, la langue ou le modèle de l'appareil. Nécessite une connexion internet et l’inscription à un compte Google. Les utilisateurs peuvent avoir besoin de télécharger ou de mettre à jour l'application Google Gemini à la dernière version. Vérifiez l'exactitude des réponses. Gemini est une marque déposée de Google LLC. L'option Gemini est déployé sur certains appareils et dans certains pays - opte pour Gemini depuis ton Assistant Google ou en téléchargeant l'application Gemini.
Séquences raccourcies et simulées. Résultats à titre d’illustration uniquement. La disponibilité du service peut varier en fonction du pays, de la langue et du modèle d’appareil. Nécessite une connexion Internet. Les utilisateurs peuvent avoir besoin de mettre à jour Android et l’application Google. Fonctionne sur les applications et les surfaces compatibles. Les résultats peuvent varier en fonction des correspondances visuelles. L’exactitude des résultats n’est pas garantie. La fonctionnalité Circle to Search n’est pas disponible via la FlexWindow.
La fonctionnalité Live Translate nécessite une connexion réseau pour recevoir des messages d’appel. Elle peut traduire sans connexion réseau une fois que les messages d’appel sont reçus par l’appareil. La connexion à un Samsung Account est requise. Live Translate n’est disponible que sur les applications de Téléphone Samsung préinstallées et certaines applications de tiers. La disponibilité du service peut varier selon la langue ou la région. Certaines langues peuvent nécessiter le téléchargement du module linguistique. L’exactitude des résultats n’est pas garantie.
Les fonctionnalités de transcription et de résumé de Transcript Assist nécessitent une connexion réseau et à un Samsung Account. Transcript Assist n’est disponible que sur l’application Samsung Voice Recorder préinstallée ou sur les fichiers enregistrés à l’aide de l’application Téléphone Samsung préinstallée, de l’application Samsung Notes ou de l’application Samsung Interpreter. La fonction d’enregistrement vocal dans l’application Téléphone Samsung préinstallée peut ne pas être prise en charge dans certains pays. Les fichiers audio doivent durer moins de trois heures pour être traités. La fonctionnalité de résumé de Transcript Assist peut être activée lorsqu’un certain nombre de caractères est atteint. La disponibilité des services peut varier selon la langue. L’exactitude des résultats n’est pas garantie.
Les résultats peuvent varier selon la luminosité et les conditions, notamment si les sujets sont multiples, en mouvement ou en dehors de la zone de mise au point automatique.
Le zoom de qualité optique est assuré par le capteur de pixels adaptatif.
Le zoom 2x doit être activé dans les paramètres de l’application Camera Assistant. L’application Camera Assistant peut être téléchargée sur le Galaxy Store.
AI Zoom est appliqué aux distances entre les longueurs de zoom numérique. L’exactitude des résultats n’est pas garantie.
La fonctionnalité Generative Edit pour Photo Assist nécessite une connexion réseau et à un Samsung Account. Retoucher avec Generative Edit peut résulter en une photo redimensionnée jusqu’à 12 MP. Un filigrane visible est superposé sur l’image lors de l’enregistrement afin d’indiquer que l’image a été générée par l’IA. L’exactitude et la fiabilité de l’image générée ne sont pas garanties.
La fonctionnalité Instant Slow-mo pour Photo Assist est disponible sur Samsung Video Player et Samsung Gallery. Peut ne pas être disponible sur certains types de fichiers vidéo. Exactitude des résultats non garantie.
La fonctionnalité Live Effect pour Photo Assist prend en charge les fichiers JPG, HEIC (HEIF), BMP, PNG et WebP. Peut ne pas être disponible sur certaines photos. L’exactitude et la fiabilité des résultats générés ne sont pas garanties.
Les produits Snapdragon sont des produits de Qualcomm Technologies, Inc. et/ou de ses filiales.
Limité aux smartphones pliables Galaxy.
La valeur standard a été vérifiée dans des conditions de laboratoire de tierce partie. La valeur standard est la valeur moyenne évaluée considérant la déviation de la capacité de la batterie parmi les échantillons de batterie ayant passé le test dans le cadre de la norme IEC 61960. La capacité évaluée est de 3 887 mAh pour le Galaxy Z Flip6. L’autonomie réelle de la batterie peut varier selon l’environnement réseau, les habitudes d’utilisation et d’autres facteurs.
Sur la base des conditions de test du laboratoire interne de Samsung avec la version de pré-lancement du modèle donné connecté aux écouteurs par Bluetooth avec des paramètres par défaut sur LTE. Estimation par rapport à la capacité de la batterie et au courant mesuré sur la consommation d’énergie de la batterie pendant la lecture vidéo (résolution du fichier vidéo 720p, enregistré sur l’appareil) et la lecture audio (fichier mp3, 192 kbps, enregistré sur l’appareil avec l’écran LCD éteint), respectivement. Le temps réel de lecture vidéo et audio diffère selon la connexion réseau, les paramètres, le format du fichier, la luminosité de l’écran, l’état de la batterie et de nombreux autres facteurs.
Les transferts câblés depuis les appareils Android™ nécessitent que l’appareil récepteur dispose d’Android™ 4.3 ou version ultérieure et que l’appareil émetteur dispose d’Android™ 4.3 ou version ultérieure. Les transferts peuvent être effectués sans câble via une connexion sans fil. Pour les connexions sans fil, l’appareil récepteur doit être équipé d’Android™ 4.0 ou version ultérieure et l’appareil émetteur doit être équipé d’Android™ 4.0 ou version ultérieure. Ouvrez Smart Switch Mobile dans « Paramètres » sur l’appareil Galaxy récepteur ou téléchargez l’application Smart Switch Mobile depuis le Galaxy Store. Les données, le contenu et les applications disponibles pour le transfert peuvent varier selon le mode de transmission.
Les transferts câblés depuis les appareils iOS nécessitent que l’appareil récepteur dispose d’Android™ 4.3 ou version ultérieure et que l’appareil émetteur dispose d’iOS 5 ou version ultérieure. Les transferts peuvent être effectués sans câble via une connexion sans fil ou iCloud. Pour les connexions sans fil, l’appareil récepteur doit être équipé d’Android™ 4.0 ou version ultérieure et l’appareil émetteur doit être équipé d’iOS 12 ou version ultérieure. Les transferts iCloud nécessitent un appareil récepteur équipé d’Android™ 4.0 ou version ultérieure et un appareil émetteur équipé d’iOS 5 ou version ultérieure. Ouvrez Smart Switch Mobile dans « Paramètres » sur l’appareil Galaxy récepteur ou téléchargez l’application Smart Switch Mobile depuis le Galaxy Store. Pour les transferts sans fil, téléchargez Smart Switch pour iOS sur l’App Store de votre iPhone ou iPad. Les données, le contenu et les applications disponibles pour le transfert peuvent varier selon le mode de transmission. Les contacts, la galerie, les vidéos, les calendriers et les rappels peuvent être transférés sans fil depuis un appareil iOS.
Il est recommandé d’utiliser une connexion filaire lors du transfert simultané de divers ensembles de données.
La fonctionnalité Quick Share entre appareils Galaxy est disponible avec les systèmes d’exploitation suivants : smartphones et tablettes avec Android OS version 10.0 (Q) et One UI 2.1 ou ultérieure, PC fonctionnant sous Windows 10 ou version ultérieure. Nécessite une connexion à un Samsung Account et une connexion Wi-Fi et Bluetooth. Partage rapide vers les appareils iOS et Android disponible en envoyant un lien partagé : les fichiers individuels partagés ne peuvent pas dépasser 5 Go (pour un total de 5 Go par jour) et le lien expirera après deux jours ; nécessite une connexion à un Samsung Account et une connexion Internet.
Le cadre Armor Aluminum ne comprend pas les touches de volume et latérales ni le plateau SIM.
Par rapport aux modèles précédents.
Le verre Corning® Gorilla® Glass Victus® 2 est appliqué à l’avant et à l’arrière de l’appareil.
Basé sur des conditions d’essai de submersion en laboratoire jusqu’à 1,5 mètre d’eau douce pendant 30 minutes et pour une protection contre un objet solide de plus de 1 mm tel qu’un fil. Utilisation déconseillée à la plage ou la piscine. La résistance à l’eau de l’appareil n’est pas permanente et peut diminuer avec le temps en raison de l’usure normale. Non résistant à la poussière ou au sable.
La couverture Samsung Care+, le type de service et les détails de la promotion peuvent varier selon le pays/la région et une franchise (frais de service) peut s’appliquer. Pour bénéficier de l’avantage promotionnel Samsung Care+, une inscription peut être nécessaire. Pour obtenir des informations détaillées sur Samsung Care+, veuillez consulter le site https://www.samsung.com/samsung-care-plus/.
Energy Score est disponible sur les téléphones Android (Android 11 ou version ultérieure) et nécessite l’application Samsung Health (v6.27 ou version ultérieure). Connexion au Samsung Account requise. La disponibilité des services peut varier selon le pays ou la région. Pour consulter Energy Score, les données de santé suivies depuis la Samsung Galaxy Watch ou le Samsung Galaxy Ring doivent être synchronisées avec l’application Samsung Health. Nécessite au moins les données d’activité et de sommeil du jour précédent, et les données de fréquence cardiaque pendant le sommeil. Non destiné à la détection, au diagnostic, ni au traitement d’une condition médicale. Le résultat est fourni à titre de référence personnelle uniquement. Veuillez consulter un professionnel de santé pour obtenir des conseils.
Galaxy Watch Ultra et Galaxy Watch7 vendus séparément.
Mesurée en diagonale, la taille de l’écran principal du Galaxy Z Flip6 est de 6,7 pouces dans le rectangle complet et de 6,6 pouces lorsqu’on tient compte des coins arrondis. La surface d’affichage réelle est plus petite en raison des coins arrondis et de l’encoche de l’appareil photo.
Mesurée en diagonale, la taille de l’écran extérieur du Galaxy Z Flip6 est de 3,4 pouces dans le rectangle complet ; la surface visible réelle représente environ 95 % du rectangle complet en raison des coins arrondis et de l’encoche inférieure.
Certaines applications ne sont pas compatibles avec les widgets FlexWindow.
Les fonctionnalités de génération de contenu nécessitent une connexion réseau et la connexion à un compte Google. L’exactitude et la fiabilité du contenu généré ne sont pas garanties. La disponibilité des fonctionnalités peut varier selon les modèles.
La fonctionnalité Photo Ambient nécessite une connexion réseau pour recevoir les données météorologiques. Elle peut refléter les données météorologiques sans connexion réseau une fois que les données sont reçues par l’appareil. L’affichage des conditions météorologiques en temps réel peut être retardé car le service dépend des mises à jour des informations météorologiques locales. Certaines photos prises à l’intérieur, la nuit ou en basse résolution peuvent ne pas être compatibles. L’exactitude et la fiabilité des résultats générés ne sont pas garanties. Le service n’est actuellement disponible que sur la série Galaxy S24, le Galaxy Z Flip6 et le Galaxy Z Fold6. La disponibilité des fonctionnalités peut varier selon le modèle.
Vidéos pratiques pour le Galaxy Z Flip6
'));
}
}
};
const isZoom = function () {
let zoomLevel = 100 / ((window.innerWidth / window.outerWidth) * 100);
if (zoomLevel > 1.7) {
document.documentElement.classList.add('browser-zoomed-175');
} else {
document.documentElement.classList.remove('browser-zoomed-175');
}
if (zoomLevel > 3) {
document.documentElement.classList.add('browser-zoomed-300');
} else {
document.documentElement.classList.remove('browser-zoomed-300');
}
if (zoomLevel > 4) {
document.documentElement.classList.add('browser-zoomed-400');
} else {
document.documentElement.classList.remove('browser-zoomed-400');
}
};
const getViewerUrl = function () {
let defaultParams = '',
viewerSection = document.querySelector('.js-colors-viewer'),
viewerButton = document.querySelector('.viewer-btn'),
viewerModel = utils.isLowNetwork() ? viewerButton.getAttribute('data-model-name') : viewerSection.getAttribute('data-model-name'),
viewerColor = utils.isLowNetwork() ? viewerButton.getAttribute('data-model-color') : viewerSection.getAttribute('data-model-color'),
viewerUrl = '//www.samsung.com/global/galaxy/3d-360/viewer/?';
defaultParams = '&gesture_guide=0';
defaultParams += '&bgcolor=transparent';
defaultParams += '&skin=colorlayer';
defaultParams += '&theme=roundlayer';
defaultParams += '&auto_rotation=0';
defaultParams += '&intro=1';
defaultParams += '&ruler=1';
defaultParams += '&breakpoint_criteria=outer';
defaultParams += '&breakpoint_desktop_width=1024';
defaultParams += '&x=180';
defaultParams += '&intro_pose=3';
defaultParams += '&intro_pose_hold=1';
defaultParams += '&intro_pose_hold_limit=9999999';
defaultParams += '&controls=0';
defaultParams += '&use_zoom=0';
defaultParams += '&use_pan=0';
defaultParams += '&screen_mode=on';
// model_name
viewerUrl += 'model_name=' + 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 += defaultParams;
viewerUrl += '#color=' + (viewerColor ? viewerColor : 'null');
return viewerUrl;
};
return {
addLoadStatusClass: addLoadStatusClass,
setResolution: setResolution,
clickSup: clickSup,
centeredFocus: centeredFocus,
setArBanner: setArBanner,
isZoom: isZoom,
getViewerUrl: getViewerUrl,
}
})();
var SEQUENCEPLAYER = (function () {
var init = function (opts) {
this.opts = opts;
this.targetElement = opts.targetElement;
this.imageList = [];
this.loadCount = 0;
this.playIndex = null;
this.imageLoadOffset = !!!this.opts.imageLoadOffset ? 1.5 : this.opts.imageLoadOffset;
this.loadComplete = false;
this.loadStart = false;
this.windowTopOffset = null;
this.windowBottomOffset = null;
this.targetTopOffset = null;
this.targetBottomOffset = null;
this.isImage = null;
this.setCanvas();
this.loadImages();
return this;
};
var fn = init.prototype;
fn.setCanvas = function () {
var _checkElement = function (element) {
if (element.tagName == 'CANVAS') {
} else {
this.canvas = document.createElement('CANVAS');
if (this.opts.addType == 'append') {
this.targetElement.appendChild(this.canvas);
} else {
var firstChild = this.targetElement.firstElementChild;
if (!!!firstChild) {
this.targetElement.appendChild(this.canvas);
} else {
firstChild.parentNode.insertBefore(this.canvas, firstChild);
}
}
}
};
_checkElement.call(this, this.targetElement);
this.context = this.canvas.getContext('2d');
};
fn.getCanvasOffset = function () {
this.targetTopOffset = this.targetElement.getBoundingClientRect().top + window.pageYOffset;
this.targetBottomOffset = this.targetElement.getBoundingClientRect().bottom + window.pageYOffset;
};
fn.nextImageLoad = function() {
if (this.loadCount < this.opts.endNum) {
this.loadCount++;
this.isImage = null;
this.setLoadImage(this.loadCount);
} else {
this.loadComplete = true;
this.targetElement.classList.add('is-seq-loaded');
}
};
fn.setLoadImage = function (idx) {
var self = this;
var requestImageData = function(apiUrl) {
return fetch(apiUrl)
.then((response) => {
if(!response.ok) {
console.warn(`Failed to load : ${apiUrl}`);
}
return response.blob();
}).catch(() => {
console.warn(`Failed to load : ${apiUrl}`);
});
};
for (var i = this.opts.startNum; i <= this.opts.endNum; i++) {
(function (idx) {
var _imageLoadEvent = function () {
if (self.loadCount < self.opts.endNum) {
self.loadCount++;
requestImageData(self.opts.path + self.opts.name + idx + '.' + self.opts.extension)
.then(function(imgData) {
let isImage = new Image();
isImage.decoding = 'sync';
isImage.src = window.URL.createObjectURL(imgData);
self.imageList[idx] = isImage;
});
} else {
self.loadComplete = true;
self.targetElement.classList.add('is-seq-loaded');
}
};
_imageLoadEvent();
})(i);
}
};
fn.startLoadImages = function () {
if (this.loadStart) return;
self.loadStart = true;
this.setDefaultImage(0);
this.setLoadImage(0);
};
fn.loadImages = function () {
var self = this;
var _checkImageLoadOffset = function () {
self.windowTopOffset = window.pageYOffset - (window.innerHeight * self.imageLoadOffset);
self.windowBottomOffset = window.pageYOffset + window.innerHeight + (window.innerHeight * self.imageLoadOffset);
self.getCanvasOffset();
if (self.windowBottomOffset > self.targetTopOffset && self.windowTopOffset < self.targetTopOffset ||
self.windowTopOffset < self.targetBottomOffset && self.windowBottomOffset > self.targetBottomOffset ||
self.windowTopOffset < self.targetTopOffset && self.windowBottomOffset > self.targetBottomOffset ||
self.windowTopOffset > self.targetTopOffset && self.windowBottomOffset < self.targetBottomOffset) {
window.removeEventListener('scroll', _checkImageLoadOffset);
self.startLoadImages();
}
};
this.getCanvasOffset();
_checkImageLoadOffset();
window.addEventListener('scroll', _checkImageLoadOffset);
};
fn.setDefaultImage = function (idx) {
var self = this;
this.defaultImage = new Image();
this.defaultImage.src = this.opts.path + this.opts.name + idx + '.' + this.opts.extension;
this.defaultImageEvent = function () {
self.canvas.width = self.defaultImage.naturalWidth;
self.canvas.height = self.defaultImage.naturalHeight;
self.opts.width = self.canvas.width;
self.opts.height = self.canvas.height;
self.context.clearRect(0, 0, self.opts.width, self.opts.height);
self.context.drawImage(self.defaultImage, 0, 0, self.opts.width, self.opts.height);
};
if (!!!self.opts.width || !!!self.opts.height) {
this.defaultImage.addEventListener('load', this.defaultImageEvent);
} else {
self.canvas.width = self.opts.width;
self.canvas.height = self.opts.height;
}
};
fn.play = function (opts) {
var idx = opts.index > this.opts.endNum ? this.opts.endNum : opts.index;
if (this.loadComplete) {
this.drawCanvas(idx);
} else {
this.drawCanvas(0);
}
};
fn.drawCanvas = function (index) {
if (this.playIndex == null && this.oldPlayIndex == index) return;
this.context.clearRect(0, 0, this.opts.width, this.opts.height);
if (this.imageList[index >= 0 ? index : this.playIndex] && this.imageList[index >= 0 ? index : this.playIndex].complete) {
this.context.drawImage(this.imageList[index >= 0 ? index : this.playIndex], 0, 0, this.opts.width, this.opts.height);
}
this.oldPlayIndex = this.playIndex;
if (index) {
this.playIndex = index;
}
};
return function (opts) {
return new init(opts);
};
})();
flagship.features.setting = (function () {
const resize = window.flagship.common.resize,
common = window.flagship.features.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)),
isGlobal = document.documentElement.classList.contains('global');
let els = {};
const init = function () {
common.addLoadStatusClass();
common.setArBanner();
setElements();
bindEvents();
setResize();
if (!maxOs && !touchDevice) {
setScrollControl();
}
setImageLoader();
setVideoLoader();
setMp4VideoLoader();
setCenteredfocus();
setDisclaimerNumber();
setDisclaimer();
setVideoTheme();
setVideoBlind();
common.isZoom();
resize.add(common.isZoom);
};
const setElements = function () {
// video
els.videoWrap = document.querySelectorAll('.js-video-wrap');
};
const bindEvents = function () {
window.addEventListener('load', anchorPosition);
window.addEventListener('hashchange', anchorPosition);
};
const anchorPosition = function () {
if (window.location.hash != '') {
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);
}
};
const 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 = utils.scrollController();
scrollController.init({
speed: 120,
duration: 0.6
});
};
const setImageLoader = function () {
window.imageLoader = utils.mediaLoader({
lazyClass: '.js-img-src',
responsiveClass: '.js-res-img',
preset: 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 = utils.mediaLoader({
type: 'bgImage',
lazyClass: '.js-bg-img',
loadOption: [{
resolution: 1920,
attribute: '',
bgOpts: ''
}],
visiblePoint: 2
});
};
const setVideoLoader = function () {
window.videoLoader = utils.mediaLoader({
type: 'video',
lazyClass: '.js-video-src',
responsiveClass: '.js-res-video',
preset: 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.videoHandler && !video.videoHandler.wrap.classList.contains('is-loaded')) {
video.videoHandler.wrap.classList.add('is-loaded');
}
}
});
};
const setMp4VideoLoader = function () {
window.mp4VideoLoader = utils.mediaLoader({
type: 'mp4Video',
lazyClass: '.js-mp4-video-src',
responsiveClass: '.js-res-video',
preset: 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.videoHandler && !video.videoHandler.wrap.classList.contains('is-loaded')) {
video.videoHandler.wrap.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.clickSup);
}
};
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++) {
let controlBlind = els.videoWrap[i].querySelector('.js-video-control .blind');
controlBlind.innerHTML = (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) ? LOCAL_VARI.play : 'play';
}
};
return {
init: init
}
})();
flagship.features.setting.init();
(function () {
window.flagship.features.clickToVideo = (function () {
const utils = window.flagship.common.utils;
let els = {
clickToVideosWrap: [],
clickToVideo: [],
};
const init = function () {
els.clickToVideosWrap = document.querySelectorAll('.js-click-video');
if (els.clickToVideosWrap.length > 0) {
setProperty();
bindEvents();
}
};
const setProperty = function () {
for (let i = 0; i < els.clickToVideosWrap.length; i++) {
els.clickToVideosWrap[i].video = els.clickToVideosWrap[i].querySelector('video');
els.clickToVideosWrap[i].controller = els.clickToVideosWrap[i].querySelector('.js-video-control');
els.clickToVideosWrap[i].controller.video = els.clickToVideosWrap[i].video;
}
};
const bindEvents = function () {
eventList.setVideo();
eventHandler.click();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.clickToVideosWrap.length; i++) {
els.clickToVideosWrap[i].controller.addEventListener('click', eventList.clickVideoCta);
}
}
};
const eventList = {
setVideo: function () {
for (let i = 0; i < els.clickToVideosWrap.length; i++) {
els.clickToVideo[i] = utils.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');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
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');
}
}
});
}
},
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.features.headline = (function () {
const utils = window.flagship.common.utils;
let els = {};
const init = function () {
setElements();
bindEvents();
};
const setElements = function() {
els.moveText = document.querySelectorAll('.js-move-text');
};
const bindEvents = function () {
eventList.setScene();
eventHandler.scroll();
eventList.scroll();
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
}
};
const eventList = {
scroll: function () {
for (let i = 0; i < els.moveText.length; i++) {
els.moveText[i].sceneObj.trackAnimation(function () {
let progressRange = !!this.trackElement.classList.contains('features-high-resolution__img-bottom') ? -60 : -10;
let moveRange = !!this.trackElement.classList.contains('features-high-resolution__img-bottom') ? -55 : -5;
if (this.progress >= progressRange && this.progress <= 100) {
if(this.progress >= moveRange) {
els.moveText[i].classList.add('is-moved');
if (this.trackElement.classList.contains('common-description')) this.trackElement.style.transitionDelay = "0.2s";
}
if(this.progress <= moveRange) {
els.moveText[i].classList.remove('is-moved');
}
}
});
}
},
setScene: function () {
for(let i = 0; i < els.moveText.length; i++) {
els.moveText[i].sceneObj = SCROLLER({
trackElement: els.moveText[i],
useFixed: false,
useStrictMode: false
});
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.howtoPopup = (function () {
const utils = window.flagship.common.utils;
resize = window.flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
prevDevice = null,
currOpener = null;
let isDrag = false;
const init = function () {
els.layerPopup = document.querySelector('.js-howto-popup');
if (!!els.layerPopup) {
setElements();
setAttribute();
bindEvents();
eventList.setPopup();
}
};
const setElements = function () {
els.contents = document.querySelector('#contents');
els.openCtas = document.querySelectorAll('.js-howto-popup-opener');
// popup content
els.closeCta = document.querySelector('.js-howto-popup-close-cta');
els.ytIframe = els.layerPopup.querySelector('iframe');
els.ytDesc = els.layerPopup.querySelector('.js-howto-popup-youtube-desc');
els.dimmed = els.layerPopup.querySelector('.js-howto-popup-dimmed');
// swiper
els.swiperContainer = els.layerPopup.querySelector('.swiper-container');
els.buttonWrap = els.swiperContainer.querySelectorAll('.swiper-slide');
els.arrowWrap = els.swiperContainer.querySelector('.js-howto-popup-arrow-wrap');
els.prevArrow = els.swiperContainer.querySelector('.swiper-button-prev');
els.nextArrow = els.swiperContainer.querySelector('.swiper-button-next');
els.scrollbar = els.swiperContainer.querySelector('.js-howto-popup-scrollbar');
};
const setAttribute = function () {
for (let i = 0 ; i < els.buttonWrap.length; i++) {
els.buttonWrap[i].openerCta = els.openCtas[i];
els.buttonWrap[i].button = els.buttonWrap[i].querySelector('button');
els.buttonWrap[i].button.openerCta = els.buttonWrap[i].openerCta;
}
};
const bindEvents = function () {
eventHandler.buttonsClick();
eventHandler.arrowClick();
resize.add(eventList.resize);
};
const eventHandler = {
buttonsClick: function () {
for (let i = 0 ; i < els.buttonWrap.length; i++) {
els.buttonWrap[i].button.addEventListener('click', function () {
eventList.setYoutube(els.buttonWrap[i].button);
});
}
},
arrowClick: function () {
els.nextArrow.addEventListener('click', function (e) {
swiperEventList.clickArrow('next');
});
els.nextArrow.addEventListener('keydown', function (e) {
swiperEventList.clickArrow('next');
});
els.prevArrow.addEventListener('click', function (e) {
swiperEventList.clickArrow('prev');
});
els.prevArrow.addEventListener('keydown', function (e) {
swiperEventList.clickArrow('prev');
});
}
};
const eventList = {
setPopup: function () {
for (let i = 0; i < els.openCtas.length; i++) {
els.openCtas[i].index = i;
utils.layerPopup({
layerPopup: els.layerPopup,
layerPopupClass: '.js-howto-popup',
openerEvent: {
element: els.openCtas[i],
},
closeCtas: [els.closeCta],
dimmed: els.dimmed,
moveTarget: document.documentElement,
contents: els.contents,
show: {
start: function (target) {
let allVideos = document.querySelectorAll('video');
for (let i = 0; i < allVideos.length; i++) {
if (!allVideos[i].paused) allVideos[i].pause();
}
els.layerPopup.removeAttribute('aria-hidden');
els.layerPopup.removeAttribute('tabindex');
els.layerPopup.classList.add('is-init');
currOpener = target.openerCta;
eventList.itemImageLoader();
swiperEventList.activeCheck();
},
end: function (target) {
els.layerPopup.classList.add('is-open');
eventList.setYoutube(target);
}
},
hide: {
start: function () {
els.layerPopup.classList.remove('is-open');
},
end: function (target) {
if(utils.detector.isIosDevice) target.openerCta.style.display = '';
setTimeout(function () {
els.layerPopup.classList.remove('is-init');
}, 300);
eventList.clearYoutube();
}
}
});
}
},
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;
let oldActive = els.swiperContainer.querySelector('.swiper-slide.is-active');
if (!!oldActive) {
oldActive.classList.remove('is-active');
oldActive.button.removeAttribute('title');
}
els.buttonWrap[opener.index].classList.add('is-active');
accessibility.setTitle(els.buttonWrap[opener.index]);
},
clearYoutube: function () {
els.ytIframe.removeAttribute('src');
els.ytDesc.innerHTML = '';
},
resize: function (currRes) {
currDevice = currRes;
if (prevDevice != currDevice) {
if (els.layerPopup.classList.contains('is-open')) {
swiperEventList.activeCheck();
}
prevDevice = currDevice;
}
},
itemImageLoader: function () {
for (let i = 0; i < els.buttonWrap.length; i++) {
if (!els.buttonWrap[i].querySelector('img').classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.buttonWrap[i].querySelector('img')]);
}
}
}
};
const swiperEventList = {
set: function () {
if(els.swiperContainer.swiper == null) {
new Swiper(els.swiperContainer, {
init: false,
slidesPerView: 'auto',
scrollbar: {
el: els.scrollbar,
draggable: true
}
});
els.swiperContainer.swiper.on('init', swiperEventList.init);
els.swiperContainer.swiper.on('slideChange', swiperEventList.slideChange);
els.swiperContainer.swiper.on('transitionEnd', swiperEventList.slideTransition);
els.swiperContainer.swiper.on('scrollbarDragEnd', function () {
isDrag = true;
swiperEventList.slideTransition();
});
els.swiperContainer.swiper.init();
}
},
destroy: function () {
if(els.swiperContainer.swiper != null) {
els.swiperContainer.swiper.scrollbar.dragEl.style = '';
els.swiperContainer.swiper.scrollbar.destroy(true);
els.swiperContainer.swiper.navigation.destroy(true);
els.swiperContainer.swiper.destroy(true);
els.swiperContainer.swiper = null;
}
},
init: function () {
let self = this,
notification = self.el.querySelector('.swiper-notification');
if (!!notification) self.el.removeChild(notification);
setTimeout(function () {
accessibility.slide();
accessibility.arrow();
}, 500);
},
slideChange: function () {
accessibility.slide();
accessibility.arrow();
},
slideTransition: function () {
clearTimeout(els.arrowTimeout);
els.arrowTimeout = setTimeout(function () {
if (els.swiperContainer.swiper.isBeginning && !els.swiperContainer.swiper.isEnd) {
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
if (!isDrag) els.nextArrow.focus();
els.prevArrow.style.display = 'none';
} else if (!els.swiperContainer.swiper.isBeginning && els.swiperContainer.swiper.isEnd) {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
if (!isDrag) els.prevArrow.focus();
els.nextArrow.style.display = 'none';
} else {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
}
}, 200);
isDrag = false;
},
clickArrow: function (type) {
if (type == 'next') {
els.swiperContainer.swiper.slideNext();
} else {
els.swiperContainer.swiper.slidePrev();
}
},
activeCheck: function () {
let isSlide = ((currDevice.indexOf('mobile') > -1) && (els.buttonWrap.length >= 3)) ||
((currDevice.indexOf('desktop') > -1 || currDevice == 'tablet') && (els.buttonWrap.length >= 5));
if (isSlide) {
els.scrollbar.style.display = 'block';
els.arrowWrap.style.display = 'block';
swiperEventList.set();
if (currOpener != null) {
if (currOpener.index == 2) {
els.swiperContainer.swiper.slideTo(1, 0);
els.prevArrow.style.display = '';
els.nextArrow.style.display = '';
} else if (currOpener.index == 3) {
els.swiperContainer.swiper.slideTo(2, 0);
els.prevArrow.style.display = '';
els.nextArrow.style.display = 'none';
} else {
els.swiperContainer.swiper.slideTo(0, 0);
els.prevArrow.style.display = 'none';
els.nextArrow.style.display = '';
}
}
} else {
els.scrollbar.style.display = 'none';
els.arrowWrap.style.display = 'none';
swiperEventList.destroy();
}
}
};
const accessibility = {
setTitle: function(target){
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.button.setAttribute('title', LOCAL_VARI.selected);
} else {
target.button.setAttribute('title', 'Selected');
}
},
slide: function () {
for (let i = 0; i < els.swiperContainer.swiper.slides.length; i++) {
if (i != els.swiperContainer.swiper.activeIndex && i != (els.swiperContainer.swiper.activeIndex + 1)) {
utils.onAccessibility(els.swiperContainer.swiper.slides[i]);
} else {
utils.offAccessibility(els.swiperContainer.swiper.slides[i]);
}
}
},
arrow: function () {
if (els.swiperContainer.swiper.isBeginning && !els.swiperContainer.swiper.isEnd) {
utils.offAccessibility(els.nextArrow);
utils.onAccessibility(els.prevArrow);
} else if (!els.swiperContainer.swiper.isBeginning && els.swiperContainer.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.features = window.flagship.features || {};
window.flagship.features.oneColumnCarousel = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
let els = {};
let prevDevice;
let currDevice = resize.checkResolution();
let dimmedClass = 'is-dimmed';
const isRtl = document.documentElement.classList.contains('rtl');
const init = function () {
els.section = document.querySelectorAll('.js-one-column-carousel');
if (!!els.section) {
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiperContainer = els.section[i];
els.section[i].swiperSlides = els.section[i].swiperContainer.querySelectorAll('.swiper-slide');
els.section[i].prevArrow = els.section[i].parentElement.querySelector('.swiper-button-prev');
els.section[i].nextArrow = els.section[i].parentElement.querySelector('.swiper-button-next');
els.section[i].scrollbar = els.section[i].parentElement.querySelector('.swiper-scrollbar');
}
};
const setProperty = function() {
for (let i = 0; i < els.section.length; i++) {
let isSlideLength = els.section[i].swiperSlides.length;
for (let j = 0; j < isSlideLength; j++) {
els.section[i].swiperSlides[j].video = els.section[i].swiperSlides[j].querySelector('.common-video__video');
}
}
}
const bindEvents = function () {
eventList.load();
eventHandler.keydown();
eventHandler.click();
resize.add(eventList.resize);
};
const eventHandler = {
keydown: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
},
click: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
}
};
const eventList = {
load: function() {
swiperEvents.set();
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiper.init();
if (els.section[i].swiperSlides.length >= 2) {
els.section[i].swiper.init();
}
}
},
resize: function() {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
};
},
responsive: function() {
for (let i = 0; i < els.section.length; i++) {
eventList.resetDimmedSlide(els.section[i].swiper);
els.section[i].swiper.slideTo(0, false);
if (eventList.getCarouselSizeInfo(els.section[i].swiper).viewLength > 0 && currDevice != 'mobile') eventList.initDimmedSlides(els.section[i].swiper);
}
},
setMedia: function(swiper, index) {
let isIndex = index + 1 > swiper.slides.length -1 ? swiper.slides.length -1 : index + 1;
let videoLength = swiper.el.querySelectorAll('video').length - 1;
let imageLength = swiper.el.querySelectorAll('img').length - 1;
let videoloadComplateLength = swiper.el.querySelectorAll('.is-video-load-complete').length - 1;
let imageloadComplateLength = swiper.el.querySelectorAll('.is-img-load-complete').length - 1;
let nextVideo = swiper.slides[isIndex].querySelector('video');
let nextImage = swiper.slides[isIndex].querySelector('img');
if (videoloadComplateLength != videoLength) {
if (!!nextVideo) {
videoLoader.setResponsiveMedia([nextVideo]);
}
}
if (imageloadComplateLength != imageLength) {
if (!!nextImage) {
imageLoader.setResponsiveMedia([nextImage]);
}
}
},
resetVideo: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let isVideo = swiper.slides[i].video;
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
isVideo.currentTime = 0;
};
};
},
getCarouselSizeInfo: function(swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[isRtl ? 3 : 1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin)/slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
initDimmedSlides: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if ((swiper.activeIndex + eventList.getCarouselSizeInfo(swiper).viewLength) <= i) {
swiper.slides[i].classList.add(dimmedClass);
}
}
},
setDimmedSlide: function(swiper) {
if (currDevice != 'mobile') {
for (let i = 0; i < swiper.slides.length; i++) {
let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i;
if (dimmedSlide) {
swiper.slides[i].classList.add(dimmedClass);
} else {
swiper.slides[i].classList.remove(dimmedClass);
}
}
}
},
resetDimmedSlide: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
swiper.slides[i].classList.remove(dimmedClass);
}
},
arrowFocus: function(isFocusArrow, nextFocusArrow) {
setTimeout(() => {
if (isFocusArrow.classList.contains('swiper-button-disabled')) nextFocusArrow.focus();
}, 300);
},
}
const swiperEvents = {
set: function () {
for (let i = 0; i < els.section.length; i++) {
if (els.section[i].swiper == null) {
new Swiper(els.section[i].swiperContainer, {
init: false,
slidesPerView: 'auto',
navigation: {
nextEl: els.section[i].nextArrow,
prevEl: els.section[i].prevArrow,
},
scrollbar: {
el: els.section[i].scrollbar,
draggable: true
},
});
els.section[i].swiper.on('init', swiperEvents.init);
els.section[i].swiper.on('slideChange', swiperEvents.slideChange);
els.section[i].swiper.on('transitionEnd', swiperEvents.transitionEnd);
}
}
},
init: function () {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
accessibility.slide(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.initDimmedSlides(this);
},
slideChange: function () {
accessibility.slide(this);
eventList.resetVideo(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.setDimmedSlide(this);
if (this.realIndex > 0) eventList.setMedia(this, this.realIndex);
},
transitionEnd: function() {
if (this.slides.length < 3 && currDevice == 'mobile') return;
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length -1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize ||
carouselInfo.maxMoveSize <= carouselInfo.isMoveSize ||
(carouselInfo.isMoveSize > carouselInfo.lastBeforeSize && carouselInfo.maxMoveSize > carouselInfo.isMoveSize)) {
eventList.resetVideo(this);
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize >= carouselInfo.isMoveSize) {
eventList.resetVideo(this);
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
}, 0);
},
destroy: function (swiper) {
if (swiper != null) {
swiper.navigation.destroy(true);
swiper.destroy(true);
swiper = null;
}
},
};
const accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init,
}
})();
})();
(function () {
window.flagship.features.scrollVideo = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {
scrollVideoWraps: [],
scrollVideo: [],
scene: [],
},
currDevice = resize.checkResolution();
const init = function () {
els.scrollVideoWraps = document.querySelectorAll('div:not(.js-interactive-intro-video)>.js-scroll-video');
if (els.scrollVideoWraps.length > 0) {
setProperty();
eventList.setVideo();
eventList.setScene();
bindEvents();
}
};
const setProperty = function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scrollVideoWraps[i].video = els.scrollVideoWraps[i].querySelector('video');
els.scrollVideoWraps[i].controller = els.scrollVideoWraps[i].querySelector('.js-video-control');
els.scrollVideoWraps[i].controller.video = els.scrollVideoWraps[i].video;
els.scrollVideoWraps[i].startPoint = !!els.scrollVideoWraps[i].getAttribute('data-start-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-start-point')) : undefined;
els.scrollVideoWraps[i].reversePoint = !!els.scrollVideoWraps[i].getAttribute('data-reverse-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-reverse-point')) : undefined;
els.scrollVideoWraps[i].moStartPoint = !!els.scrollVideoWraps[i].getAttribute('data-mo-start-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-mo-start-point')) : undefined;
els.scrollVideoWraps[i].moReversePoint = !!els.scrollVideoWraps[i].getAttribute('data-mo-reverse-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-mo-reverse-point')) : undefined;
}
};
const bindEvents = function () {
eventHandler.scroll();
eventList.scroll();
eventHandler.click();
resize.add(eventList.resize);
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
},
click: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scrollVideoWraps[i].controller.addEventListener('click', eventList.clickVideoCta);
}
}
};
const eventList = {
setVideo: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scrollVideo[i] = utils.videoHandler({
playType: 'scrollPlay',
startPoint: (currDevice.indexOf('mobile') > -1) ? els.scrollVideoWraps[i].moStartPoint : els.scrollVideoWraps[i].startPoint,
reversePoint: (currDevice.indexOf('mobile') > -1) ? els.scrollVideoWraps[i].moReversePoint : els.scrollVideoWraps[i].reversePoint,
wrap: els.scrollVideoWraps[i],
video: els.scrollVideoWraps[i].video,
controller: els.scrollVideoWraps[i].controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
if (!!this.video.videoWrap && this.video.videoWrap.classList.contains('js-interactive-intro-video')) {
this.video.tooltip.classList.remove('is-visible');
}
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
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.scrollVideoWraps.length; i++) {
els.scene[i] = SCROLLER({
trackElement: els.scrollVideoWraps[i].video,
useFixed: false,
resize: utils.detector.isTouchDevice ? false : true
});
}
},
scroll: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scene[i].trackAnimation(function () {
els.scrollVideo[i].scrollActive(this.progress);
});
}
},
resize: function (currRes) {
currDevice = currRes;
},
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.features.threeColumnCarousel = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
swiperObj,
prevDevice = null,
currDevice = resize.checkResolution();
dimmedClass = 'is-dimmed';
const isRtl = document.documentElement.classList.contains('rtl');
const init = function () {
els.section = document.querySelectorAll('.js-three-column-carousel');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiperContainer = els.section[i];
els.section[i].swiperSlide = els.section[i].querySelectorAll('.swiper-slide');
els.section[i].nextArrow = els.section[i].parentElement.querySelector('.swiper-button-next');
els.section[i].prevArrow = els.section[i].parentElement.querySelector('.swiper-button-prev');
els.section[i].scrollbar = els.section[i].parentElement.querySelector('.swiper-scrollbar');
};
};
const bindEvents = function () {
eventList.load();
eventHandler.keydown();
eventHandler.click();
resize.add(eventList.resize);
};
const eventHandler = {
swiper: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiper.on('init', swiperEvents.init);
els.section[i].swiper.on('slideChange', swiperEvents.slideChange);
els.section[i].swiper.on('transitionEnd', swiperEvents.transitionEnd);
};
},
keydown: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
},
click: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
}
};
const eventList = {
load: function() {
for (let i = 0; i < els.section.length; i++) {
let desktopStatus = (currDevice == 'desktop' || currDevice == 'tablet') && els.section[i].swiperSlide.length > 3;
let mobileStatus = (currDevice == 'mobile' || currDevice == 'mobileS') && els.section[i].swiperSlide.length > 1;
if (desktopStatus || mobileStatus) {
swiperEvents.set();
eventHandler.swiper();
els.section[i].swiper.init();
}
}
},
resize: function() {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
};
},
responsive: function() {
for (let i = 0; i < els.section.length; i++) {
let isSection = els.section[i];
let desktopStatus = (currDevice == 'desktop' || currDevice == 'tablet') && isSection.swiperSlide.length > 3;
let mobileStatus = (currDevice == 'mobile' || currDevice == 'mobileS') && isSection.swiperSlide.length > 1;
eventList.resetDimmedSlide(isSection.swiper);
accessibility.reset(isSection.swiper);
if (desktopStatus || mobileStatus) {
if (isSection.swiper.initialized) swiperEvents.destroy(isSection.swiper);
swiperEvents.set();
eventHandler.swiper();
isSection.swiper.init();
if (desktopStatus) eventList.initDimmedSlides(isSection.swiper);
if (mobileStatus) accessibility.slide(isSection.swiper);
} else if ((!desktopStatus || !mobileStatus) && isSection.swiper != undefined) {
if (isSection.swiper.initialized) swiperEvents.destroy(isSection.swiper);
}
};
},
getCarouselSizeInfo: function(swiperObj) {
let slideLength = swiperObj.slides.length;
let slideWidth = swiperObj.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiperObj.slides[0]).margin.split(' ')[isRtl ? 3 : 1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiperObj.wrapperEl.clientWidth;
let viewWidth = swiperObj.wrapperEl.clientWidth;
let viewLength = Math.round((viewWidth + slideMargin)/slideSize);
let lastBeforeSize =
currDevice.indexOf('mobile') == -1 && slideLength == 3 ? 0 :
currDevice.indexOf('mobile') > -1 && slideLength == 2 ? 0 :
(slideWidth + slideMargin) * ((slideLength - viewLength) - 1);
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiperObj.wrapperEl).transform.split(',')[4]));
return {
slideLength: slideLength,
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
initDimmedSlides: function(swiperObj) {
for (let i = 0; i < swiperObj.slides.length; i++) {
let isSlide = swiperObj.slides[i];
if ((swiperObj.activeIndex + eventList.getCarouselSizeInfo(swiperObj).viewLength) <= i) {
isSlide.classList.add(dimmedClass);
utils.onAccessibility(isSlide)
}
}
},
setDimmedSlide: function(swiperObj) {
for (let i = 0; i < swiperObj.slides.length; i++) {
let isSlide = swiperObj.slides[i];
let dimmedSlide = (swiperObj.activeIndex) > i || (swiperObj.activeIndex + (eventList.getCarouselSizeInfo(swiperObj).viewLength - 1)) < i;
if (dimmedSlide) {
isSlide.classList.add(dimmedClass);
accessibility.slide(swiperObj);
} else {
isSlide.classList.remove(dimmedClass);
accessibility.slide(swiperObj);
}
}
},
resetDimmedSlide: function(swiperObj) {
if (!!!swiperObj) return;
for (let i = 0; i < swiperObj.slides.length; i++) {
swiperObj.slides[i].classList.remove(dimmedClass);
}
},
tagging: function () {
const values = {
'data-omni-type': 'microsite_pcontentinter',
'data-omni': 'galaxy-z-fold6:highlights:indicator:sldr-dots:',
'ga-ca': 'indication',
'ga-ac': 'carousel',
'ga-la': 'galaxy-z-fold6:highlights:indicator:sldr-dots:',
};
},
arrowFocus: function(isFocusArrow, nextFocusArrow) {
setTimeout(() => {
if (isFocusArrow.classList.contains('swiper-button-disabled')) nextFocusArrow.focus();
}, 300);
},
};
const swiperEvents = {
set: function () {
for (let i = 0; i < els.section.length; i++) {
if (els.section[i].swiper == null) {
new Swiper(els.section[i].swiperContainer, {
init: false,
slidesPerView: 'auto',
speed: 200,
navigation: {
nextEl: els.section[i].nextArrow,
prevEl: els.section[i].prevArrow,
},
scrollbar: {
el: els.section[i].scrollbar,
draggable: true
}
});
}
}
},
init: function () {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
eventList.tagging();
eventList.initDimmedSlides(this);
accessibility.slide(this);
},
transitionEnd: function() {
let carouselInfo = eventList.getCarouselSizeInfo(this);
setTimeout(() => {
let lastIndex = this.slides.length -1 ;
let lastSlide = this.slides[lastIndex];
let lsatDimmedLength = (carouselInfo.slideLength - 1) - carouselInfo.viewLength;
let lastBeforeSlide = this.slides[lsatDimmedLength];
if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize && carouselInfo.maxMoveSize >= carouselInfo.isMoveSize) {
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
} else {
for (let i = 0; i < this.slides.length; i++) {
if (i == lastIndex || i == lastIndex - 1 || i == lastIndex - 2) {
utils.offAccessibility(this.slides[i]);
} else {
utils.onAccessibility(this.slides[i]);
}
}
}
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize >= carouselInfo.isMoveSize) {
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
} else {
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
utils.offAccessibility(this.slides[lastIndex - 2]);
}
}
}, 0);
},
slideChange: function () {
eventList.setDimmedSlide(this);
accessibility.slide(this);
},
destroy: function (swiperObj) {
swiperObj.navigation.destroy(true);
swiperObj.destroy(true);
swiperObj = null;
},
};
const accessibility = {
slide: function (swiper) {
if (currDevice.indexOf('mobile') > -1) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
} else {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex && i != (swiper.activeIndex + 1) && i != (swiper.activeIndex + 2)) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
if (!!swiper.slides[i + 1]) utils.offAccessibility(swiper.slides[i + 1]);
if (!!swiper.slides[i + 2]) utils.offAccessibility(swiper.slides[i + 2]);
}
}
}
},
reset: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
utils.offAccessibility(swiper.slides[i]);
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.aiOverview = (function () {
const utils = window.flagship.common.utils,
resize = flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.features-ai-overview');
if (!!els.section) {
setElements();
eventList.setScene();
bindEvents();
}
};
const setElements = function () {
// title
els.overviewTextWrap = els.section.querySelector('.js-overview-text-wrap');
// logoVideo
els.logoWrap = els.section.querySelector('.js-logo-wrap');
els.logoVideoWrap = els.section.querySelector('.js-logo-video-wrap');
els.overviewVideo = els.logoVideoWrap.querySelector('video');
};
const bindEvents = function () {
eventHandler.scroll();
eventList.scroll();
resize.add(eventHandler.resize);
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
},
resize: function (currRes) {
currDevice = currRes;
}
};
const eventList = {
setScene: function () {
els.scene = SCROLLER({
trackElement: els.overviewTextWrap,
useFixed: false,
resize: utils.detector.isTouchDevice ? false : true
});
},
scroll: function(){
els.scene.trackAnimation(function(){
//텍스트 페이드인
if (this.wheelDirection == 'down' && this.progress <= 100 && this.progress > 0) {
if (!els.section.classList.contains('is-active')) {
els.section.classList.add('is-active');
if (els.overviewVideo.paused) {
els.overviewVideo.play();
}
}
} else if (this.wheelDirection == 'up' && this.progress == 0) {
if (els.section.classList.contains('is-active')) {
els.section.classList.remove('is-active');
if (!els.overviewVideo.paused) {
els.overviewVideo.pause();
els.overviewVideo.currentTime = 0;
}
}
}
});
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.battery = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
startNum = 3700,
endNum = 4000,
counter = {
num: startNum
},
animateStatus = true,
tweenObj,
prevDevice = null,
currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.features-battery');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.capacity = els.section.querySelector('.js-battery-capacity');
els.value = els.capacity.querySelector('.js-battery-value');
};
const bindEvents = function () {
eventHandler.load();
eventList.scroll();
eventHandler.scroll();
};
const eventHandler = {
load: function() {
eventList.setScene();
},
scroll: function() {
window.addEventListener('scroll', eventList.scroll);
}
}
const eventList = {
setScene: function() {
SCROLLER({
trackElement: els.capacity,
useFixed: false
});
},
scroll: function() {
els.capacity.scroller.trackAnimation(function(){
let countActive = this.progress > 1 && animateStatus && !!!tweenObj;
let countReset = this.progress <= 0 && this.wheelDirection == 'up' && !!tweenObj;
if (countReset) {
tweenObj.kill();
counter.num = startNum;
tweenObj = null;
els.capacity.classList.remove('is-active');
}
if (countActive) {
animateStatus = false;
els.capacity.classList.add('is-active');
tweenObj = TweenMax.to(counter, 2, {num: endNum,
onUpdate: function() {
els.value.textContent = Math.floor(counter.num);
},
onComplate: function() {
animateStatus = true;
}});
}
});
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.cameraSpec = (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('.features-camera-spec');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.listInner = els.section.querySelectorAll('.js-camera-spec-inner');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.load();
eventList.showCollout();
eventHandler.scroll();
};
const eventHandler = {
scroll: function() {
window.addEventListener('scroll', eventList.showCollout);
}
}
const eventList = {
load: function() {
eventList.setSecene();
},
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
prevDevice = currDevice;
}
},
setSecene: function () {
for (let i = 0; i < els.listInner.length; i++) {
SCROLLER({
trackElement: els.listInner[i],
useFixed: false
});
}
},
showCollout: function() {
for (let i = 0; i < els.listInner.length; i++) {
els.listInner[i].scroller.trackAnimation(function() {
if (this.progress > 0) {
this.trackElement.classList.add('is-active');
}
if (i == 0) {
if (this.progress <= 0) {
for (let j = 0; j < els.listInner.length; j++) {
els.listInner[j].classList.remove('is-active');
}
}
}
});
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.colorchip = function (colorchipWrap) {
const utils = window.flagship.common.utils,
common = window.flagship.features.common,
resize = window.flagship.common.resize;
let els = {},
activeClass = 'is-active',
currentDevice = resize.checkResolution(),
prevDevice = null,
currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7;
const init = function () {
els.section = document.querySelector('.js-colors');
els.popup = document.querySelector('.js-viewer');
if (colorchipWrap.type == 'popup') {
colorchipWrap.contentWrap = els.popup;
} else {
colorchipWrap.contentWrap = els.section;
}
setElements();
setProperty();
bindEvents();
};
const setElements = function () {
// panel
els.panelWrap = els.section.querySelector('.js-panel-wrap');
els.panelItems = els.panelWrap.querySelectorAll('.js-panel-item');
// colorchip
els.swiperContainer = colorchipWrap.querySelector('.js-colorchip-container');
els.colorchipButtons = colorchipWrap.querySelectorAll('.js-colorchip-button');
els.swiperArrowWrap = colorchipWrap.querySelector('.js-arrow-wrap');
els.swiperNextArrow = colorchipWrap.querySelector('.js-colorchip-next');
els.swiperPrevArrow = colorchipWrap.querySelector('.js-colorchip-prev');
els.colorchipNames = colorchipWrap.querySelectorAll('.js-colorchip-name');
// 360 Popup Btn
els.viewerBtn = els.section.querySelector('.viewer-btn');
// viewer
els.viewerSection = els.section.querySelector('.js-colors-viewer');
els.viewerIframe = colorchipWrap.contentWrap.querySelector('iframe');
// exclusive badge
els.exclusive = colorchipWrap.contentWrap.querySelector('.js-exclusive-badge');
};
const setProperty = function () {
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].index = i;
}
};
const bindEvents = function () {
eventList.checkColorchipSwiper();
if (colorchipWrap.type != 'popup') eventList.setColors(0);
eventHandler.click();
eventHandler.keydown();
resize.add(eventList.resize);
eventHandler.scroll();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].addEventListener('click', eventList.clickColorchip);
}
els.viewerBtn.addEventListener('click', function () {
let activeIndex = this.getAttribute('data-target-index');
eventList.setColorchip(activeIndex);
eventList.setColorName(activeIndex);
eventList.setExclusive(activeIndex);
});
els.swiperNextArrow.addEventListener('click', accessibility.clickArrow);
els.swiperPrevArrow.addEventListener('click', accessibility.clickArrow);
},
keydown: function () {
els.swiperNextArrow.addEventListener('keydown', accessibility.clickArrow);
els.swiperPrevArrow.addEventListener('keydown', accessibility.clickArrow);
},
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
}
};
const eventList = {
scroll: function () {
let winOffsetBottom = window.pageYOffset + window.innerHeight,
kv = document.querySelector('.features-kv'),
kvHeight = kv.getBoundingClientRect().height + utils.getNavHeight();
if (winOffsetBottom >= kvHeight) {
// bg load
colorchipWrap.bgImgs = colorchipWrap.querySelectorAll('.js-bg-img');
if(!!colorchipWrap.bgImgs) bgLoader.setResponsiveMedia(colorchipWrap.bgImgs);
eventList.setViewer();
window.removeEventListener('scroll', eventList.scroll);
}
},
setViewer: function () {
if (!utils.isLowNetwork()) {
setTimeout(function () {
els.viewerIframe.style.position = 'fixed';
els.viewerIframe.style.top = 0;
els.viewerIframe.style.opacity = 0;
setTimeout(function () {
els.viewerIframe.style.position = '';
els.viewerIframe.style.top = '';
els.viewerIframe.style.opacity = '';
}, 300);
}, 1000);
// set
eventList.setViewerUrl(els.colorchipButtons[0].getAttribute('data-colors'));
}
},
checkColorchipSwiper: function () {
let colorchipSwiperLength = currentDevice.indexOf('mobile') > -1 ? 6 : 8;
if (els.colorchipButtons.length >= colorchipSwiperLength) {
if (els.swiperArrowWrap.style.display == 'none') {
els.swiperArrowWrap.style.display = '';
}
swiperEvents.set();
} else {
if (els.swiperArrowWrap.style.display != 'none') {
els.swiperArrowWrap.style.display = 'none';
}
if (els.colorchipSwiper != null) {
swiperEvents.destroy();
}
}
},
setColors: function (activeIndex) {
eventList.setPopupBtn(els.colorchipButtons[activeIndex]);
eventList.setColorchip(activeIndex);
eventList.setPanel(activeIndex);
eventList.setColorName(activeIndex);
eventList.setExclusive(activeIndex);
},
resize: function (currRes) {
currentDevice = currRes;
if (currentDevice !== prevDevice) {
eventList.checkColorchipSwiper();
currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7;
prevDevice = currentDevice;
}
},
clickColorchip: function () {
let targetColor = this;
eventList.setColors(targetColor.index);
eventList.setViewerUrl(targetColor.getAttribute('data-colors'));
},
setColorchip: function (activeIndex) {
let targetcolorchipButton = els.colorchipButtons[activeIndex];
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].classList.remove(activeClass);
if (!!colorchipWrap.isStatic) {
els.colorchipButtons[i].setAttribute('aria-selected', false);
} else {
els.colorchipButtons[i].removeAttribute('title');
}
}
if (!targetcolorchipButton.classList.contains(activeClass)) {
targetcolorchipButton.classList.add(activeClass);
if (!!colorchipWrap.isStatic) {
targetcolorchipButton.setAttribute('aria-selected', true);
} else {
accessibility.selected(targetcolorchipButton);
}
}
},
setPanel: function (activeIndex) {
if (!colorchipWrap.isStatic) return;
for (let i = 0; i < els.panelItems.length; i++) {
if (els.panelItems[i].classList.contains(activeClass)) {
els.panelItems[i].classList.remove(activeClass);
els.panelItems[i].setAttribute('aria-hidden', true);
}
}
if (!els.panelItems[activeIndex].classList.contains(activeClass)) {
els.panelItems[activeIndex].classList.add(activeClass);
els.panelItems[activeIndex].setAttribute('aria-hidden', false);
}
},
setColorName: function (activeIndex) {
for (let i = 0; i < els.colorchipNames.length; i++) {
if (els.colorchipNames[i].classList.contains(activeClass)) {
els.colorchipNames[i].classList.remove(activeClass);
els.colorchipNames[i].setAttribute('aria-hidden', true);
}
}
if (!els.colorchipNames[activeIndex].classList.contains(activeClass)) {
els.colorchipNames[activeIndex].classList.add(activeClass);
els.colorchipNames[activeIndex].setAttribute('aria-hidden', false);
}
},
setViewerUrl: function (colorName) {
if (!!colorchipWrap.isStatic) return;
if (colorchipWrap.type == 'popup') {
let viewerSrc = els.viewerIframe.getAttribute('src').split('#color=')[0];
els.viewerIframe.setAttribute('src', `${viewerSrc}#color=${colorName}`);
} else {
els.viewerSection.setAttribute('data-model-color', colorName);
els.viewerIframe.setAttribute('src', common.getViewerUrl());
}
},
setPopupBtn: function (target) {
if (colorchipWrap.type == 'popup') return;
els.viewerBtn.setAttribute('data-target-index', target.index);
els.viewerBtn.setAttribute('data-model-color', target.getAttribute('aria-controls'));
},
setExclusive: function (activeIndex) {
if (!!els.colorchipButtons[activeIndex].getAttribute('data-exclusive')) {
els.exclusive.classList.add('is-active');
} else {
els.exclusive.classList.remove('is-active');
}
}
};
const swiperEvents = {
set: function () {
if (els.colorchipSwiper == null) {
els.colorchipSwiper = new Swiper(els.swiperContainer, {
init: false,
navigation: {
nextEl: els.swiperNextArrow,
prevEl: els.swiperPrevArrow,
},
slidesPerView: currentSlidesPerView,
speed: 300,
});
els.colorchipSwiper.on('init', swiperEvents.init);
els.colorchipSwiper.on('slideChange', swiperEvents.slideChange);
els.colorchipSwiper.init();
}
},
init: function () {
let notification = this.el.querySelector('.swiper-notification');
if (!!notification) this.el.removeChild(notification);
els.swiperPrevArrow.removeAttribute('aria-label');
els.swiperPrevArrow.removeAttribute('role');
els.swiperNextArrow.removeAttribute('aria-label');
els.swiperNextArrow.removeAttribute('role');
accessibility.colorchip(els.colorchipSwiper);
},
slideChange: function () {
accessibility.colorchip(els.colorchipSwiper);
},
destroy: function () {
els.colorchipSwiper.destroy(true);
els.colorchipSwiper = null;
},
};
const accessibility = {
clickArrow: function (e) {
let arrowTimeout = null,
arrowStyleTimeout = null;
if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') {
e.preventDefault();
if (els.colorchipSwiper.isBeginning && !els.colorchipSwiper.isEnd) {
els.swiperPrevArrow.style.setProperty('display', 'block');
clearTimeout(arrowTimeout);
arrowTimeout = setTimeout(function () {
els.swiperNextArrow.focus();
}, 300);
clearTimeout(arrowStyleTimeout);
arrowStyleTimeout = setTimeout(function () {
els.swiperPrevArrow.style.display = '';
}, 400);
} else if (!els.colorchipSwiper.isBeginning && els.colorchipSwiper.isEnd) {
els.swiperNextArrow.style.setProperty('display', 'block');
clearTimeout(arrowTimeout);
arrowTimeout = setTimeout(function () {
els.swiperPrevArrow.focus();
}, 300);
clearTimeout(arrowStyleTimeout);
arrowStyleTimeout = setTimeout(function () {
els.swiperNextArrow.style.display = '';
}, 400);
}
}
},
colorchip: function (swiperObj) {
let isNotActivedColorchips = null;
for (let i = 0; i < swiperObj.slides.length; i++) {
if (currentDevice.indexOf('mobile') > -1) {
isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 4) || (swiperObj.activeIndex > i);
} else {
isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 6) || (swiperObj.activeIndex > i);
}
if (isNotActivedColorchips) {
utils.onAccessibility(swiperObj.slides[i]);
setTimeout(function () {
utils.onAccessibility(swiperObj.slides[i]);
}, 300);
} else {
utils.offAccessibility(swiperObj.slides[i]);
setTimeout(function () {
utils.offAccessibility(swiperObj.slides[i]);
}, 300);
}
}
},
selected: function (target) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
};
return init(colorchipWrap);
};
let colorchips = document.querySelectorAll('.js-colorchip');
for (let i = 0; i < colorchips.length; i++) {
colorchips[i].type = colorchips[i].parentElement.classList.contains('js-popup-colorchip') ? 'popup' : 'colors';
colorchips[i].isStatic = colorchips[i].parentElement.getAttribute('data-static');
flagship.features.colorchip(colorchips[i]);
}
})();
;
(function () {
window.flagship.features.faq = (function () {
const resize = window.flagship.common.resize,
utils = window.flagship.common.utils;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.js-faq');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.faqList = els.section.querySelector('.js-faq-list');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.setAccordion();
};
const eventList = {
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
eventList.responsive();
prevDevice = currDevice;
}
},
responsive: function () {
let isOpenedItems = els.faqList.querySelectorAll('.js-faq-item.is-open');
if (isOpenedItems.length > 0) {
for (let i = 0; i < isOpenedItems.length; i++) {
let isOpenedItemContent = isOpenedItems[i].querySelector('.js-faq-answer'),
clientHeight = isOpenedItemContent.children[0].clientHeight;
isOpenedItemContent.style.height = `${clientHeight}px`;
}
}
},
setAccordion: function () {
els.accordion = new window.flagship.common.accordion({
wrap: els.faqList,
classList: {
item: 'js-faq-item',
button: 'js-faq-open',
contents: 'js-faq-answer',
activeClass: 'is-open'
},
open: {
start: function (target) {
let targetInnerCta = target.querySelector('.js-featue-cta');
if (targetInnerCta) targetInnerCta.addEventListener('click', accessibility.moveFocus);
}
}
});
els.accordion.init();
},
};
const accessibility = {
moveFocus: function (e) {
if (this.getAttribute('href').indexOf('#') > -1) {
e.preventDefault();
let sectionId = this.getAttribute('href'),
section = document.querySelector(`${sectionId}`),
sectionTop = section.getBoundingClientRect().top,
movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(),
clickable = section.querySelectorAll('a, button'),
title = section.querySelector('h2') || section.querySelector('h3');
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.features.flexWindow = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
let els = {};
let oldIndex = 0;
let swiperObj = {};
let pointerOffset = {};
let currDevice = resize.checkResolution();
let videoPlayStatus = false;
let animationStatus = 'pause';
let lowNetwork = document.documentElement.classList.contains('low_network');
const init = function () {
els.section = document.querySelector('.features-flex-window');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.carouselWrap = els.section.querySelector('.features-flex-window__carousel');
els.carouselInner = els.section.querySelector('.features-flex-window__carousel-inner');
els.swiperContainer = els.section.querySelector('.swiper-container');
els.swiperSlides = els.swiperContainer.querySelectorAll('.swiper-slide');
els.firstSlide = els.swiperSlides[0];
els.firstVideoControl = els.swiperSlides[0].querySelector('.js-video-control');
els.nextArrow = els.section.querySelector('.swiper-button-next');
els.prevArrow = els.section.querySelector('.swiper-button-prev');
els.autoSlideController = els.section.querySelector('.features-flex-window__carousel-button');
els.blind = els.autoSlideController.querySelector('.blind');
els.videos;
els.realCarouselSlides;
};
const setProperty = function () {
for (let i = 0; i < els.realCarouselSlides.length; i++) {
let isSlide = els.realCarouselSlides[i];
let isVideoWrap = els.realCarouselSlides[i].querySelector('.common-video');
if (!!isVideoWrap) {
isSlide.videoWrap = isVideoWrap;
isSlide.videoWrap.video = isVideoWrap.querySelector('.common-video__video');
isSlide.video = isVideoWrap.querySelector('.common-video__video');
isSlide.videoWrap.controller = isVideoWrap.querySelector('.js-video-control');
isSlide.videoWrap.controller.video = isVideoWrap.querySelector('.common-video__video');
}
}
};
const bindEvents = function () {
eventList.load();
eventHandler.scroll();
eventHandler.autoSlideController();
};
const eventHandler = {
scroll: function() {
window.addEventListener('scroll', eventList.scroll)
},
transitionend: function() {
els.carouselInner.addEventListener('animationend', eventList.transitionend, {once: true})
},
flickSwiper: function() {
els.carouselWrap.addEventListener('touchstart', function(e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.touches[0].clientX;
els.carouselWrap.addEventListener('touchmove', eventList.getPointerMoveSize);
});
els.carouselWrap.addEventListener('touchend', function() {
if (pointerOffset.start == null) return;
eventList.flickSwiper();
els.carouselWrap.removeEventListener('touchmove', eventList.getPointerMoveSize);
});
els.carouselWrap.addEventListener('mousedown', function(e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.offsetX;
els.carouselWrap.addEventListener('mousemove', eventList.getPointerMoveSize);
});
els.carouselWrap.addEventListener('mouseup', function() {
eventList.flickSwiper();
els.carouselWrap.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
els.carouselWrap.addEventListener('mouseleave', function() {
if (pointerOffset.start == null) return;
pointerOffset.start = null;
pointerOffset.current = null;
els.carouselWrap.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
},
click: function () {
for (let i = 0; i < els.realCarouselSlides.length; i++) {
let isVideoWrap = els.realCarouselSlides[i].videoWrap;
if (!!isVideoWrap) {
els.realCarouselSlides[i].videoWrap.controller.addEventListener('click', eventList.clickVideoCta);
}
}
},
autoSlideController: function() {
els.autoSlideController.addEventListener('click', eventList.autoSlideController);
}
};
const eventList = {
load: function() {
swiperEvent.set();
swiperObj.thumb.init();
eventList.setScene();
eventList.scroll();
eventList.setAutoSlideController(animationStatus = 'pause');
els.firstSlide.setAttribute('aria-hidden', true);
},
setVideo: function() {
els.realCarouselSlides = els.swiperContainer.querySelectorAll('.swiper-slide');
els.videos = els.swiperContainer.querySelectorAll('.common-video__video');
setProperty();
eventHandler.click();
for (let i = 0; i < els.realCarouselSlides.length; i++) {
let isVideoWrap = els.realCarouselSlides[i].videoWrap;
if (!!isVideoWrap) {
if (!isVideoWrap.classList.contains('is-loaded')) isVideoWrap.classList.add('is-loaded');
utils.videoHandler({
playType: 'scrollPlay',
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.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
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');
}
}
});
}
}
},
playVideo: function(videoWrap) {
let isVideo = videoWrap.video;
if (isVideo.readyState >= 4) {
isVideo.play();
} else {
isVideo.load();
isVideo.addEventListener('canplay', function() {
isVideo.play();
}, {once: true});
}
},
resetVideo: function() {
if (!!!els.realCarouselSlides) return;
for (let i = 0; i < els.realCarouselSlides.length; i++) {
let isVideo = els.realCarouselSlides[i].video;
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
isVideo.currentTime = 0;
};
};
},
clickVideoCta: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
e.currentTarget.video.play();
} else {
e.currentTarget.video.pause();
}
}
},
setScene: function() {
SCROLLER({
trackElement: els.swiperContainer,
resize: false
})
},
animationStart: function() {
videoPlayStatus = false;
els.carouselInner.classList.add('is-animate-start');
eventList.setAutoSlideController(animationStatus = 'play');
eventHandler.transitionend();
},
setAutoSlideController: function(animationStatus) {
switch (animationStatus) {
case 'play':
if (els.autoSlideController.classList.contains('is-paused')) {
els.autoSlideController.classList.remove('is-paused');
els.autoSlideController.classList.add('is-playing');
els.blind.innerText = LOCAL_VARI.pause;
setTagging.pause(els.autoSlideController);
}
break;
case 'pause':
if (els.autoSlideController.classList.contains('is-playing')) {
els.autoSlideController.classList.remove('is-playing');
els.autoSlideController.classList.add('is-paused');
els.blind.innerText = LOCAL_VARI.play;
setTagging.play(els.autoSlideController);
}
break;
default:
break;
}
},
autoSlideController: function() {
let classStatus = els.carouselInner.classList.contains('is-animate-start');
animationStatus === 'pause' ? animationStatus = 'play' : animationStatus = 'pause';
eventList.setAutoSlideController(animationStatus);
if (!classStatus) eventList.animationStart();
},
resetScroll: function() {
swiperEvent.destroy(swiperObj.thumb);
swiperEvent.set();
swiperObj.thumb.init();
for (let i = 0; i < swiperObj.thumb.slides.length; i++) {
let isVideo = swiperObj.thumb.slides[i].querySelector('.common-video');
if (!!isVideo) {
isVideo.classList.remove('is-playing');
isVideo.classList.remove('is-paused');
isVideo.classList.remove('is-ended');
isVideo.classList.remove('is-completed');
}
}
els.carouselInner.classList.remove('is-animate-start');
els.autoSlideController.classList.remove('is-ended');
els.autoSlideController.classList.remove('is-completed');
eventList.setAutoSlideController(animationStatus = 'pause');
},
scroll: function() {
els.swiperContainer.scroller.trackAnimation(function() {
let classStatus = els.carouselInner.classList.contains('is-animate-start');
let activeStatus = this.progress > 20 && !classStatus;
let resetStatus = this.wheelDirection == 'up' && this.progress <= 0 && classStatus;
let isActiveVideo = swiperObj.thumb.slides[swiperObj.thumb.activeIndex].querySelector('video');
if (resetStatus) {
eventList.resetScroll();
};
if (activeStatus && !classStatus) {
eventList.animationStart();
};
for (let i = 0; i < els.videos.length; i++) {
if (!lowNetwork && videoPlayStatus && !!isActiveVideo) isActiveVideo.videoHandler.scrollActive(this.progress);
}
});
},
transitionend: function() {
videoPlayStatus = true;
eventList.setAutoSlideController(animationStatus = 'pause');
els.autoSlideController.classList.add('is-ended');
setTimeout(function() {
let isActiveVideo = swiperObj.thumb.slides[swiperObj.thumb.activeIndex].querySelector('video');
if (!!isActiveVideo) {
isActiveVideo.currentTime = 0;
isActiveVideo.play();
}
utils.offAccessibility(els.firstSlide);
if (els.swiperContainer.scroller.progress < 100 && els.swiperContainer.scroller.progress > 0) els.firstVideoControl.focus();
els.autoSlideController.classList.add('is-completed');
}, 600);
},
getPointerMoveSize: function(e) {
if (!!e.touches) {
pointerOffset.current = e.touches[0].clientX;
} else {
pointerOffset.current = e.offsetX;
}
},
};
const swiperEvent = {
set: function() {
swiperObj.thumb = new Swiper(els.swiperContainer, {
init: false,
loop: true,
centeredSlides: true,
slidesPerView: 'auto',
navigation: {
nextEl: els.nextArrow,
prevEl: els.prevArrow
},
});
swiperObj.thumb.on('transitionEnd', swiperEvent.transitionEnd);
swiperObj.thumb.on('init', swiperEvent.init);
},
init: function() {
els.nextArrow.removeAttribute('aria-label');
els.nextArrow.removeAttribute('role');
els.prevArrow.removeAttribute('aria-label');
els.prevArrow.removeAttribute('role');
accessibility.slide(this);
eventList.setVideo();
},
transitionEnd: function() {
let isActiveSlide = els.swiperContainer.querySelector('.swiper-slide-active');
let isVideoWrap = isActiveSlide.videoWrap;
accessibility.slide(this, true);
eventList.resetVideo();
if (!lowNetwork && !!isVideoWrap) eventList.playVideo(isVideoWrap);
},
destroy: function (swiper) {
swiper.navigation.destroy(true);
swiper.destroy(true);
},
}
const accessibility = {
slide: function (swiper, change) {
if (change) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
} else {
for (let i = 0; i < swiper.slides.length; i++) {
utils.onAccessibility(swiper.slides[i]);
}
}
}
};
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.features = window.flagship.features || {};
window.flagship.features.highlightsZone = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
let els = {};
let prevDevice;
let swiperObj = {};
let pointerOffset = {};
let currDevice = resize.checkResolution();
let dimmedClass = 'is-dimmed';
let ctaPlayStatus = true;
let scrollProgress = null;
let lowNetwork = document.documentElement.classList.contains('low_network');
let isBgLoaded = false;
const init = function () {
els.section = document.querySelector('.features-highlights');
if (!!els.section) {
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
els.mainContainer = els.section.querySelector('.js-highlights-main-container');
els.mainSwiperSlides = els.mainContainer.querySelectorAll('.swiper-slide');
els.videoWrap = els.mainContainer.querySelectorAll('.js-video-wrap');
els.prevArrow = els.mainContainer.parentElement.querySelector('.swiper-button-prev');
els.nextArrow = els.mainContainer.parentElement.querySelector('.swiper-button-next');
els.scrollbar = els.section.querySelector('.js-highlights-scrollbar');
els.bgContainer = els.section.querySelector('.js-highlights-bg-container');
els.bgSwiperSlides = els.bgContainer.querySelectorAll('.swiper-slide');
};
const setProperty = function () {
els.mainContainer.autoPlay = true;
els.videoWrap = els.mainContainer.querySelectorAll('.js-video-wrap');
for (let i = 0; i < els.videoWrap.length; i++) {
els.videoWrap[i].video = els.videoWrap[i].querySelector('.common-video__video');
els.videoWrap[i].coverImageHighband = els.videoWrap[i].querySelector('.common-video__cover-image--highband');
els.videoWrap[i].coverImageLowband = els.videoWrap[i].querySelector('.common-video__cover-image--lowband');
els.videoWrap[i].controller = els.videoWrap[i].querySelector('.js-video-control');
els.videoWrap[i].controller.video = els.videoWrap[i].video;
els.videoWrap[i].progressBar = els.videoWrap[i].querySelector('.common-video__control-progress-bar');
els.bgSwiperSlides[i].image = els.bgSwiperSlides[i].querySelector('img');
}
};
const bindEvents = function () {
eventList.load();
eventHandler.click();
eventHandler.scroll();
eventHandler.flickSwiper();
resize.add(eventList.resize);
};
const eventHandler = {
flickSwiper: function () {
els.mainContainer.addEventListener('touchstart', function (e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.touches[0].clientX;
els.mainContainer.addEventListener('touchmove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('touchend', function () {
if (pointerOffset.start == null) return;
els.mainContainer.autoPlay = false;
els.mainContainer.removeEventListener('touchmove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mousedown', function (e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.offsetX;
els.mainContainer.addEventListener('mousemove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mouseup', function () {
els.mainContainer.autoPlay = false;
els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mouseleave', function () {
if (pointerOffset.start == null) return;
pointerOffset.start = null;
pointerOffset.current = null;
els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
},
click: function () {
for (let i = 0; i < els.videoWrap.length; i++) {
els.videoWrap[i].controller.addEventListener('click', eventList.clickVideoCta);
}
for (let i = 0; i < els.videoWrap.length; i++) {
els.videoWrap[i].controller.addEventListener('click', eventList.stopAutoPlay);
}
els.nextArrow.addEventListener('click', function (e) {
eventList.stopAutoPlay(e)
eventList.swiperArrow(e);
});
els.prevArrow.addEventListener('click', function (e) {
eventList.stopAutoPlay(e)
eventList.swiperArrow(e);
});
els.scrollbar.addEventListener('click', eventList.stopAutoPlay);
},
scroll: function () {
window.addEventListener('scroll', eventList.scroll)
}
}
const eventList = {
load: function () {
swiperEvents.set();
swiperObj.main.init();
swiperObj.bg.init();
eventList.setVideo();
eventList.setScene();
eventList.scroll();
},
resize: function () {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
};
},
responsive: function () {
let desktopStatus = eventList.getCarouselSizeInfo(swiperObj.main).viewLength > 0 && currDevice == 'desktop';
eventList.resetDimmedSlide(swiperObj.main);
swiperObj.main.slideTo(0, false);
if (desktopStatus) eventList.initDimmedSlides(swiperObj.main);
},
setVideo: function () {
for (let i = 0; i < els.videoWrap.length; i++) {
utils.videoHandler({
playType: 'scrollPlay',
startPoint: currDevice != 'mobile' ? 40 : 24,
reversePoint: currDevice != 'mobile' ? 88 : 80,
wrap: els.videoWrap[i],
video: els.videoWrap[i].video,
controller: els.videoWrap[i].controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
},
playCallback: function () {
setTagging.pause(this.controller);
this.video.timeupdateEvent = function(){
if (this.currentTime > 0) {
if (!this.videoHandler.wrap.classList.contains('is-started')) {
this.videoHandler.wrap.classList.add('is-started');
}
eventList.setProgerssDuration(i);
this.removeEventListener('timeupdate', this.timeupdateEvent);
}
}
this.video.addEventListener('timeupdate', this.video.timeupdateEvent);
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
if (els.mainContainer.autoPlay) {
if (scrollProgress > 40 && scrollProgress < 55) {
clearTimeout(swiperObj.main.videoTiming);
swiperObj.main.videoTiming = setTimeout(() => {
swiperObj.main.slideNext();
}, 1000);
}
}
}
});
}
},
playVideo: function (video) {
if (video.readyState >= 1) {
video.play();
} else {
video.addEventListener('canplay', function () {
this.play();
}, {
once: true
})
}
},
clickVideoCta: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
eventList.playVideo(e.currentTarget.video);
ctaPlayStatus = true;
} else {
e.currentTarget.video.pause();
ctaPlayStatus = false;
}
}
},
stopAutoPlay: function (e) {
if (e.target.classList.contains('js-video-control') ||
e.target.classList.contains('swiper-button-next') ||
e.target.classList.contains('swiper-button-prev') ||
e.target.classList.contains('js-highlights-scrollbar')
) {
els.mainContainer.autoPlay = false;
};
},
swiperArrowVisiblirity: function () {
let mainSlidesLength = els.mainSwiperSlides.length - 1;
let mainSwiper = swiperObj.main;
let prevArrow = mainSwiper.previousIndex > mainSwiper.realIndex;
let nextArrow = mainSwiper.previousIndex < mainSwiper.realIndex;
if (prevArrow) {
if (mainSwiper.realIndex == (mainSlidesLength - 1)) {
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
} else if (mainSwiper.realIndex == 0) {
els.prevArrow.style.display = 'none';
}
};
if (nextArrow) {
if (mainSwiper.realIndex == 1) {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
} else if (mainSwiper.realIndex == mainSlidesLength) {
els.nextArrow.style.display = 'none';
}
};
},
swiperArrow: function (e) {
let mainSwiper = swiperObj.main;
let mainSlidesLength = els.mainSwiperSlides.length - 1;
let prevArrow = e.target.classList.contains('swiper-button-prev');
let nextArrow = e.target.classList.contains('swiper-button-next');
if (prevArrow) {
clearTimeout(swiperObj.main.videoTiming);
mainSwiper.slidePrev();
if (mainSwiper.realIndex == 0) {
setTimeout(() => {
els.nextArrow.blur();
els.nextArrow.focus();
}, 300);
}
};
if (nextArrow) {
clearTimeout(swiperObj.main.videoTiming);
mainSwiper.slideNext();
if (mainSwiper.realIndex == mainSlidesLength) {
setTimeout(() => {
els.prevArrow.blur();
els.prevArrow.focus();
}, 300);
}
};
},
scroll: function () {
els.section.scene.trackAnimation(function () {
let isIndex = swiperObj.main.realIndex;
let isMainVideoHandler = els.videoWrap[isIndex].video.videoHandler;
scrollProgress = this.progress;
if (!lowNetwork && ctaPlayStatus) isMainVideoHandler.scrollActive(this.progress);
if (scrollProgress > 0 && !isBgLoaded) {
for (let i = 0; i < els.bgSwiperSlides.length; i++) {
if (!els.bgSwiperSlides[i].image.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.bgSwiperSlides[i].image]);
}
}
isBgLoaded = true;
}
});
},
slideVideoPlay: function () {
let isIndex = swiperObj.main.realIndex;
let isVideoWrap = els.videoWrap[isIndex];
isVideoWrap.classList.add('is-ended');
setTimeout(function () {
isVideoWrap.classList.remove('is-started', 'is-paused');
if (!ctaPlayStatus) isVideoWrap.video.paused();
isVideoWrap.video.currentTime = 0;
if (ctaPlayStatus) {
eventList.playVideo(isVideoWrap.video);
setTimeout(function () {
if (els.mainContainer.autoPlay) isVideoWrap.video.videoHandler.controller.blur();
if (els.mainContainer.autoPlay) isVideoWrap.video.videoHandler.controller.focus();
if (isIndex == (swiperObj.main.slides.length - 1)) {
els.mainContainer.autoPlay = false;
}
}, 300);
}
}, 50);
},
setProgerssDuration: function (index) {
let isDuration = els.videoWrap[index].video.duration;
if (!!!els.videoWrap[index].durationSet) {
els.videoWrap[index].progressBar.style.animationDuration = `${isDuration}s`;
els.videoWrap[index].durationSet = true;
}
},
setMedia: function (index) {
let videoLength = els.mainSwiperSlides.length - 1;
let isIndex = index + 1
let loadIndex = isIndex < videoLength ? isIndex : videoLength;
let mainVideoloadComplateLength = els.mainContainer.querySelectorAll('.is-video-load-complete').length - 1;
for (let i = 0; i <= loadIndex; i++) {
if (mainVideoloadComplateLength != videoLength && !els.videoWrap[i].video.classList.contains('.is-video-load-complete')) {
if (!!els.videoWrap[i].video) videoLoader.setResponsiveMedia([els.videoWrap[i].video]);
if (!lowNetwork) {
if (!!els.videoWrap[i].coverImageHighband) imageLoader.setResponsiveMedia([els.videoWrap[i].coverImageHighband]);
} else {
if (!!els.videoWrap[i].coverImageLowband) imageLoader.setResponsiveMedia([els.videoWrap[i].coverImageLowband]);
}
if (!!els.bgSwiperSlides[i].image) imageLoader.setResponsiveMedia([els.bgSwiperSlides[i].image]);
}
}
},
pauseVideo: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let isVideo = swiper.slides[i].querySelector('video');
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
};
};
},
getCarouselSizeInfo: function (swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin) / slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
setScene: function () {
els.section.scene = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
initDimmedSlides: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if ((swiper.activeIndex + eventList.getCarouselSizeInfo(swiper).viewLength) <= i) {
swiper.slides[i].classList.add(dimmedClass);
}
}
},
setDimmedSlide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i;
if (dimmedSlide) {
swiper.slides[i].classList.add(dimmedClass);
} else {
swiper.slides[i].classList.remove(dimmedClass);
}
}
},
resetDimmedSlide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
swiper.slides[i].classList.remove(dimmedClass);
}
},
getPointerMoveSize: function (e) {
if (!!e.touches) {
pointerOffset.current = e.touches[0].clientX;
} else {
pointerOffset.current = e.offsetX;
}
}
}
const swiperEvents = {
set: function () {
if (swiperObj.main == null) {
swiperObj.main = new Swiper(els.mainContainer, {
init: false,
slidesPerView: 'auto',
scrollbar: {
el: els.scrollbar,
draggable: true
},
});
swiperObj.main.on('init', swiperEvents.init);
swiperObj.main.on('slideChange', swiperEvents.slideChange);
swiperObj.main.on('transitionEnd', swiperEvents.transitionEnd);
}
if (swiperObj.bg == null) {
swiperObj.bg = new Swiper(els.bgContainer, {
init: false,
slidesPerView: 'auto',
allowTouchMove: false
});
}
els.prevArrow.style.display = 'none';
},
init: function () {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
accessibility.slide(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0) eventList.initDimmedSlides(this);
},
slideChange: function () {
swiperObj.bg.slideTo(this.realIndex);
accessibility.slide(this);
eventList.pauseVideo(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0) eventList.setDimmedSlide(this);
if (this.realIndex > 0) eventList.setMedia(this.realIndex);
if (!lowNetwork) eventList.slideVideoPlay();
eventList.swiperArrowVisiblirity();
},
transitionEnd: function () {
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length - 1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
let isIndex = swiperObj.main.previousIndex;
let isMoveSize = currDevice != 'mobile' ? carouselInfo.isMoveSize : carouselInfo.isMoveSize + Math.abs(carouselInfo.slideMargin);
els.videoWrap[isIndex].video.pause();
if (carouselInfo.lastBeforeSize + (carouselInfo.slideWidth / 2) < isMoveSize && carouselInfo.maxMoveSize - (carouselInfo.slideWidth / 2) <= isMoveSize) {
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
eventList.pauseVideo(this);
if (!lowNetwork && ctaPlayStatus) {
lastSlide.querySelector('video').play();
};
lastSlide.classList.add('swiper-slide-active');
lastBeforeSlide.classList.remove('swiper-slide-active');
if (els.nextArrow.style.display != 'none') {
els.nextArrow.style.display = 'none';
setTimeout(() => {
els.prevArrow.blur();
els.prevArrow.focus();
}, 300);
}
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
}
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize >= carouselInfo.isMoveSize) {
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
eventList.pauseVideo(this);
if (!lowNetwork && ctaPlayStatus) {
lastBeforeSlide.querySelector('video').play();
};
lastSlide.classList.remove('swiper-slide-active');
lastBeforeSlide.classList.add('swiper-slide-active');
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
}
}, 0);
},
destroy: function (swiper) {
if (swiper != null) {
swiper.navigation.destroy(true);
swiper.destroy(true);
swiper = null;
}
},
};
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 accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init,
}
})();
})();
;
(function () {
window.flagship.features.interactiveSuggested = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
let objs = {};
let stepInfo = [];
let scrollProgress = null;
const init = function () {
els.section = document.querySelector('.js-suggested-replies');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.interactiveContent = els.section.querySelector('.js-interactive');
els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial');
els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video');
els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video');
els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video');
els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta');
els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta');
};
const setProperty = function (el, index) {
el.video = el.querySelector('video');
el.video.videoWrap = el;
el.controller = el.querySelector('.js-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;
el.video.coverImage = el.querySelector('.common-video__cover-image');
};
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();
eventList.setScroller();
eventHandler.scroll();
};
const setStepStatus = function (el) {
stepInfo.push({
alert: el.getAttribute('data-alert'),
tooltip: el.getAttribute('data-tooltip')
});
};
const eventList = {
setScroller: function () {
if (els.interactiveContent.scene == null) {
els.interactiveContent.scene = SCROLLER({
trackElement: els.interactiveContent,
useFixed: false
});
}
},
scrollEvent: function () {
if (els.interactiveContent.scene != null) {
els.interactiveContent.scene.trackAnimation(function () {
scrollProgress = this.progress;
if (els.interactiveContent.classList.contains('is-tutorial-opened')) {
let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video');
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
let replayStatus = !document.documentElement.classList.contains('low_network') &&
activeVideo.paused &&
!els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) &&
!els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) &&
scrollProgress > 0 && scrollProgress < 100;
let resetStatus = scrollProgress === 0 || scrollProgress === 100;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (replayStatus) {
if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) {
els.videoWrap[0].video.play();
} else {
els.videoWrap[0].video.addEventListener('canplay', function () {
els.videoWrap[0].video.play();
}, {once: true});
}
}
if (resetStatus) {
activeVideo.pause();
activeVideo.currentTime = 0;
eventList.tutorialReset();
}
if (pauseStatus && !activeVideo.paused) {
activeVideo.pause();
}
}
});
}
},
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) {
els.videoList[index + 1].classList.add('is-visible');
if (els.videos[index + 1].readyState > 3) {
els.videos[index + 1].play();
} else {
els.videos[index + 1].addEventListener('loadeddata', function () {
if (this.paused) this.play();
});
}
els.videos[index + 1].videoWrap.controller.focus();
setTimeout(function () {
if (utils.detector.isTouchDevice) {
if (!!els.videoList[index].tooltipCta) {
els.videoList[index].tooltipCta.blur();
}
}
els.videos[index + 1].videoWrap.controller.focus();
utils.onAccessibility(els.videoList[index]);
if (!!els.videoList[index].tooltip) {
utils.onAccessibility(els.videoList[index].tooltip);
}
els.videoList[index].classList.remove('is-visible');
}, 300);
},
click: function () {
let self = this;
for (let i = 0; i < els.tooltipCta.length; i++) {
els.tooltipCta[i].addEventListener('click', function () {
self.nextVideoPlay(i);
});
}
},
tutorialReset: function () {
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
els.videoWrap[0].classList.remove(firstVideoHandler.playClass);
els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass);
els.videoWrap[0].classList.remove(firstVideoHandler.endedClass);
// video wrap
if (!els.videoList[0].classList.contains('is-visible')) {
els.videoList[0].classList.add('is-visible');
}
// tooltip
if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) {
els.videoWrap[0].tooltip.classList.remove('is-visible');
}
// tootip accessibility
utils.offAccessibility(els.videoWrap[0]);
if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip);
for (let i = 0; i < els.videoWrap.length; i++) {
if (i != 0) {
if (els.videoList[i].classList.contains('is-visible')) {
els.videoList[i].classList.remove('is-visible');
}
if (!els.videoWrap[i].video.paused) {
els.videoWrap[i].video.pause();
els.videoWrap[i].video.currentTime = 0;
}
// tooltip
if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) {
els.videoWrap[i].tooltip.classList.remove('is-visible');
}
utils.onAccessibility(els.videoWrap[i]);
if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip);
}
}
// replay cta
els.tutorialReplay.style.display = 'none';
els.tutorialReplay.setAttribute('aria-hidden', true);
els.tutorialReplay.setAttribute('tabindex', -1);
}
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scrollEvent);
eventList.scrollEvent();
}
}
const setVideos = function () {
objs.videos = [];
for (let i = 0; i < els.videoWrap.length; i++) {
let isVideoWrap = els.videoWrap[i];
objs.videos.push(utils.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) {
if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]);
}
if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]);
}
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') {
if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled');
if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible');
utils.offAccessibility(this.wrap.tooltip);
}
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
let playStatus = scrollProgress > 30 && scrollProgress < 60;
if (playStatus && !!this.wrap.tooltipCta) {
this.wrap.tooltipCta.focus();
setTimeout(function () {
self.wrap.tooltipCta.focus();
}, 300);
}
if ((els.videos.length - 1) == this.video.playIndex) {
els.tutorialReplay.style.display = 'block';
els.tutorialReplay.removeAttribute('tabindex');
els.tutorialReplay.removeAttribute('aria-hidden');
if (playStatus) {
els.tutorialReplay.focus();
setTimeout(function () {
els.tutorialReplay.focus();
}, 300);
}
}
setTimeout(function () {
self.controller.style.display = 'none';
}, 100);
}
}));
}
};
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.features.interactiveInterpreter = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
let objs = {};
let stepInfo = [];
let scrollProgress = null;
let isMute = null;
const init = function () {
els.section = document.querySelector('.js-interpreter');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.interactiveContent = els.section.querySelector('.js-interactive');
els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial');
els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video');
els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video');
els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video');
els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta');
els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta');
els.allVideoWrap = els.section.querySelectorAll('.js-video-wrap');
els.muteCta = els.section.querySelectorAll('.js-mute-cta');
// status
isMute = !!els.muteCta && els.muteCta.length > 0;
};
const setProperty = function (el, index) {
el.video = el.querySelector('video');
el.video.videoWrap = el;
el.controller = el.querySelector('.js-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;
el.video.coverImage = el.querySelector('.common-video__cover-image');
if (isMute) {
el.muteCta = els.muteCta[index + 1];
}
};
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.tooltipCta();
eventList.setScroller();
eventHandler.scroll();
if (isMute) {
muteEventHandler();
}
};
const setStepStatus = function (el) {
stepInfo.push({
alert: el.getAttribute('data-alert'),
tooltip: el.getAttribute('data-tooltip')
});
};
const muteEventHandler = function () {
for (let i = 0; i < els.muteCta.length; i++) {
muteEventList.setProperty(els.muteCta[i], i);
muteEventList.setMuteBlindText(els.muteCta[i], i);
muteEventList.click(els.muteCta[i], i);
els.allVideoWrap[i].querySelector('video').style.pointerEvents = 'none';
}
};
const muteEventList = {
setProperty: function (muteCta, index) {
muteCta.videoWrap = els.allVideoWrap[index];
muteCta.videoWrap.muteCta = muteCta;
muteCta.video = els.allVideoWrap[index].querySelector('video');
muteCta.blind = muteCta.querySelector('.blind');
},
setMuteBlindText: function (muteCta) {
muteCta.blind.innerText = muteCta.getAttribute('data-unmute');
},
click: function (muteCta) {
muteCta.addEventListener('click', function () {
let isMute = this.video.muted;
if (!!isMute) {
this.classList.remove('is-muted');
this.classList.add('is-unmuted');
this.blind.innerText = this.getAttribute('data-mute');
this.video.muted = false;
setTagging.mute(this);
} else {
this.classList.remove('is-unmuted');
this.classList.add('is-muted');
this.blind.innerText = this.getAttribute('data-unmute');
this.video.muted = true;
setTagging.unmute(this);
}
});
},
};
const eventList = {
setScroller: function () {
if (els.interactiveContent.scene == null) {
els.interactiveContent.scene = SCROLLER({
trackElement: els.interactiveContent,
useFixed: false
});
}
},
scrollEvent: function () {
if (els.interactiveContent.scene != null) {
els.interactiveContent.scene.trackAnimation(function () {
scrollProgress = this.progress;
if (els.interactiveContent.classList.contains('is-tutorial-opened')) {
let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video');
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
let replayStatus = !document.documentElement.classList.contains('low_network') &&
activeVideo.paused &&
!els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) &&
!els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) &&
scrollProgress > 0 && scrollProgress < 100;
let resetStatus = scrollProgress === 0 || scrollProgress === 100;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (replayStatus) {
if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) {
els.videoWrap[0].video.play();
} else {
els.videoWrap[0].video.addEventListener('canplay', function () {
els.videoWrap[0].video.play();
}, {once: true});
}
}
if (resetStatus) {
activeVideo.pause();
activeVideo.currentTime = 0;
eventList.tutorialReset();
}
if (pauseStatus && !activeVideo.paused) {
activeVideo.pause();
}
}
});
}
},
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) {
els.videoList[index + 1].classList.add('is-visible');
if (els.videos[index + 1].readyState > 3) {
els.videos[index + 1].play();
} else {
els.videos[index + 1].addEventListener('loadeddata', function () {
if (this.paused) this.play();
});
}
els.videos[index + 1].videoWrap.controller.focus();
setTimeout(function () {
if (utils.detector.isTouchDevice) {
if (!!els.videoList[index].tooltipCta) {
els.videoList[index].tooltipCta.blur();
}
}
els.videos[index + 1].videoWrap.controller.focus();
utils.onAccessibility(els.videoList[index]);
if (!!els.videoList[index].tooltip) {
utils.onAccessibility(els.videoList[index].tooltip);
}
els.videoList[index].classList.remove('is-visible');
}, 300);
},
click: {
tooltipCta: function () {
for (let i = 0; i < els.tooltipCta.length; i++) {
els.tooltipCta[i].addEventListener('click', function () {
eventList.nextVideoPlay(i);
});
}
}
},
tutorialReset: function () {
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
els.videoWrap[0].classList.remove(firstVideoHandler.playClass);
els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass);
els.videoWrap[0].classList.remove(firstVideoHandler.endedClass);
// video wrap
if (!els.videoList[0].classList.contains('is-visible')) {
els.videoList[0].classList.add('is-visible');
}
// tooltip
if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) {
els.videoWrap[0].tooltip.classList.remove('is-visible');
}
// tootip accessibility
utils.offAccessibility(els.videoWrap[0]);
if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip);
for (let i = 0; i < els.videoWrap.length; i++) {
if (i != 0) {
if (els.videoList[i].classList.contains('is-visible')) {
els.videoList[i].classList.remove('is-visible');
}
if (!els.videoWrap[i].video.paused) {
els.videoWrap[i].video.pause();
els.videoWrap[i].video.currentTime = 0;
}
// tooltip
if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) {
els.videoWrap[i].tooltip.classList.remove('is-visible');
}
utils.onAccessibility(els.videoWrap[i]);
if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip);
}
}
// replay cta
els.tutorialReplay.style.display = 'none';
els.tutorialReplay.setAttribute('aria-hidden', true);
els.tutorialReplay.setAttribute('tabindex', -1);
}
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scrollEvent);
eventList.scrollEvent();
}
}
const setVideos = function () {
objs.videos = [];
for (let i = 0; i < els.videoWrap.length; i++) {
let isVideoWrap = els.videoWrap[i];
objs.videos.push(utils.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.muteCta);
if (!this.video.muted) {
this.wrap.muteCta.classList.remove('is-unmuted');
this.wrap.muteCta.video.muted = true;
this.wrap.muteCta.blind.innerText = this.wrap.muteCta.getAttribute('data-unmute');
setTagging.unmute(this.wrap.muteCta);
}
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) {
if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]);
}
if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]);
}
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') {
if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled');
if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible');
utils.offAccessibility(this.wrap.tooltip);
}
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
let playStatus = scrollProgress > 30 && scrollProgress < 60;
if (playStatus && !!this.wrap.tooltipCta) {
this.wrap.tooltipCta.focus();
setTimeout(function () {
self.wrap.tooltipCta.focus();
}, 300);
}
if ((els.videos.length - 1) == this.video.playIndex) {
els.tutorialReplay.style.display = 'block';
els.tutorialReplay.removeAttribute('tabindex');
els.tutorialReplay.removeAttribute('aria-hidden');
if (playStatus) {
els.tutorialReplay.focus();
setTimeout(function () {
els.tutorialReplay.focus();
}, 300);
}
}
setTimeout(function () {
self.controller.style.display = 'none';
}, 100);
}
}));
}
};
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'));
}
},
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.interactive = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution(),
scrollProgress = null;
const init = function () {
els.interactiveContents = document.querySelectorAll('.js-interactive');
if (!!els.interactiveContents && els.interactiveContents.length > 0) {
for (let i = 0; i < els.interactiveContents.length; i++) {
setProperty(els.interactiveContents[i], i);
eventList.setIntroVideo(els.interactiveContents[i]);
eventList.setIntroScene(els.interactiveContents[i]);
bindEvents(els.interactiveContents[i], i);
}
}
};
const setProperty = function (content, index) {
// introVideo
content.index = index;
content.introVideo = content.querySelector('.js-interactive-intro-video video');
content.introVideo.videoWrap = content.querySelector('.js-interactive-intro-video');
content.introVideo.wrap = content.querySelector('.js-interactive-intro-video .js-video-wrap');
content.introVideo.parentWrap = content.parentElement;
content.introVideo.controllerCta = content.introVideo.videoWrap.querySelector('.js-video-control');
content.introVideo.controllerCta.video = content.introVideo;
content.introVideo.tooltip = content.querySelector('.js-tutorial-tooltip');
content.introVideo.tooltipCta = content.querySelector('.js-tutorial-tooltip-cta');
content.introVideo.tooltipCta.parentWrap = content;
content.tutorialContentWrap = content.querySelectorAll('.js-tutorial-video');
content.tutorialContentWrap.tooltip = content.querySelectorAll('.js-tutorial-video .js-tutorial-tooltip');
// start, reverse point
content.introVideo.wrap.startPoint = !!content.introVideo.wrap.getAttribute('data-start-point') ? parseInt(content.introVideo.wrap.getAttribute('data-start-point')) : undefined;
content.introVideo.wrap.reversePoint = !!content.introVideo.wrap.getAttribute('data-reverse-point') ? parseInt(content.introVideo.wrap.getAttribute('data-reverse-point')) : undefined;
content.introVideo.wrap.moStartPoint = !!content.introVideo.wrap.getAttribute('data-mo-start-point') ? parseInt(content.introVideo.wrap.getAttribute('data-mo-start-point')) : undefined;
content.introVideo.wrap.moReversePoint = !!content.introVideo.wrap.getAttribute('data-mo-reverse-point') ? parseInt(content.introVideo.wrap.getAttribute('data-mo-reverse-point')) : undefined;
// replayCta
content.replayCta = content.querySelector('.js-replay-cta');
content.replayCta.parentWrap = content;
};
const bindEvents = function (content, i) {
eventHandler.click.introTooltipCta(content.introVideo.tooltipCta);
eventHandler.click.replayCta(content.replayCta);
eventHandler.click.videoController(content.introVideo.controllerCta);
eventHandler.scroll(content);
eventList.scroll(content);
resize.add(function (currRes) {
eventList.resize(currRes, content);
});
};
const eventList = {
setIntroVideo: function (content) {
utils.videoHandler({
playType: 'scrollPlay',
startPoint: content.introVideo.wrap.startPoint,
reversePoint: content.introVideo.wrap.reversePoint,
wrap: content.introVideo.wrap,
video: content.introVideo,
controller: content.introVideo.controllerCta,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
utils.offAccessibility(content.introVideo.videoWrap);
if (content.introVideo.controllerCta.style.display == 'none') {
content.introVideo.controllerCta.style.display = 'block';
}
if (this.video.tooltip.classList.contains('is-visible')) {
this.video.tooltip.classList.remove('is-visible');
}
this.video.tooltip.classList.remove('is-visible');
utils.onAccessibility(this.video.tooltip);
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
setTagging.pause(this.controller);
let videoWrap = content.tutorialContentWrap[0].querySelector('.js-video-wrap');
videoWrap.coverImg = videoWrap.querySelector('.common-video__cover-image');
videoWrap.video = videoWrap.querySelector('video');
if (!!videoWrap.coverImg && !videoWrap.coverImg.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([videoWrap.coverImg]);
}
if (!!videoWrap.video && !videoWrap.video.classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([videoWrap.video]);
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
this.video.tooltip.classList.add('is-visible');
utils.offAccessibility(this.video.tooltip);
let isPlaySection = null;
isPlaySection = scrollProgress > 30 && scrollProgress < 60;
if (isPlaySection) {
this.video.tooltipCta.focus();
setTimeout(function () {
self.video.tooltipCta.focus();
self.controller.style.display = 'none';
}, 300);
}
}
});
},
setIntroScene: function (content) {
content.introVideo.scene = SCROLLER({
trackElement: content.introVideo,
useFixed: false,
resize: utils.detector.isTouchDevice ? false : true
});
},
scroll: function (content) {
if (!content.classList.contains('is-tutorial-opened')) {
content.introVideo.scene.trackAnimation(function () {
content.introVideo.videoHandler.scrollActive(this.progress);
scrollProgress = this.progress;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (pauseStatus && !content.introVideo.paused) {
content.introVideo.pause();
}
});
}
},
click: {
introVideoTooltipCta: function () {
let content = this.parentWrap;
content.classList.add('is-tutorial-opened');
utils.onAccessibility(content.introVideo.videoWrap);
content.tutorialContentWrap[0].classList.add('is-visible');
utils.offAccessibility(content.tutorialContentWrap[0]);
content.tutorialContentWrap[0].querySelector('.common-video__control').focus();
setTimeout(function () {
content.tutorialContentWrap[0].querySelector('.common-video__control').focus();
}, 300);
content.introVideo.tooltip.classList.remove('is-visible');
let videoWrap = content.tutorialContentWrap[0].querySelector('.js-video-wrap');
videoWrap.video.play();
},
replayCta: function () {
let content = this.parentWrap;
content.introVideo.tooltip.classList.remove('is-visible');
utils.onAccessibility(content.introVideo.tooltip);
utils.offAccessibility(content.introVideo.videoWrap);
content.introVideo.controllerCta.style.display = 'block';
content.introVideo.controllerCta.focus();
setTimeout(function () {
content.introVideo.controllerCta.focus();
}, 300);
content.replayCta.style.display = 'none';
content.replayCta.setAttribute('aria-hidden', true);
content.replayCta.setAttribute('tabindex', -1);
for (let i = 0; i < content.tutorialContentWrap.length; i++) {
content.tutorialContentWrap[i].classList.remove('is-visible');
if (!!content.tutorialContentWrap.tooltip[i]) {
content.tutorialContentWrap.tooltip[i].classList.remove('is-visible');
}
utils.onAccessibility(content.tutorialContentWrap[i]);
setTimeout(function () {
content.tutorialContentWrap[i].querySelector('video').currentTime = 0;
}, 300);
}
content.classList.remove('is-tutorial-opened');
content.introVideo.play();
},
videoController: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
e.currentTarget.video.play();
} else {
e.currentTarget.video.pause();
}
}
},
},
reset: function (content) {
if (content.classList.contains('is-tutorial-opened')) {
content.classList.remove('is-tutorial-opened');
}
// replay cta
if (content.replayCta.style.display == 'block') {
content.replayCta.style.display = 'none';
content.replayCta.setAttribute('aria-hidden', true);
content.replayCta.setAttribute('tabindex', -1);
}
// tutorial video
let tutorialWrap = content.tutorialContentWrap;
for (let i = 0; i < tutorialWrap.length; i++) {
tutorialWrap[i].classList.remove('is-visible');
utils.onAccessibility(tutorialWrap[i]);
// video
tutorialWrap[i].video = tutorialWrap[i].querySelector('video');
if (!tutorialWrap[i].video.paused) {
tutorialWrap[i].video.pause();
tutorialWrap[i].video.currentTime = 0;
}
// tooltip
if (!!tutorialWrap.tooltip[i]) {
if (tutorialWrap.tooltip[i].classList.contains('is-visible')) {
tutorialWrap.tooltip[i].classList.remove('is-visible');
}
utils.onAccessibility(tutorialWrap.tooltip[i]);
}
}
// intro video
utils.offAccessibility(content.introVideo.videoWrap);
if (content.introVideo.controllerCta.style.display == 'none') {
content.introVideo.controllerCta.style.display = 'block';
}
// intro tooltip
if (content.introVideo.tooltip.classList.contains('is-visible')) {
content.introVideo.tooltip.classList.remove('is-visible')
}
utils.onAccessibility(content.introVideo.tooltip);
if (scrollProgress >= 30 && scrollProgress <= 60) {
if (content.introVideo.paused) {
content.introVideo.currentTime = 0;
content.introVideo.play();
}
}
},
resize: function (currRes, content) {
currDevice = currRes;
if (prevDevice != currDevice) {
eventList.reset(content);
}
prevDevice = currDevice;
},
};
const eventHandler = {
click: {
replayCta: function (replayCta) {
replayCta.addEventListener('click', eventList.click.replayCta);
},
introTooltipCta: function (introTooltipCta) {
introTooltipCta.addEventListener('click', eventList.click.introVideoTooltipCta);
},
videoController: function (introVideoController) {
introVideoController.addEventListener('click', eventList.click.videoController);
}
},
scroll: function (content) {
window.addEventListener('scroll', function () {
eventList.scroll(content);
});
}
};
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.features.lowLightPortrait = (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('.features-lowlight-portrait');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.image = els.section.querySelector('.features-lowlight-portrait__interaction-image');
els.videoWrap = els.section.querySelector('.js-portrait-video-wrap');
els.video = els.videoWrap.querySelector('.js-portrait-video');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.setScene();
eventList.scroll();
eventHandler.scroll();
els.image.addEventListener('transitionend', eventList.videoPlay);
};
const eventHandler = {
scroll: function() {
window.addEventListener('scroll', eventList.scroll);
}
}
const eventList = {
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
prevDevice = currDevice;
}
},
setVideo: function() {
let movPlayStatus =
document.documentElement.classList.contains('ios') && document.documentElement.classList.contains('safari') ||
document.documentElement.classList.contains('mac') && document.documentElement.classList.contains('safari');
if (!movPlayStatus) {
els.video.src = els.video.getAttribute('data-video-src');
} else {
els.video.src = els.video.getAttribute('data-ios-video-src');
}
els.video.classList.add('is-loaded');
},
setScene: function() {
SCROLLER({
trackElement: els.section,
});
},
scroll: function() {
els.section.scroller.trackAnimation(function() {
if (els.video.readyState < 4 && this.progress >= 0 && !els.video.classList.contains('is-loaded')) {
eventList.setVideo();
}
if (this.progress > 15) {
if (!els.section.classList.contains('is-active')) els.section.classList.add('is-active');
} else if (this.wheelDirection == 'up' && this.progress <= 0) {
if (els.section.classList.contains('is-active')) els.section.classList.remove('is-active');
}
});
},
videoPlay: function() {
clearTimeout(els.video.playState);
els.video.currentTime = 0;
els.video.play();
els.video.playState = setTimeout(() => {
els.video.currentTime = 0;
els.video.pause();
}, 1500);
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.moveFeature = (function () {
const utils = window.flagship.common.utils;
let els = {};
const init = function () {
els.jumpCta = document.querySelectorAll('.js-jump-cta');
if (!!els.jumpCta) {
setProperty();
bindEvents();
}
};
const setProperty = function () {
for (let i = 0; i < els.jumpCta.length; i++) {
els.jumpCta[i].sectionId = els.jumpCta[i].getAttribute('href');
els.jumpCta[i].section = document.querySelector(`${els.jumpCta[i].sectionId}`);
els.jumpCta[i].returnCta = els.jumpCta[i].section.querySelector('.js-return-cta');
els.jumpCta[i].returnCta.jumpCta = els.jumpCta[i];
els.jumpCta[i].returnCta.section = els.jumpCta[i].section;
}
};
const bindEvents = function () {
eventHandler.click();
eventList.setScene();
eventHandler.scroll();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.jumpCta.length; i++) {
els.jumpCta[i].addEventListener('click', eventList.clickJumpCta);
els.jumpCta[i].returnCta.addEventListener('click', eventList.clickReturnCta);
}
},
scroll: function () {
window.addEventListener('scroll', eventList.hideReturnCta);
}
};
const eventList = {
setScene: function () {
for(let i=0; i 0;
break;
case 'down':
resetStatus = this.progress >= 90;
activeStatus = this.progress > 42 && this.progress < 90;
break;
}
if (resetStatus && stopScroll) eventList.resetScroll();
if (activeStatus && !stopScroll) eventList.activeScroll();
});
},
resetScroll: function () {
stopScroll = false;
nightographyOn = true;
if (nightographyOn) eventList.setButton();
},
activeScroll: function () {
stopScroll = true;
if (!nightographyOn) eventList.setImage();
}
};
const accessibility = {
arrowButton: function (onTarget, offTarget) {
utils.onAccessibility(onTarget);
utils.offAccessibility(offTarget);
setTimeout(() => {
if (!resetStatus && onTarget.classList.contains('is-disabled')) offTarget.focus();
}, 300);
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.photoAssist = (function () {
const utils = window.flagship.common.utils,
resize = flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
const isRtl = document.documentElement.classList.contains('rtl');
const isLowBand = document.documentElement.classList.contains('low_network');
const init = function () {
els.section = document.querySelector('.features-photo-assist');
els.videos = els.section.querySelectorAll('.common-video__video');
if (!!els.section && !!els.videos) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.swiperContainer = els.section.querySelector('.common-carousel__container');
};
const bindEvents = function () {
eventHandler.load();
eventHandler.scroll();
};
const eventHandler = {
load: function () {
eventList.setScene();
eventList.setVideoType();
eventList.scroll();
els.swiperContainer.swiper.on('slideChange', eventList.slideChange);
els.swiperContainer.swiper.on('transitionEnd', eventList.transitionEnd);
},
scroll: function() {
window.addEventListener('scroll', eventList.scroll);
}
};
const eventList = {
setMedia: function(swiper, index) {
let isIndex = index + 1 > swiper.slides.length -1 ? swiper.slides.length -1 : index + 1;
let videoLength = swiper.el.querySelectorAll('video').length - 1;
let imageLength = swiper.el.querySelectorAll('img').length - 1;
let videoloadComplateLength = swiper.el.querySelectorAll('.is-video-load-complete').length - 1;
let imageloadComplateLength = swiper.el.querySelectorAll('.is-img-load-complete').length - 1;
let nextVideo = swiper.slides[isIndex].querySelector('video');
let nextImage = swiper.slides[isIndex].querySelector('img');
if (videoloadComplateLength != videoLength) {
if (!!nextVideo) {
videoLoader.setResponsiveMedia([nextVideo]);
}
}
if (imageloadComplateLength != imageLength) {
if (!!nextImage) {
imageLoader.setResponsiveMedia([nextImage]);
}
}
},
resetVideo: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let isVideo = swiper.slides[i].video;
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
isVideo.currentTime = 0;
};
};
},
getCarouselSizeInfo: function(swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[isRtl ? 3 : 1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin)/slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
setDimmedSlide: function(swiper) {
if (currDevice != 'mobile') {
for (let i = 0; i < swiper.slides.length; i++) {
let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i;
if (dimmedSlide) {
swiper.slides[i].classList.add(dimmedClass);
} else {
swiper.slides[i].classList.remove(dimmedClass);
}
}
}
},
slideChange: function () {
accessibility.slide(this);
eventList.resetVideo(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.setDimmedSlide(this);
if (this.realIndex > 0) eventList.setMedia(this, this.realIndex);
},
transitionEnd: function() {
if (this.slides.length < 3 && currDevice == 'mobile') return;
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length -1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize || carouselInfo.maxMoveSize == carouselInfo.isMoveSize) {
eventList.resetVideo(this);
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize == carouselInfo.isMoveSize) {
eventList.resetVideo(this);
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
let swiperActiveSlide = els.section.querySelector('.swiper-slide-active');
let lastSlideActive = els.section.querySelector('.is-last-slide');
let isActiveSlide = !!lastSlideActive ? lastSlideActive : swiperActiveSlide;
let isActiveVideo = isActiveSlide.querySelector('video');
if (!!isActiveVideo && !isLowBand) isActiveVideo.play()
}, 0);
},
setScene: function() {
els.section.scene = SCROLLER({
trackElement: els.section
});
},
setVideoType: function() {
if (!!els.videos) {
for (let i = 0; i < els.videos.length; i++) {
els.videos[i].videoHandler.playType = 'scrollPlay';
}
}
},
scroll: function() {
els.section.scene.trackAnimation(function() {
let swiperActiveSlide = els.section.querySelector('.swiper-slide-active');
let lastSlideActive = els.section.querySelector('.is-last-slide');
let isActiveSlide = !!lastSlideActive ? lastSlideActive : swiperActiveSlide;
let isActiveVideo = isActiveSlide.querySelector('video');
if (!!isActiveVideo && !isLowBand) isActiveVideo.videoHandler.scrollActive(this.progress);
});
}
};
const accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.viewer = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize,
common = window.flagship.features.common,
isLow = utils.isLowNetwork();
let els = {},
currDevice = resize.checkResolution();
const init = function () {
els.viewerBtn = document.querySelector('.viewer-btn');
els.section = document.querySelector('.js-colors');
els.popup = document.querySelector('.js-viewer');
if (!!isLow) {
if (!els.viewerBtn) return;
els.currentWrap = els.popup;
setElements();
setProperty();
popupEvents.set();
bindEvents();
} else {
if (!els.section) return;
els.currentWrap = els.section;
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
els.wrapEl = document.querySelector('#wrap');
els.contents = document.querySelector('#contents');
// popup
els.popupWrap = els.currentWrap.querySelector('.js-viewer-wrap');
els.popupInner = els.currentWrap.querySelector('.js-viewer-inner');
els.closeCta = els.currentWrap.querySelector('.js-viewer-close');
els.popupContents = els.currentWrap.querySelector('.js-viewer-contents');
// popup-scroll
els.popupScroll = els.currentWrap.querySelector('.js-viewer-scroll');
els.popupScrollUpBtn = els.currentWrap.querySelector('.js-scroll-up');
els.popupScrollDownBtn = els.currentWrap.querySelector('.js-scroll-down');
// viewer
els.viewerIframe = els.currentWrap.querySelector('iframe');
els.foldBtn = els.currentWrap.querySelector('.js-fold-btn');
els.resetBtn = els.currentWrap.querySelector('.js-reset-btn');
// angle preset
els.presetOpen = els.currentWrap.querySelector('.js-preset-open');
els.presetClose = els.currentWrap.querySelector('.js-preset-close');
els.presetLayer = els.currentWrap.querySelector('.js-preset-layer');
els.angleCta = els.currentWrap.querySelectorAll('.js-angle-cta');
};
const setProperty = function () {
// timeout
els.resizeTimeout = null;
els.resizeInnerTimeout = null;
els.viewerOpener = null;
els.viewerIframe.isHash = false;
els.viewerIframe.isIntroposeReady = false;
els.viewerIframe.isFold = false;
els.viewerIframe.resetTimeout = null;
};
const bindEvents = function () {
eventHandler.load();
eventHandler.message();
eventHandler.click();
resize.add(eventList.resize);
if (!isLow) {
eventList.setScene();
}
};
const eventHandler = {
load: function () {
window.addEventListener('DOMContentLoaded', eventList.load, {
once: true
});
},
message: function () {
window.addEventListener('message', eventList.receiveV3DMessage, false);
},
click: function () {
if (!!isLow) {
els.popupScroll.addEventListener('click', eventList.clickLayerScroll);
}
els.foldBtn && els.foldBtn.addEventListener('click', eventList.clickFold);
els.resetBtn && els.resetBtn.addEventListener('click', eventList.clickReset);
els.presetOpen && els.presetOpen.addEventListener('click', eventList.openPresetPopup);
for (let i = 0; i < els.angleCta.length; i++) {
els.angleCta[i].addEventListener('click', eventList.setAngle);
}
els.contents.addEventListener('click', function (e) {
if (e.target.classList.contains('js-reset-btn') || e.target.classList.contains('js-fold-btn') || e.target.classList.contains('js-preset-open') || e.target.closest('.js-preset-layer')) return;
eventList.closePresetPopup();
});
},
scroll: function () {
window.addEventListener('scroll', eventList.runIntroPose);
}
};
const eventList = {
load: function () {
if (!!isLow) {
eventList.innerWrapHeight();
eventList.layerScroll();
}
accessibility.fold.ariaLabel();
eventList.setFoldClass();
},
receiveV3DMessage: 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');
}
}
} 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');
}
}
} else if (e.data == 'V3D.state.introPose.ready') {
if (!isLow) {
els.viewerIframe.isIntroposeReady = true;
eventHandler.scroll();
eventList.runIntroPose();
} else {
els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*');
}
} else if (e.data == 'V3D.state.localData.ready') {
els.viewerIframe && els.viewerIframe.contentWindow.postMessage(JSON.stringify(V3DLOCALDATA), '*');
} else if (e.data == 'V3D.state.actionPose.0') {
els.viewerIframe.isFold = false;
eventList.setFoldClass();
} else if (e.data == 'V3D.state.actionPose.1') {
els.viewerIframe.isFold = true;
eventList.setFoldClass();
} else if (e.data == 'V3D.event.pointerdown') {
eventList.closePresetPopup();
}
},
resize: function (currRes) {
currDevice = currRes;
if (utils.detector.isTouchDevice && !utils.detector.isIosDevice) eventList.innerWrapHeight();
eventList.layerScroll();
},
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 () {
eventList.setLayerScroll();
}, 300);
},
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');
}
},
clickLayerScroll: function (e) {
e && e.preventDefault();
if (e.target.matches('.js-scroll-btn')) {
let scrollDown = e.target.classList.contains('js-scroll-down'),
$popupContents = $(els.popupContents);
if (scrollDown) {
$popupContents.stop().animate({
scrollTop: $popupContents.scrollTop() + 100
}, {
duration: 300,
complete: function () {
eventList.updateLayerScroll(true);
}
});
} else {
$popupContents.stop().animate({
scrollTop: $popupContents.scrollTop() - 100
}, {
duration: 300,
complete: function () {
eventList.updateLayerScroll(true);
}
});
}
}
},
updateLayerScroll: 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');
}
},
setScene: function () {
els.sceneObj = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
runIntroPose: function () {
els.sceneObj.trackAnimation(function () {
let progress = currDevice.indexOf('mobile') > -1 ? 50 : 30;
if (this.progress >= progress && !!els.viewerIframe.isIntroposeReady) {
els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*');
window.removeEventListener('scroll', eventList.runIntroPose);
}
});
},
clickFold: function () {
if (!els.viewerIframe.isFold) {
els.viewerIframe.isFold = true;
els.viewerIframe.contentWindow.postMessage('V3D.action', '*');
} else {
els.viewerIframe.isFold = false;
els.viewerIframe.contentWindow.postMessage('V3D.action.reverse', '*');
}
accessibility.fold.ariaLabel();
eventList.setFoldClass();
accessibility.fold.tagging();
},
clickReset: function () {
let viewerSrc = els.viewerIframe.getAttribute('src');
els.viewerIframe.setAttribute('src', `${viewerSrc}#reset=1`);
clearTimeout(els.viewerIframe.resetTimeout);
els.viewerIframe.resetTimeout = setTimeout(function () {
viewerSrc = viewerSrc.split('#reset=1')[0];
els.viewerIframe.setAttribute('src', viewerSrc);
}, 300);
},
openPresetPopup: function () {
if (!els.presetLayer.classList.contains('is-active')) {
els.presetOpen.classList.add('is-open');
els.presetLayer.classList.add('is-active');
els.presetOpen.setAttribute('aria-expanded', true);
els.presetClose.focus();
} else {
eventList.closePresetPopup();
}
els.presetClose && els.presetClose.addEventListener('click', eventList.closePresetPopup);
},
closePresetPopup: function (e) {
if (els.presetLayer.classList.contains('is-active')) {
els.presetOpen.classList.remove('is-open');
els.presetLayer.classList.remove('is-active');
els.presetOpen.setAttribute('aria-expanded', false);
if (e && e.target.classList.contains('js-preset-close')) {
els.presetOpen.focus();
}
}
},
setFoldClass: function () {
if (!els.viewerIframe.isFold) {
if (els.foldBtn.classList.contains('is-folded')) els.foldBtn.classList.remove('is-folded');
els.foldBtn.classList.add('is-fold');
} else {
if (els.foldBtn.classList.contains('is-fold')) els.foldBtn.classList.remove('is-fold');
els.foldBtn.classList.add('is-folded');
}
},
setAngle: function () {
let target = this,
targetAngle = target.innerText.toLowerCase();
if (targetAngle == 'front') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 0', '*');
} else if (targetAngle == 'back') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 3.141592653589793', '*');
} else if (targetAngle == 'top') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 1.5707963267948966,angleY: 3.141592653589793', '*');
} else if (targetAngle == 'bottom') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: -1.5707963267948966,angleY: 0', '*');
} else if (targetAngle == 'left') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 1.5707963267948966', '*');
} else if (targetAngle == 'right') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: -1.5707963267948966', '*');
}
accessibility.selected(target);
}
};
const popupEvents = {
set: function () {
utils.layerPopup({
layerPopup: els.popup,
layerPopupClass: '.js-viewer',
openerEvent: {
element: els.viewerBtn,
},
closeCtas: [els.closeCta],
dimmed: els.popupWrap,
moveTarget: document.documentElement,
contents: els.contents,
show: {
start: function (target) {
els.popup.classList.add('is-init');
popupEvents.show(target.openerCta);
},
end: function () {
if (utils.detector.isIosDevice) els.popup.style.display = 'block';
els.popup.classList.add('is-open');
}
},
hide: {
start: function () {
els.popup.classList.remove('is-open');
},
end: function () {
setTimeout(function () {
els.popup.classList.remove('is-init');
}, 300);
popupEvents.hide();
}
}
});
},
show: function (viewerOpener) {
if (viewerOpener.classList.contains('viewer-btn')) {
els.viewerIframe.isHash = false;
els.viewerOpener = viewerOpener;
} else {
els.viewerIframe.isHash = true;
els.viewerOpener = els.viewerBtn;
}
els.viewerIframe.setAttribute('src', common.getViewerUrl());
},
hide: function () {
els.viewerIframe.setAttribute('src', 'about:blank');
if (els.viewerIframe.isHash) {
setTimeout(function () {
els.viewerOpener.focus();
}, 300);
}
},
};
const accessibility = {
fold: {
ariaLabel: function () {
if (!els.viewerIframe.isFold) {
els.foldBtn.setAttribute('aria-label', `${els.foldBtn.getAttribute('data-unfolded')}`);
} else {
els.foldBtn.setAttribute('aria-label', `${els.foldBtn.getAttribute('data-folded')}`);
}
},
tagging: function () {
let dataOmni = els.foldBtn.getAttribute('data-omni'),
gaLa = els.foldBtn.getAttribute('ga-la');
if (!els.viewerIframe.isFold) {
els.foldBtn.setAttribute('data-omni', dataOmni.replace('folded', 'unfolded'));
els.foldBtn.setAttribute('ga-la', gaLa.replace('folded', 'unfolded'));
} else {
els.foldBtn.setAttribute('data-omni', dataOmni.replace('unfolded', 'folded'));
els.foldBtn.setAttribute('ga-la', gaLa.replace('unfolded', 'folded'));
}
},
},
selected: function (target) {
for (let i = 0; i < els.angleCta.length; i++) {
els.angleCta[i].removeAttribute('title');
if (els.angleCta[i].classList.contains('is-selected')) {
els.angleCta[i].classList.remove('is-selected');
}
}
if (!target.classList.contains('is-selected')) {
target.classList.add('is-selected');
}
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
};
return {
init: init
}
})();
})();
flagship.features.initialize = (function () {
window.flagship.common.resize.bindEvent();
const init = function () {
flagship.features.clickToVideo.init();
flagship.features.headline.init();
flagship.features.howtoPopup.init();
flagship.features.oneColumnCarousel.init();
flagship.features.scrollVideo.init();
flagship.features.threeColumnCarousel.init();
flagship.features.aiOverview.init();
flagship.features.battery.init();
flagship.features.cameraSpec.init();
flagship.features.faq.init();
flagship.features.flexWindow.init();
flagship.features.highlightsZone.init();
flagship.features.interactiveSuggested.init();
flagship.features.interactiveInterpreter.init();
flagship.features.interactive.init();
flagship.features.lowLightPortrait.init();
flagship.features.moveFeature.init();
flagship.features.nightography.init();
flagship.features.photoAssist.init();
flagship.features.viewer.init();
};
return {
init: init
}
})();
flagship.features.initialize.init();
});
Enregistrement de l'appareil
Quick and easy product registration.. Receive up-to-date personalized services and tips.
Serial Number/IMEI
Enter your Serial Number/IMEI
QR Scan
Scan the QR code on your products for easy registration.
* This feature can only be supported on Samsung Home Appliances and non-smart B2C monitors.
Enter your Serial Number/IMEI
Quick and easy product registration.
Please enter the 11 or 15- digit number.
This product is already registered. Make sure you entered the right serial number or IMEI.
iaType
iaSubType
iaCategory
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Product registration is almost complete!!
You've entered a valid S/N or IMEI. Now select the model of your product.
Recherches suggérées
No result. Please try again.
Galaxy Book3 Ultra
SM-G996BZKGEUA
Serial Number: R3CR508WNAH
The device you are currently using does not support the camera function.