Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (2024)

Table of Contents
Galaxy S24 | S24+ Galaxy AI ya llegó Aprovechá cada curva Es grande, más grande y más rápido Elegí tu dispositivo épico Colores inspirados en minerales Fortificado con Armor Aluminum Ingresá a nuestra historia inspirada en los minerales Potenciá los detalles con ProVisual engine 50MP. Mega Mega Píxeles Capturá los detalles con la cámara Realizá fotografías a distancia. Incluso en la oscuridad Acércate más con cada pellizco Hacé espacio para un AI Zoom épico Redimensionalo, retocalo. Así de fácil Cambiá el tamaño a una foto y retocala con Photo Assist Mantené pulsada la tecla de cámara lenta Mantené pulsada la tecla de cámara lenta Previsualizaciones Super HDR. AI mejorada incluso antes de tomar la foto Marcalo y encontralo. Así de fácil Hacele un círculo. Encontralo. Live Translate. La forma más fácil de comunicarse Comunicación en otro idioma La AI puede resumir tus grabaciones de voz Una intérprete en tu bolsillo Tus artículos imprescindibles están al alcance de tu mano Elegí el tono adecuado para tu texto con Chat Assist Traducciones de texto en tiempo real Vapor Chamber más resistente. ¡A jugar! Nuestra pantalla móvil adaptable más brillante bajo el sol La batería para todo el día es más inteligente durante más tiempo, ¿Por qué cambiar de iOS a Galaxy? Cambiá sin esfuerzo desde iOS Pionera en la frontera de la AI Olvidate de las barreras entre dispositivos Probá Galaxy en tu smartphone Tu privacidad. Asegurada. Los cambios comienzan con pasos pequeños Canjeá y ahorrá Hasta 512GB de almacenamiento Accesorios para la próxima era Preguntas frecuentes References

Galaxy S24 | S24+

  • ESPECIFICACIÓN
  • OPINIONES

Comprar

  • Destacados
  • Comparar
  • Accesorios
  • ESPECIFICACIÓN
  • OPINIONES
Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (1)
Comprar

Pre-compra ahora Dónde comprar

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (2)

Galaxy AI ya llegó

Bienvenido a la era de la AI móvil. Con el Galaxy S24|S24+ en tus manos, podrás dar rienda suelta a nuevos niveles de creatividad, productividad y posibilidades, empezando por el dispositivo más importante de tu vida. Tu smartphone.

Épico, así de sencillo.

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (3)

Página de blog abierta en aplicación. Texto del blog en un círculo: Papas tornado. Resultados de papas tornado en ventana emergente de aplicación. Ventana emergente arrastra arriba resultados de GoogleSearch en pantalla completa.

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (4)

Una llamada telefónica se traduce en tiempo real. El diálogo se muestra en pantalla como una conversación de texto en dos idiomas.

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (5)

Se genera una transcripción de una grabación de voz con diálogo separado por locutor. Cuando se reproduce el clip, las palabras se resaltan en sincronía con el audio. A continuación, se genera un resumen esquematizado de la grabación de voz.

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (6)

Se está editando una foto. Se selecciona el sujeto, se le cambia el tamaño y se traslada a otra ubicación en la imagen. A continuación, se rellenan las áreas que faltan.

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (7)

Una conversación por mensaje de texto se muestra en un idioma extranjero. Una burbuja emergente dice: “tocá para traducir”. Cuando se pulsa, la burbuja se convierte en una barra con menú desplegable de idioma de entrada y salida. Cada burbuja de mensaje ahora muestra tanto el mensaje original como su traducción.

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (8)

A text message conversation is shown in a foreign language. A popup bubble says, “tap to translate.” When tapped, the bubble turns into a bar with drop-down input and output language menu. Each message bubble now shows both the original message and its translation.

Circle to Search

Saltar al Circle to Search

Live Translate

Saltar a Live Translate

Interprete

Saltar al intérprete

Transcript Assist

Saltar a Transcript Assist

Photo Assist

Saltar a Photo Assist

Chat Assist

Saltar a Chat Assist

  • Circle to Search

  • Live Translate

  • intérprete

  • Transcript Assist

  • Photo Assist

  • Chat Assist

Probá Galaxy en tu smartphone Escaneá este QR code o visita trygalaxy.com

Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (9)

En general

"Baterías más grandes, pantallas más brillantes y una IA más inteligente"

CNET

Galaxy AI

"La nueva era de los teléfonos inteligentes mejorados con IA"

GQ

Galaxy AI

"Galaxy AI realmente parece el futuro de los teléfonos"

Inverse

    Aprovechá cada curva

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (10)

    Primer plano extremo de las esquinas del Galaxy S24 Plus. El dispositivo gira lentamente. A continuación, un primer plano comienza con las teclas laterales y gira hasta el panel trasero. A continuación, el dispositivo visto en su totalidad desde la parte trasera.

    Fácil de agarrar. Satisfactorio de sostener. Con su diseño unificado y acabado satinado, los Galaxy S24 y S24+ se sienten tan suaves como se ven.

    Es grande, más grande y más rápido

    Son las mejoras que estabas esperando. Más pantalla. Más batería. Más potencia de procesamiento. Hay mucho más que adorar de los Galaxy S24 y S24+. Especialmente ahora que el Galaxy S24+ viene con la mayor resolución de pantalla en un dispositivo Galaxy: QHD+.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (11)

    Elegí tu dispositivo épico

    Ambos dispositivos han mejorado sus prestaciones. Descubrí cómo se comparan el Galaxy S24 y el S24+.

    Galaxy S24 Galaxy S24+

    Tamaño Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (12) 6,2" Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (13) 6,7"

    Resolución Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (14) FHD+ Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (15) QHD+

    Batería (uso típico) Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (16) 4000mAh Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (17) 4900mAh

    Memoria Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (18) 8GB Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (19) 12GB

    Banda ultraancha - no disponible Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (20) UWB

    Colores inspirados en minerales

    Cobalt Violet Amber Yellow Marble Gray Jade Green Sapphire Blue Sandstone Orange

    Dos dispositivos de la serie Galaxy S24 en Cobalt Violet. Uno está en posición vertical y se ve desde atrás. El otro smartphone se ve desde el lateral para mostrar los bordes del marco.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (21)

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (22)

    Dos dispositivos de la serie Galaxy S24 en Amber Yellow. Uno está en posición vertical y se ve desde atrás. El otro smartphone se ve desde el lateral para mostrar los bordes del marco.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (23)

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (24)

    Dos dispositivos de la serie Galaxy S24 en Marble Gray. Uno está en posición vertical y se ve desde atrás. El otro smartphone se ve desde el lateral para mostrar los bordes del marco.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (25)

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (26)

    Dos dispositivos de la serie Galaxy S24 en Jade Green. Uno está en posición vertical y se ve desde atrás. El otro smartphone se ve desde el lateral para mostrar los bordes del marco.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (27)

    Exclusivo Online

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (28)

    Disponibles únicamente en Samsung.com

    Dos dispositivos de la serie Galaxy S24 en Sapphire Blue. Uno está en posición vertical y se ve desde atrás. El otro smartphone se ve desde el lateral para mostrar los bordes del marco.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (29)

    Exclusivo Online

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (30)

    Disponibles únicamente en Samsung.com

    Dos dispositivos de la serie Galaxy S24 en Sandstone Orange. Uno está en posición vertical y se ve desde atrás. El otro smartphone se ve desde el lateral para mostrar los bordes del marco.

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (31)

    Exclusivo Online

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (32)

    Disponibles únicamente en Samsung.com

    Fortificado con Armor Aluminum

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (33)

    Este aluminio de grado espacial garantiza que tu dispositivo no solo sea duradero, sino que esté listo para la aventura. Más liviano que el acero inoxidable, el nuevo y mejorado Armor Aluminum te mantiene protegido. Y con la resistencia al polvo y al agua IP68, no tendrás que preocuparte por nada.

    Ingresá a nuestra historia inspirada en los minerales

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (34)

    Inspirados en los minerales más preciosos de la Tierra, estos llamativos colores revelan el poder de la naturaleza. Cada color elemental (Cobalt Violet, Amber Yellow, Onyx Black y Marble Gray) es una declaración de intenciones sólida como una roca.

    Galaxy AI

    Potenciá los detalles con ProVisual engine

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (35)

    Capturada por el Galaxy S24+ #withGalaxy

    50MP. Mega Mega Píxeles

    Una auténtica potencia de píxeles que no te decepcionará. Nunca. Hacé fotos de alta resolución que, sin dudas, resistirán el paso del tiempo durante años.

    Capturá los detalles con la cámara

    Tanto si querés hacerte un selfie súper dulce como si querés hacer fotos con un gran angular o ampliar la imagen, estas cámaras te ayudarán a conseguir una foto perfecta.

    Cámara posterior

    10MP Zoom óptico de 3x

    50MP Zoom de calidad óptica de ángulo amplio y 2x

    12MP Ultra Ancha

    cámara frontal

    12MP Cámara de selfie

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (36)

    Realizá fotografías a distancia. Incluso en la oscuridad

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (37)

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (38)

    Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (39)

    Capturada por el Galaxy S24+ #withGalaxy

      Capturá fotos brillantes, coloridas y nítidas, incluso en la oscuridad con AI ISP. Finalmente, los retratos que siempre soñaste. Hacé zoom con 2x, o incluso 3x, realmente no importa.,Cada distancia puede ser tan clara como el día aunque, técnicamente, sea de noche.

      Acércate más con cada pellizco

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (40) Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (41) Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (42)

      Tocá para ampliar

      Capturada por el Galaxy S24+ #withGalaxy

      Seguí pellizcando. Pasá de 1x a 2x o, incluso, a 3x.,La AI mantiene la alta calidad de las imágenes: nítidas, claras y súper definidas, sin perder mucho detalle.,

      Hacé espacio para un AI Zoom épico

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (43)

      El visor de la aplicación Cámara muestra a una mujer posando delante de un fondo escénico. La cámara hace zoom de 1x a 2x y luego a 3x. A continuación, aparece una foto nítida de un sujeto con un fondo escénico con un zoom de 2,5x.

      Capturada por el Galaxy S24+ #withGalaxy

      Capturá imágenes asombrosas con detalles vívidos a más distancias de zoom que antes. Acercate a la acción y captá detalles mejorados gracias a la nueva solución AI Zoom.,

      Redimensionalo, retocalo. Así de fácil

      Descubrí la magia de la edición fotográfica basada en AI. Ahora podés perfeccionar tus fotos sin esfuerzo, asegurándote de que cada imagen brille. Pero eso no es todo, incluso si no pudiste capturar la foto que querías, Generative Edit puede rellenar fondos y hacer que los objetos no deseados *puf* desaparezcan.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (44)

      Se edita una foto en la aplicación Gallery. Para enderezarla, se gira la foto y aparecen esquinas vacías en el marco. A continuación, se rellenan las zonas que faltan y el fondo.

      Girá tu foto y dejá que el relleno de fondo complete las esquinas que faltan para encajar en el marco.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (45)

      Se edita una foto en la aplicación Gallery. Se presiona un botón de edición y se selecciona el sujeto. Se cambia su tamaño y se mueve a otro lugar de la foto. A continuación, se rellenan las zonas que faltan.

      Seleccioná y mové un objeto en tu foto y AI rellenará el espacio que deja atrás como si nunca hubiera estado allí.

      Photo Assist

      Cambiá el tamaño a una foto y retocala con Photo Assist

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (46)

      En la pantalla del Galaxy S24 se muestra una foto de un patinador practicando en un parque de patinaje. Está seleccionado el botón de edición. Luego, el botón con estrellas de Galaxy AI. Se traza una línea alrededor del skateboarder y luego se lo mueve hacia arriba. Se toca el botón “Generar”. La foto se procesa y se completa el área faltante donde estaba el sujeto. Se muestra un antes y un después.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (47)

      En la aplicaciónGallery, se abre una foto de un skater que practica en un parque de skateboard.

      Tocá acá

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (48)

      La foto está ahora en el modo de edición de la aplicación Gallery.

      Tocá acá ga-la="galaxy-s24:highlights:camera^photo-assist-popup^experience:lypu:slct-tap:2" aria-labelledby="photo-assist-tooltip2 photo-assist-btntext2"> Galaxy AI

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (49)
      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (50)

      Una onda de color azulado pasa momentáneamente sobre la foto.

      Tocá o dibujá para seleccionar

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (51)

      Se rodea a un skateboarder.

      Mové la selección

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (52)

      En modo de edición. Una onda de color azulado pasa momentáneamente sobre la foto. Se rodea a un skateboarder. Luego, se mueve hacia la parte de arriba de la foto al skateboarder.

      Tocá acá

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (53)
      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (54)

      Se procesa la foto. Se completa el área faltante donde estaba el sujeto.

      Photo Assist

      Reinventá imágenes al volver a posicionar gente u objetos y llenar el fondo.

      Mantené pulsada la tecla de cámara lenta

      Mantené pulsada la tecla de cámara lenta

      Atrapá la acción y agregale, después, efectos épicos a la cámara lenta. La cámara lenta instantánea utiliza AI generativa para rellenar imágenes entre los fotogramas de los videos regulares de tu Gallery o tus descargas. Todo lo que se necesita es un simple toque y sujeción.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (55)

      Un video de un corredor se reproduce a velocidad normal en la pantalla del Galaxy S24 plus. A medida que la cámara se acerca al corredor desde atrás, el video cambia a cámara lenta.

      Previsualizaciones Super HDR. AI mejorada incluso antes de tomar la foto

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (56)

      En la ventana de vista previa de la aplicación Cámara, se toma una foto. A continuación, se pulsa el botón Gallery para abrir la foto más reciente de Gallery. Se pulsa el botón Compartir. Se selecciona una foto para compartir. A continuación, se selecciona una aplicación de redes sociales. La foto aparece en la aplicación de la red social para cargarse como una nueva publicación. A continuación, la foto aparece como una publicación cargada en el feed de la aplicación.

      Capturada por el Galaxy S24+ #withGalaxy

      Con nuestra última actualización Super HDR, puedes capturar imágenes vívidas tal y como las ves, desde la previsualización hasta la publicación. E incluso funciona cuando hacés fotos con Instagram.

      Obtené una vista previa Super HDR incluso antes de pulsar el disparador. Guardala en tu galería o subila a tu feed; en cualquier caso, verás la misma calidad HDR espectacular.

      Marcalo y encontralo. Así de fácil

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (57)

      Página de blog abierta en aplicación. Texto del blog en un círculo: Papas tornado. Resultados de papas tornado en ventana emergente de aplicación. Ventana emergente arrastra arriba resultados de GoogleSearch en pantalla completa.

      Buscá como nunca con Circle to Search. Basta con trazar un objeto para obtener los resultados del buscador de Google. Es una nueva forma visual de encontrar lo que buscas.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (58)

      Marcar para buscar

      Hacele un círculo. Encontralo.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (59)

      En la pantalla del GalaxyS24 se reproduce un video publicado en una aplicación de redes sociales. Muestra una vista panorámica de una sala de estar recién decorada. La toma se acerca a un póster enmarcado en la pared. El botón de inicio se mantiene pulsado. Se muestra una barra de búsqueda de Google en la parte inferior de la pantalla. Se traza un círculo alrededor del póster. Se identifica el póster y aparecen resultados similares de Google en una ventana emergente sobre la aplicación de redes sociales. Marcar para buscar con Google.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (60)
      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (61)

      Una aplicación de redes sociales reproduce una publicación de video. El posteo en redes sociales muestra una vista panorámica de una sala de estar recién decorada.

      El botón de inicio se mantiene pulsado

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (62)

      Se dibuja un círculo de puntos alrededor de un póster enmarcado en la pared. Google está escrito en la parte superior del marco y aparece una barra de búsqueda de Google en la parte inferior. Se traza un círculo alrededor del póster.

      Hacé un círculo o tocá para buscar.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (63)
      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (64)

      Se identifica el póster y aparecen resultados similares de Google en una ventana emergente sobre la aplicación de redes sociales.

      Marcar para buscar

      Buscá lo que quieras sin cambiar de aplicación.

      Live Translate. La forma más fácil de comunicarse

      Conseguí una rápida traducción de idiomas en tu próxima llamada telefónica. Así es, la AI te ayuda a comunicarte fuera de tu propio idioma mientras hablas por smartphone. Y escuchá esto, incluso funciona en mensajería.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (65)

      Una llamada telefónica es interpretada en tiempo real. El diálogo se muestra en pantalla como una conversación de texto en dos idiomas.

      Live Translate

      Comunicación en otro idioma

      Tocá para llamar

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (66)

      Hay una llamada telefónica en curso en la pantalla del GalaxyS24.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (67)

      Hay una llamada telefónica en curso en la pantalla del Galaxy S24. En la parte superior de la conversación hay un menú desplegable de idiomas.

      Tocá para traducir

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (68)

      El diálogo hablado de la llamada telefónica se transcribe en la pantalla en el idioma hablado original y, a continuación, aparece traducido debajo de la transcripción original.

      Live Translate

      ¡Te olvidaste la billetera en el taxi al viajar! ¿Cómo hablarle a un taxista en otro idioma?

      La AI puede resumir tus grabaciones de voz

      ¿Estás listo para ser tu propio asistente personal? Grabá tu voz y la AI la anotará, la convertirá en texto y la resumirá de forma inteligente. Incluso traduce a otros idiomas.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (69)

      Se genera una transcripción del diálogo. Se muestra el guion completo con el texto separado por locutor. Cuando se reproduce la grabación de voz, las frases se resaltan en sincronía con el audio. Cuando se presiona la pestaña de resumen, se genera un resumen esquematizado de la grabación de voz.

      Una intérprete en tu bolsillo

      ¿Querés pedirle una recomendación a un local? ¡No te preocupes! Hay un intérprete en tu bolsillo. Disfrútalo incluso en modo avión sin Wi-Fi.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (70)

      In the Interpreter app, a conversation in two languages is transcribed and translated in real time.

      Tus artículos imprescindibles están al alcance de tu mano

      Personalizá tu experiencia diaria con widgets en la pantalla de bloqueo y Always On Display. Desde recordatorios importantes hasta la calidad del aire local, obtené la información que necesitás de un vistazo.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (71)

      La pantalla de bloqueo se atenúa para convertirse en una pantalla Always On Display con widgets del clima, la hora y la alarma con un panel de control del reproductor de música.

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (72)

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (73)

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (74)

      Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (75)

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (76)

        Elegí el tono adecuado para tu texto con Chat Assist

        Agregá un nuevo nivel de expresión a tus mensajes con Chat Assist. Funciona en el email y en las redes sociales para que chatear sea rápido y fácil.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (77)

        Chat Assist

        Traducciones de texto en tiempo real

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (78)

        Se abre una conversación por mensaje de texto en la pantalla del Galaxy S24. Los mensajes están en un idioma extranjero. Una burbuja emergente dice: “tocá para traducir”. Cuando se pulsa, la burbuja se convierte en una barra con menú desplegable de idioma de entrada y salida. Cada burbuja de mensaje ahora muestra tanto el mensaje original como su traducción.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (79)

        Una lista de conversaciones.

        Tocá acá

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (80)

        La conversación se abre para mostrar un diálogo en un idioma extranjero. Aparece una burbuja emergente que dice “tocá para traducir”.

        Tocá acá

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (81)

        El menú desplegable de idioma de entrada y salida muestra Automático y español respectivamente. Cada burbuja de mensaje ahora muestra tanto el mensaje original como su traducción al español.

        Tocá acá

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (82)

        El inglés se cambia a francés en el menú de salida.

        Tocá acá

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (83)

        Ahora los mensajes se traducen al francés.

        Chat Assist

        Mejorá tu comunicación con traducción de chats y mensajes de texto.

        Vapor Chamber más resistente. ¡A jugar!

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (84)

        La escena de juego de Gameloft se muestra en la pantalla del Galaxy S24 Plus. Los detalles son nítidos y el contenido es fluido.

        Este nuevo y mejorado sistema de disipación del calor te ayuda a seguir jugando con un rendimiento óptimo. Nuestra última Vapor Chamber es más grande que antes, con un material de interfaz térmica de tipo líquido integrado.

        Vapor Chamber

        casi 1,5x más grande

        Nuestra pantalla móvil adaptable más brillante bajo el sol

        Subí de nivel con estas dos enormes pantallas. Gracias al aumento del tamaño de la pantalla y a los biseles ultrafinos, la pantalla FHD+ de 6,2in del Galaxy S24 y la pantalla QHD+ de 6,7in del Galaxy S24+ ofrecen más espacio de pantalla que nunca, proporcionando una experiencia de visualización más envolvente., Además, podés disfrutar de un color y contraste óptimos con Vision Booster en ambas pantallas.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (85)

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (86)

        La batería para todo el día es más inteligente durante más tiempo,

        Encendidos durante mucho más tiempo. Los Galaxy S24 y S24+ tienen una batería inteligente que te da más tiempo de juego, tiempo de reloj y tiempo para ti.,,,

        • Mirá videos hasta

          29 horas Galaxy S24

          31 horas Galaxy S24+

        • Escuchá música hasta

          78 horas Galaxy S24

          92 horas Galaxy S24+

        ¿Por qué cambiar de iOS a Galaxy?

        Cambiá sin esfuerzo desde iOS

        Guardá tus fotos, contactos, calendario y aplicaciones con Smart Switch, incluso si alternás desde iOS.,,

        Visitá Smart Switch

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (87)

        Pionera en la frontera de la AI

        Pásate a Galaxy para que todo tu día sea más sencillo en la nueva era de la AI móvil.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (88)

        Olvidate de las barreras entre dispositivos

        Cambiá a Galaxy para abrir formas perfectas de trabajar, jugar y mantenerte sano en todos tus dispositivos.

        Ir a Experiencia conectada

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (89)

        Probá Galaxy en tu smartphone

        ¿Ya probaste el dispositivo Galaxy más nuevo del momento? ¿Y si lo hacemos ahora? ¡En tu smartphone! Empezá la experiencia con esta descarga.

        ¿Ya probaste el dispositivo Galaxy más nuevo del momento? ¿Y si lo hacemos ahora? ¡En tu smartphone! Simplemente escaneá el QR code y descargalo para comenzar.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (90)

        Tu privacidad. Asegurada.

        La privacidad del usuario sigue siendo nuestra prioridad en la era de la IA. Con el lanzamiento de Galaxy AI en la serie Galaxy S24, podés estar seguro de que no almacenaremos ni usaremos tus datos personales para ningún propósito sin tu consentimiento.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (91)

        Samsung Knox

        Los cambios comienzan con pasos pequeños

        Estamos avanzando hacia un futuro sostenible, paso a paso. Creemos en la creación de un viaje sostenible a través de pequeños cambios que podrían marcar una gran diferencia. Se siente bien hacer el bien.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (92)

        Canjeá y ahorrá

        Cambiá tu antiguo smartphone para ahorrar en tu nuevo Galaxy S24 o Galaxy S24+.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (93)

        Hasta 512GB de almacenamiento

        Almacená todo con las opciones de 256GB y 512GB. O elige 128GB en el Galaxy S24.

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (94)

        Accesorios para la próxima era

        Explorá más

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (95)

        Preguntas frecuentes

        Galaxy S24Ultra

        Más información

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (96)

        Descubrí formas inteligentes de obtener tu Galaxy S24|S24+

        Comprar

        Registrate Pre-compra ahora Dónde comprar

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (97)

        Mirá el Galaxy S24|S24+ en realidad aumentada Abrir en realidad aumentada

        La vida se abre con Galaxy

        Explorá más

        Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (101)

        Ver en 360°

        Tomalo para dar un giro

        *Colores exclusivos en línea solo disponibles en Samsung.com.

        Nuevas formas épicas de hacer negocios

        Ir a Samsung Business

        *Todas las especificaciones y descripciones aquí contenidas pueden diferir de las especificaciones y descripciones reales del producto. Samsung se reserva el derecho a realizar cambios en esta documentación y producto aquí descritos en cualquier momento sin obligación, por su parte, de notificar tal cambio. Todas las funciones, características, especificaciones, GUI u otra información del producto en esta documentación que incluye, pero no se limita a, los beneficios, diseño, precio, componentes, rendimiento, disponibilidad y capacidades del producto pueden cambiar sin previo aviso ni obligación. Contenido simulado de imagen en pantalla con fines demostrativos solamente.

        *Es posible que sea necesario iniciar sesión en la Samsung Account para utilizar determinadas funciones de la AI de Samsung.

        *Samsung no promete, asegura ni garantiza la exactitud, integridad o fiabilidad de los resultados proporcionados por las funciones de AI.

        *Las funciones de Galaxy AI se proporcionarán de forma gratuita hasta fines de 2025 en dispositivos compatibles con Samsung Galaxy. Pueden aplicar diferentes términos para las funciones de AI proporcionadas por terceros.

        *Imagen simulada solo con fines ilustrativos. Secuencias acortadas y simuladas. La UI real puede diferir de la imagen.

        1. Secuencias acortadas y simuladas. Resultados con fines meramente ilustrativos. Los resultados pueden variar en función de las coincidencias visuales. Requiere conexión a Internet. Es posible que los usuarios deban actualizar Android a la última versión. La funcionalidad del producto puede depender de la aplicación y de la configuración del dispositivo. Algunas funciones pueden no ser compatibles con determinadas aplicaciones. La disponibilidad del servicio varía según el país y el idioma. No se garantiza la exactitud de los resultados.
        2. Live Translate requiere conexión a la red e inicio de sesión en la Samsung Account. Live Translate solo está disponible en la aplicación Samsung para smartphone preinstalada. Algunos idiomas pueden requerir la descarga de paquetes de idiomas. La disponibilidad del servicio puede variar según el idioma. No se garantiza la precisión de los resultados.
        3. Interpreter requires Samsung Account login. Certain languages may require language pack download. Service availability may vary by language. Accuracy of results is not guaranteed. Availability and supported features may vary by country, region or carrier. Availability of supported languages may vary.
        4. Transcript Assist requiere una conexión de red y el inicio de sesión en la Samsung Account. Transcript Assist solo está disponible en la aplicación preinstalada Voice Recorder de Samsung o en archivos grabados con la aplicación preinstalada Samsung Phone. Es posible que la función de grabación de voz de la aplicación Samsung Phone preinstalada no sea compatible en algunos países. Los archivos de audio deben tener una duración inferior a 3 horas para poder ser procesados. La función de resumen de Transcript Assist puede activarse cuando se alcanza un determinado número de caracteres. La disponibilidad del servicio puede variar según el idioma. No se garantiza la exactitud de los resultados.
        5. Generative Edit requiere una conexión de red y el inicio de sesión en la Samsung Account. La edición con Generative Edit da como resultado una foto redimensionada de hasta 12MP. Una marca de agua visible se superpone a la imagen de salida al guardarla para indicar que la imagen ha sido generada por AI. No se garantiza la precisión y fiabilidad del resultado generado.
        6. Translating feature in Chat Assist requires a network connection, Samsung Account login and language pack download from the Galaxy store. Must meet length requirements to activate feature. Service availability may vary by country, region or language. Some chat applications may not support this feature. Accuracy of results is not guaranteed.
        7. El Galaxy S24+ comparado con el Galaxy S24.
        8. En comparación con los Galaxy S23 y S23+.
        9. Medido en diagonal, el tamaño de la pantalla del Galaxy S24 es de 6,2in en el rectángulo completo y de 6in si se tienen en cuenta las esquinas redondeadas. El tamaño de la pantalla del Galaxy S24+ es de 6,7in en el rectángulo completo y de 6,5in si se tienen en cuenta las esquinas redondeadas. El área visible real es menor debido a las esquinas redondeadas y al orificio de la cámara.
        10. Valor típico probado bajo condiciones de laboratorio de terceros. El valor típico es el valor promedio estimado considerando la desviación en la capacidad de la batería entre las muestras de batería probadas según el estándar IEC 61960. La capacidad nominal (mínima) es de 3880mAh para el Galaxy S24, de 4755mAh para el Galaxy S24+ y de 4855mAh para el Galaxy S24Ultra. La duración real de la batería puede variar según el entorno de red, los patrones de uso y otros factores.
        11. La disponibilidad de los colores puede variar según el país o el operador.
        12. El marco no incluye el volumen y las teclas laterales ni la bandeja SIM.
        13. El sensor de Adaptive Pixel permite un zoom óptico de calidad.
        14. El zoom de 2x debe estar habilitado en la configuración de la aplicación Camera Assistant. Camera Assistant se puede descargar desde Galaxy Store.
        15. Los resultados pueden variar según las condiciones de luminosidad o de disparo, incluidos varios sujetos, estar fuera de foco o sujetos en movimiento.
        16. El Space Zoom 30X incluye un zoom óptico 3x y un zoom digital 30x con tecnología de súper resolución. Las distancias de zoom superiores al zoom 3x pueden expresar cierto deterioro de la imagen.
        17. AI Zoom se aplica a distancias entre longitudes de zoom digital. No se garantiza la precisión de los resultados.
        18. Es posible que algunas aplicaciones de redes sociales no admitan Super HDR. No se garantiza la precisión de los resultados.
        19. La calidad HDR es compatible con las fotos subidas como publicaciones de Instagram y los videos subidos como reels.
        20. La función de traducción de Chat Assist puede requerir el inicio de sesión en la Samsung Account. Es posible que algunas aplicaciones de chat no admitan esta función. Algunos idiomas pueden requerir la descarga de paquetes de idiomas. La disponibilidad del servicio puede variar según el idioma. Esta función se activa cuando se detecta un idioma traducible. No se garantiza la precisión de los resultados.
        21. Algunos widgets funcionales pueden requerir una conexión de red y/o el inicio de sesión en la Samsung Account. La disponibilidad de las funciones compatibles con las aplicaciones puede variar según el país.
        22. La función de sugerencia de tono en Chat Assist requiere una conexión de red y un inicio de sesión en una Samsung Account. Debe cumplir con los requisitos de longitud para activar la función. La disponibilidad del servicio puede variar según el idioma. No se garantiza la precisión de los resultados.
        23. ©2024 Gameloft. Todos los derechos reservados. Gameloft, el logotipo de Gameloft y Asphalt son marcas comerciales de Gameloft en EE.UU. y/o en otros países. Todos los fabricantes, autos, nombres, marcas e imágenes asociadas son marcas comerciales y/o materiales protegidos por derechos de autor de sus respectivos propietarios.
        24. Las pantallas Dynamic AMOLED 2X de los Galaxy S24 y S24+ recibieron la certificación VDE Germany por Mobile Color Volume al 100% en el rango de color DCI-P3, lo que significa que tus imágenes no parecerán desteñidas y obtendrás colores increíblemente vívidos sin importar los diferentes niveles de brillo. La pantalla puede alcanzar un brillo máximo de hasta 2600nits, lo que mejora el contraste entre los aspectos oscuros y luminosos del contenido digital para lograr una calidad de imagen más brillante, con una relación de contraste de 5000000:1 para que la experiencia móvil sea más envolvente.
        25. La duración de la batería real varía de acuerdo al entorno de la red, las características y las aplicaciones utilizadas, la frecuencia de llamadas y mensajes, la cantidad de veces que se carga y muchos otros factores. Se estima en relación con el perfil de uso de un usuario compilado por UX Connect Research. Evaluado de forma independiente por UX Connect Research entre el 25 de noviembre de 2023 y el 15 de diciembre de 2023 en EE.UU. y en el Reino Unido con versiones anteriores al lanzamiento de SM-S921, SM-S926 y SM-S928, con la configuración predeterminada utilizando redes LTE y5GSub6. NO se ha probado en la red 5G mmWave.
        26. Según las condiciones de prueba de laboratorio internas de Samsung con la versión previa al lanzamiento del modelo dado conectado a los auriculares a través de Bluetooth en la configuración predeterminada a través de LTE. Se calcula en función de la capacidad de la batería y el voltaje medido sobre el actual consumo de energía de la batería durante la reproducción de video (resolución de archivo de video de 720p, guardada en el dispositivo) y la reproducción de audio (archivo mp3, de 192kbps, guardado en el dispositivo con pantalla LCD apagada), respectivamente. Los tiempos reales de reproducción de video y de audio varían según la conexión de red, la configuración, el formato de archivo, el brillo de la pantalla, el estado de la batería y muchos otros factores.
        27. Las transferencias por cable desde dispositivos Android™ requieren que el dispositivo receptor tenga Android 4.3 o posterior y que el dispositivo emisor tenga Android 4.3™ o posterior. Las transferencias se pueden realizar sin un cable a través de una conexión inalámbrica. Para las conexiones inalámbricas, el dispositivo receptor debe tener Android™ 4.0 o posterior y el dispositivo emisor debe tener Android™ 4.0 o posterior. Abrí Smart Switch Mobile en “Configuración” en el dispositivo Galaxy receptor o descargá la aplicación Smart Switch Mobile desde Galaxy Store. Los datos y el contenido disponibles para la transferencia pueden variar según el método de transmisión.
        28. Las transferencias por cable desde iOS requieren que el dispositivo receptor tenga Android™4.3 o posterior y que el dispositivo emisor tenga iOS 5 o posterior. Las transferencias se pueden completar sin un cable a través de una conexión inalámbrica o iCloud. Para las conexiones inalámbricas, el dispositivo receptor debe tener Android™4.0 o posterior y el dispositivo emisor debe tener iOS12 o posterior. Las transferencias de iCloud requieren que el dispositivo receptor tenga Android™4.0 o posterior y que el dispositivo emisor tenga iOS 5 o posterior. Abrí Smart Switch Mobile en “Configuración” en el dispositivo Galaxy receptor o descargá la aplicación Smart Switch Mobile desde Galaxy Store. Para transferencias inalámbricas, descargue Smart Switch para iOS desde App Store en tu iPhone o iPad. Los datos y el contenido disponibles para la transferencia pueden variar según el método de transmisión.
        29. Se recomienda utilizar una conexión por cable al transferir diversos conjuntos de datos a la vez.
        30. Los Galaxy Buds2 Pro, Galaxy Watch6 y Galaxy Tab S9 se venden por separado.
        31. Disponible en dispositivos con Android OS 10 (sistema operativo Q) o posterior y One UI 2.1 o posterior. Los PC compatibles incluyen Samsung Notebooks y Galaxy Books, incluidos los PC basados en Qualcomm lanzados en 2020 o posterior y los PC con Windows de otros fabricantes que ejecuten Windows 10 2004 o posterior y que tengan controladores Bluetooth Intel versión 22.50.02 o posterior y controladores Wi-Fi Intel versión 22.50.07 o posterior.
        32. Galaxy Tab S9 se vende por separado.
        33. Al compartir archivos utilizando códigos QR y contactos, se pueden transferir hasta 1000archivos a la vez. Los archivos individuales deben tener menos de 3GB se pueden transferir hasta 5GB de datos en total al día. Los enlaces caducan después de dos días. El dispositivo del remitente requiere una Samsung Account, y tanto el dispositivo del remitente como el del destinatario requieren una conexión a Internet.
        34. Knox Matrix es compatible con teléfonos y tabletas Galaxy One UI6.0 o superior. La disponibilidad puede variar según el país o la región.
        35. Se aplican términos y condiciones. La disponibilidad puede variar según el operador, el país o la región. Revisa si tu dispositivo es elegible en la página de Trade-in.
        36. Las opciones de almacenamiento y disponibilidad pueden variar según el operador, el país o la región. La disponibilidad real de almacenamiento puede variar según el software instalado previamente.
        37. Todos los accesorios se venden por separado.
        38. Los Galaxy S24, S24+ y S24 Ultra están clasificados como IP68. Basado en condiciones de prueba de laboratorio para su inmersión en hasta 1,5metros en agua dulce durante un máximo de 30minutos. No se recomienda su uso en la playa ni en la piscina. La resistencia al agua y al polvo del dispositivo no es permanente y puede disminuir con el tiempo debido al desgaste normal.
        39. Cámara lenta instantánea solo está disponible en la aplicación preinstalada Samsung Video Player y Samsung Gallery. La disponibilidad del servicio puede variar según las especificaciones del video.
        40. La función de traducción en Chat Assist requiere una conexión de red, inicio de sesión en Samsung Account y descarga de paquete de idioma desde Galaxy store. Debe cumplir con los requisitos de longitud para activar la función. La disponibilidad del servicio puede variar según el país, la región o el idioma. Es posible que algunas aplicaciones de chat no admitan esta función. No se garantiza la precisión de los resultados.

        ')); } } }; const isZoom = function () { const winInnerWidth = window.innerWidth, winOuterWidth = window.outerWidth; let zoomLevel = 100 / ((winInnerWidth / winOuterWidth) * 100); if (zoomLevel > 1.75) { document.documentElement.classList.add('browser-zoomed-175'); } else { document.documentElement.classList.remove('browser-zoomed-175'); } }; return { addLoadStatusClass: addLoadStatusClass, setResolution: setResolution, onClickSup: onClickSup, centeredFocus: centeredFocus, setArBanner: setArBanner, isZoom: isZoom, } })(); (function () { const resize = window.flagship.common.resize, common = window.flagship.highlights.common, utils = window.flagship.common.utils, agent = navigator.userAgent.toLowerCase(), maxOs = agent.indexOf('mac os') > -1, touchDevice = ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)); let els = {}; const init = function () { els.videoWrap = document.querySelectorAll('.common-video'); els.isGlobal = document.documentElement.classList.contains('global'); if (!!els.videoWrap[0]) { setElements(); } }; const setElements = function () { // popup els.viewerPopup = document.querySelector('.highlights-viewer'); els.designSpecPopup = document.querySelector('.highlights-design-spec-popup'); els.cameraSpecPopup = document.querySelector('.highlights-resolution-popup'); els.dayVideoPopup = document.querySelector('.highlights-day-popup'); els.transcriptAssistPopup = document.querySelector('.highlights-live-translate-popup'); els.generativeEditExperience = document.querySelector('#generative-edit-experience'); els.circleToSearchExperience = document.querySelector('#circle-to-search-experience'); els.liveTranslateExperience = document.querySelector('#live-translate-experience'); els.chatAssistExperience = document.querySelector('#chat-assist-experience'); // video els.videosWrap = document.querySelectorAll('.common-video'); els.videos = document.querySelectorAll('.common-video video'); for (var i = 0; i < els.videosWrap.length; i++) { els.videos[i].videoWrap = els.videosWrap[i]; } }; const bindEvents = function () { window.addEventListener('load', anchorPosition); window.addEventListener('hashchange', anchorPosition); }; const anchorPosition = function () { if (window.location.hash != '') { switch (window.location.hash) { case '#s24-vs-s24-plus': if (els.designSpecPopup) els.designSpecPopup.show(); break; case '#see-in-360': if (els.viewerPopup) els.viewerPopup.show(); break; case '#camera-spec': if (els.cameraSpecPopup) els.cameraSpecPopup.show(); break; case '#day-video': if (els.dayVideoPopup) els.dayVideoPopup.show(); break; case '#transcript-assist': if (els.transcriptAssistPopup) els.transcriptAssistPopup.show(); break; case '#generative-edit-experience': if (els.generativeEditExperience) { els.generativeEditExperience.show(); } break; case '#circle-to-search-experience': if (els.circleToSearchExperience) { els.circleToSearchExperience.show(); } break; case '#live-translate-experience': if (els.liveTranslateExperience) { els.liveTranslateExperience.show(); } break; case '#chat-assist-experience': if (els.chatAssistExperience) { els.chatAssistExperience.show(); } break; default: let hash = location.hash.split('#')[1], hashSection = document.querySelector('#contents #' + hash), hashTimeout = null; clearTimeout(hashTimeout); hashTimeout = setTimeout(function () { if (hashSection) { let sectionTop = hashSection.getBoundingClientRect().top, navHeight = utils.getNavHeight(), hashScroll = window.pageYOffset + sectionTop - navHeight; window.scrollTo(0, hashScroll); } }, 300); break; } } }; var setResize = function () { resize.init([{ resolution: 1920, resolutionName: 'desktop', eventFunction: '' }, { resolution: 1023, resolutionName: 'tablet', eventFunction: '' }, { resolution: 767, resolutionName: 'mobile', eventFunction: '' }, { resolution: 320, resolutionName: 'mobileS', eventFunction: '' }], 200); resize.add(common.setResolution); }; const setScrollControl = function () { window.scrollController = ANIUTIL.scrollController(); scrollController.init({ speed: 120, duration: 0.5 }); }; const setImageLoader = function () { window.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-img-src', responsiveClass: '.js-res-img', preset: els.isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.bgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-bg-img', loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }; const setVideoLoader = function () { window.videoLoader = ANIUTIL.mediaLoader({ type: 'video', lazyClass: '.js-video-src', responsiveClass: '.js-res-video', preset: els.isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (video.videoWrap && !video.videoWrap.classList.contains('is-loaded')) { video.videoWrap.classList.add('is-loaded'); } } }); }; const setCenteredfocus = function () { els.contents = document.querySelector('#contents'); els.allClickables = els.contents.querySelectorAll('a, button, input, select'); for (let i = 0; i < els.allClickables.length; i++) { els.allClickables[i].addEventListener('focusin', common.centeredFocus); } }; const setDisclaimerNumber = function () { const supTag = document.querySelectorAll('.click_sup'), btmDicl = document.querySelectorAll('li.common-bottom-disclaimer__list-item'); let btmDiclArr = []; for (let i = 0; i < btmDicl.length; i++) { let dataSup = btmDicl[i].getAttribute('data-sup'); btmDiclArr.push(dataSup); } for (let j = 0; j < supTag.length; j++) { let dataSupTag = supTag[j].getAttribute('data-sup-tag'); let supChildCount = supTag[j].parentElement.childElementCount; if (btmDiclArr.indexOf(dataSupTag) > -1) { supTag[j].innerText = btmDiclArr.indexOf(dataSupTag) + 1; } else { if (supChildCount == 1) { supTag[j].parentElement.remove(); } else { let supParent = supTag[j].parentElement.childNodes; let supArr = []; for (let supIndex = 0; supIndex < supParent.length; supIndex++) { supArr.push(supParent[supIndex]); } let index = supArr.indexOf(supTag[j]); if (index != 0 && index % 2 == 0) { supParent[index].remove(); supParent[index - 1].remove(); } else { if (index != supArr.length) supParent[index + 1].remove(); supParent[index].remove(); } } } } }; const setDisclaimer = function () { els.supClicker = document.querySelectorAll('a.click_sup'); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', common.onClickSup); } }; const setVideoTheme = function () { for (let i = 0; i < els.videoWrap.length; i++) { let colorType = els.videoWrap[i].getAttribute('data-theme-type'); if (colorType === 'white') { els.videoWrap[i].classList.add('common-video__white'); } else if (colorType === 'black') { els.videoWrap[i].classList.add('common-video__black'); } } }; const setVideoBlind = function () { for (let i = 0; i < els.videoWrap.length; i++) { els.videoWrap[i].control = els.videoWrap[i].querySelector('.common-video__control'); els.videoWrap[i].blind = els.videoWrap[i].querySelector('.blind'); els.videoWrap[i].blind.innerHTML = (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) ? LOCAL_VARI.play : 'play'; } }; const onLoadHandler = function () { common.addLoadStatusClass(); common.setArBanner(); init(); bindEvents(); setResize(); if (!maxOs && !touchDevice) { setScrollControl(); } setImageLoader(); setVideoLoader(); setCenteredfocus(); setDisclaimerNumber(); setDisclaimer(); setVideoTheme(); setVideoBlind(); common.isZoom(); resize.add(common.isZoom); }; onLoadHandler(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.accordion = (function () { const resize = window.flagship.common.resize; let els = {}; let objs = { accordion: [] }; let prevDevice = null; let currDevice = resize.checkResolution(); const init = function () { els.accordionList = document.querySelectorAll('.common-accordion__list'); if (!!els.accordionList && els.accordionList.length > 0) { bindEvents(); } }; const bindEvents = function () { resize.add(onResizeHandler); setAccordion(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { onResponsiveHandler(); prevDevice = currDevice; } }; const onResponsiveHandler = function () { for (let i = 0; i < els.accordionList.length; i++) { let isOpenedItem = els.accordionList[i].querySelector('.is-open'); if (!!isOpenedItem) { let isOpenedItemContent = isOpenedItem.querySelector('.js-accordion-content'); let clientHeight = isOpenedItemContent.children[0].clientHeight; isOpenedItemContent.style.height = `${clientHeight}px`; } } }; const setAccordion = function () { for (let i = 0; i < els.accordionList.length; i++) { objs.accordion[i] = new window.flagship.common.accordion({ wrap: els.accordionList[i], openType: currDevice.indexOf('mobile') > -1 ? 'single' : 'multiple', open: { start: function (target) { handlerList.setImages(target); handlerList.setVideo(target); }, end: function (target) { let targetVideo = target.querySelector('.common-accordion__content video'); if (targetVideo && targetVideo.paused) targetVideo.play(); } }, close: { start: function (target) { let targetVideo = target.querySelector('.common-accordion__content video'); if (targetVideo && !targetVideo.paused) { targetVideo.pause(); targetVideo.currentTime = 0; } }, end: function () { } } }); objs.accordion[i].init(); } }; const handlerList = { setImages: function (target) { let targetImages = target.querySelectorAll('.common-accordion__content img'); if (targetImages && targetImages.length > 0) { for (let i = 0; i < targetImages.length; i++) { if (!targetImages[i].classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([targetImages[i]]); } } } }, setVideo: function (target) { let targetVideos = target.querySelectorAll('.common-accordion__content video'); if (targetVideos && targetVideos.length > 0) { for (let i = 0; i < targetVideos.length; i++) { if (!targetVideos[i].classList.contains('is-video-load-complete')) { videoLoader.setResponsiveMedia([targetVideos[i]]); } } } } } return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.clickToVideo = (function () { let els = {}, objs = { clickToVideo: [], }; const init = function () { els.clickToVideosWrap = document.querySelectorAll('.js-scroll-video-disable .common-video'); if (els.clickToVideosWrap.length > 0) { setElements(); setVideo(); } }; const setElements = function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { els.clickToVideosWrap[i].video = els.clickToVideosWrap[i].querySelector('.common-video__figure>video'); els.clickToVideosWrap[i].controller = els.clickToVideosWrap[i].querySelector('.common-video__control'); els.clickToVideosWrap[i].controller.video = els.clickToVideosWrap[i].video; els.clickToVideosWrap[i].controller.addEventListener('click', clickVideoCta); } }; const setVideo = function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { objs.clickToVideo[i] = ANIUTIL.videoHandler({ wrap: els.clickToVideosWrap[i], video: els.clickToVideosWrap[i].video, controller: els.clickToVideosWrap[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }; const clickVideoCta = function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.scrollVideo = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, objs = { scrollVideo: [], scene: [] }, currDevice = resize.checkResolution(); const init = function () { els.scrollVideoWraps = document.querySelectorAll('.common-video.js-scroll-video'); els.pageScrollVideoWraps = []; if (!!els.scrollVideoWraps) { for (let i = 0; i < els.scrollVideoWraps.length; i++) { if (!els.scrollVideoWraps[i].parentElement.classList.contains('common-popup__video') && !els.scrollVideoWraps[i].parentElement.classList.contains('js-scroll-video-disable')) { els.pageScrollVideoWraps.push(els.scrollVideoWraps[i]); } } } if (els.pageScrollVideoWraps.length > 0) { setElements(); objList.setVideo(); objList.setScene(); bindEvents(); } }; const setElements = function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { els.pageScrollVideoWraps[i].video = els.pageScrollVideoWraps[i].querySelector('.common-video__figure>video'); els.pageScrollVideoWraps[i].controller = els.pageScrollVideoWraps[i].querySelector('.common-video__control'); els.pageScrollVideoWraps[i].controller.video = els.pageScrollVideoWraps[i].video; els.pageScrollVideoWraps[i].startPoint = !!els.pageScrollVideoWraps[i].getAttribute('data-start-point') ? els.pageScrollVideoWraps[i].getAttribute('data-start-point') : undefined; els.pageScrollVideoWraps[i].reversePoint = !!els.pageScrollVideoWraps[i].getAttribute('data-reverse-point') ? els.pageScrollVideoWraps[i].getAttribute('data-reverse-point') : undefined; els.pageScrollVideoWraps[i].moStartPoint = !!els.pageScrollVideoWraps[i].getAttribute('data-mo-start-point') ? els.pageScrollVideoWraps[i].getAttribute('data-mo-start-point') : undefined; els.pageScrollVideoWraps[i].moReversePoint = !!els.pageScrollVideoWraps[i].getAttribute('data-mo-reverse-point') ? els.pageScrollVideoWraps[i].getAttribute('data-mo-reverse-point') : undefined; els.pageScrollVideoWraps[i].controller.addEventListener('click', handlerList.videoCta); } }; const bindEvents = function () { window.addEventListener('scroll', handlerList.scroll); handlerList.scroll(); resize.add(onResizeHandler); }; const onResizeHandler = function (currRes) { currDevice = currRes; }; const objList = { setVideo: function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { objs.scrollVideo[i] = ANIUTIL.videoHandler({ playType: 'scrollPlay', startPoint: (currDevice.indexOf('mobile') > -1) ? els.pageScrollVideoWraps[i].moStartPoint : els.pageScrollVideoWraps[i].startPoint, reversePoint: (currDevice.indexOf('mobile') > -1) ? els.pageScrollVideoWraps[i].moReversePoint : els.pageScrollVideoWraps[i].reversePoint, wrap: els.pageScrollVideoWraps[i], video: els.pageScrollVideoWraps[i].video, controller: els.pageScrollVideoWraps[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }, setScene: function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { objs.scene[i] = SCROLLER({ trackElement: els.pageScrollVideoWraps[i].video, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); } } }; const handlerList = { scroll: function () { for (let i = 0; i < els.pageScrollVideoWraps.length; i++) { objs.scene[i].trackAnimation(function () { objs.scrollVideo[i].scrollActive(this.progress); }); } }, videoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.tutorialPopup = function (opts) { const utils = window.flagship.common.utils; let els = {}; let status = {}; let show = {}, hide = {}; status.isGlobal = document.documentElement.classList.contains('global'); const init = function () { setElements(); setOpts(); bindEvent(); }; const setElements = function () { els.html = document.documentElement; els.tutorialPopup = opts.tutorialPopup; els.closeCtas = opts.closeCtas; els.dimmed = !!!opts.dimmed ? '' : opts.dimmed; els.tutorialPopupClass = opts.tutorialPopupClass; }; const setOpts = function () { show.start = (!!!opts.show) ? undefined : opts.show.start; show.end = (!!!opts.show) ? undefined : opts.show.end; hide.start = (!!!opts.hide) ? undefined : opts.hide.start; hide.end = (!!!opts.hide) ? undefined : opts.hide.end; } const bindEvent = function () { opts.openerEvent.element.addEventListener('click', showLayer); els.tutorialPopup.show = showLayer; els.tutorialPopup.hide = hideLayer; }; const showLayer = function (e) { if (opts.openerEvent.proxy) { if (opts.openerEvent.parent) { if (e.target.parentElement.classList.contains(opts.openerEvent.class)) { els.openerCta = e.target.parentElement; } } else { if (e.target.classList.contains(opts.openerEvent.class)) { els.openerCta = e.target; } } } else { els.openerCta = this; } els.tutorialPopup.opener = els.openerCta; if (show.start) show.start(els); els.html.classList.add('is-layer-open'); utils.hiddenScroll(els.tutorialPopup); if (utils.detector.isIosDevice) { els.tutorialPopup.opener.blur(); els.openerCta.style.display = 'none'; } els.closeCtas[0].focus(); setTimeout(function () { els.closeCtas[0].focus(); }, 400); for (let i = 0; i < els.closeCtas.length; i++) { els.closeCtas[i].addEventListener('click', hideLayer); } if (els.dimmed) els.dimmed.addEventListener('click', onClickDimmed); if (show.end) show.end(els); }; const hideLayer = function () { if (utils.detector.isIosDevice) els.openerCta.style.display = ''; if (hide.start) hide.start(els); for (let i = 0; i < els.closeCtas.length; i++) { els.closeCtas[i].removeEventListener('click', hideLayer); } if (els.dimmed) els.dimmed.removeEventListener('click', onClickDimmed); els.html.classList.remove('is-layer-open'); utils.visibleScroll(); if (!!!els.openerCta) { els.tutorialPopup.opener.focus(); } else { els.openerCta.focus(); } setTimeout(function () { if (!!!els.openerCta) { els.tutorialPopup.opener.focus(); } else { els.openerCta.focus(); } }, 300); if (hide.end) hide.end(els); }; const onClickDimmed = function (e) { if (e.currentTarget == e.target) { hideLayer(); } }; return init(); }; })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.aod = (function () { let els = {}; let status = {}; let objs = { videos: [], }; const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; const init = function () { els.section = document.querySelector('.highlights-aod'); if (!!els.section) { setElements(); objList.setScene(); bindEvents(); } }; const setElements = function () { els.swiperContainer = els.section.querySelector('.highlights-aod__content-container'); els.nextArrow = els.section.querySelector('.highlights-aod__content-arrow--next'); els.prevArrow = els.section.querySelector('.highlights-aod__content-arrow--prev'); els.pagination = els.section.querySelector('.highlights-aod__content-pagination'); }; const bindEvents = function () { objList.swiper(); objs.swiper.on('init', swiperEvents.init); objs.swiper.on('slideChange', swiperEvents.slideChange); objs.swiper.on('transitionEnd', swiperEvents.transitionEnd); objs.swiper.init(); window.addEventListener('scroll', eventList.scrollHandler); }; const objList = { swiper: function () { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { init: false, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, pagination: { el: els.pagination, type: 'bullets', clickable: true, renderBullet: function () { return '

      • '; } }, loop: true, slidesPerView: 'auto', centeredSlides: true, speed: 800, }); } }, setVideo: function () { for (let i = 0; i < els.videoWrap.length; i++) { objs.videos[i] = ANIUTIL.videoHandler({ playType: 'scrollPlay', startPoint: resize.checkResolution().indexOf('mobile') > -1 ? 37 : 45, reversePoint: resize.checkResolution().indexOf('mobile') > -1 ? 70 : 100, wrap: els.videoWrap[i], video: els.videos[i], controller: els.videoController[i], endCallback: function () { if (!els.videoWrap[i].classList.contains('is-completed')) { els.videoWrap[i].classList.add('is-completed'); } }, resetCallback: function () { if (els.videoWrap[i].classList.contains('is-completed')) { els.videoWrap[i].classList.remove('is-completed'); } }, }); }; }, setScene: function () { objs.scene = SCROLLER({ trackElement: els.section, useFixed: false }); }, }; const swiperEvents = { init: function () { let notification = this.el.querySelector('.swiper-notification'); if (!!notification) this.el.removeChild(notification); els.bullets = this.pagination.bullets; els.videoWrap = els.section.querySelectorAll('.common-video'); els.videos = els.section.querySelectorAll('.common-video__video'); els.videoController = els.section.querySelectorAll('.common-video__control'); for (let i = 0; i < els.videoWrap.length; i++) { els.videoWrap[i].classList.add('is-loaded'); els.videoController[i].video = els.videos[i]; els.videoController[i].addEventListener('click', eventList.clickVideoCta); } objList.setVideo(); accessibility.slide(); accessibility.pagination.tagging(); accessibility.pagination.label(); els.nextArrow.removeAttribute('aria-label'); els.prevArrow.removeAttribute('aria-label'); for (let i = 0; i < els.bullets.length; i++) { els.bullets[i].removeAttribute('role'); els.bullets[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); objs.swiper.slideTo(i); }); } }, slideChange: function () { accessibility.slide(); accessibility.pagination.label(); }, transitionEnd: function () { let playStatus = null; if ((objs.videos.length > 0)) { let isVideoSlide = (objs.swiper.activeIndex == 0) || (objs.swiper.activeIndex == 5) || (objs.swiper.activeIndex == 10); let isPaused = objs.videos[0].video.paused || objs.videos[1].video.paused || objs.videos[2].video.paused; clearTimeout(playStatus); if (isVideoSlide) { if (isPaused) { playStatus = setTimeout(() => { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].video.currentTime = 0; objs.videos[i].video.play(); } }, 600); } } else { if (!objs.videos[0].video.paused && !objs.videos[1].video.paused && !objs.videos[2].video.paused) { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].video.pause(); if (resize.checkResolution().indexOf('desktop') > -1) objs.videos[i].video.currentTime = 0; } } } } } }; const eventList = { scrollHandler: function () { objs.scene.trackAnimation(function () { let isVideoSlide = (objs.swiper.activeIndex == 0) || (objs.swiper.activeIndex == 5) || (objs.swiper.activeIndex == 10); if (!isVideoSlide) return; objs.videos[0].scrollActive(this.progress); objs.videos[1].scrollActive(this.progress); objs.videos[2].scrollActive(this.progress); }); }, clickVideoCta: function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } } }; const accessibility = { slide: function () { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } }, pagination: { tagging: function () { const tagging = { 'data-omni-type': 'microsite_gallery', 'data-omni': 'galaxy-s24:highlights:galaxy-ai^aod-lockscreen:index:', 'ga-ca': 'gallery', 'ga-ac': 'feature gallery', 'ga-la': 'galaxy-s24:highlights:galaxy-ai^aod-lockscreen:index:', }; for (let i = 0; i < els.bullets.length; i++) { Object.keys(tagging).forEach(key => { if (key == 'data-omni' || key == 'ga-la') { els.bullets[i].setAttribute(key, tagging[key] + (i + 1)); } else { els.bullets[i].setAttribute(key, tagging[key]); } }); } }, label: function () { for (let i = 0; i < els.bullets.length; i++) { let slideName = objs.swiper.slides[i].getAttribute('data-slide-name'); if (i === objs.swiper.realIndex) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { els.bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName} ${LOCAL_VARI.selected.toLowerCase()}`); } else { els.bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName} selected`); } } else { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { els.bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName}`); } else { els.bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName}`); } } } }, } }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.cameraAi = (function () { let els = {}; let objs = {}; const init = function () { els.section = document.querySelector('.highlights-camera-ai'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.bgBlue = els.section.querySelector('.highlights-camera-ai__gradient--blue'); els.bgGreen = els.section.querySelector('.highlights-camera-ai__gradient--green'); }; const bindEvents = function () { setScene(); window.addEventListener('scroll', scrollHandler); scrollHandler(); }; const setScene = function () { objs.scene = SCROLLER({ trackElement: els.section, useFixed: false, }); }; const scrollHandler = function () { objs.scene.trackAnimation(function () { if (this.progress > 30 && this.progress < 70) { els.bgBlue.classList.add('is-active'); els.bgGreen.classList.add('is-active'); } else if (this.progress == 0) { els.bgBlue.classList.remove('is-active'); els.bgGreen.classList.remove('is-active'); } // TweenMax.to(els.bgBlue, 0, {opacity: BlueValue, ease: 'linear'}); // TweenMax.to(els.bgGreen, 0, {opacity: greenValue, ease: 'linear'}); }); } return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.chatAssistTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-chat-assist-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { if (this.paused) this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 200); }, click: function () { let self = this; for (let i = 0; i < els.tooltipCta.length; i++) { els.tooltipCta[i].addEventListener('click', function () { self.nextVideoPlay(i); }); } }, endCallback: function () { if (stepInfo[this.video.playIndex].tooltip == 'true') { this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); let nextPlayindex = this.video.playIndex + 1; if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]); } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.circleToSearchTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-circle-to-search-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); status.isKeydownTime = null; }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { if (this.paused) this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 400); }, click: function () { els.tooltipCta[0].addEventListener('mousedown', eventList.pressButton); els.tooltipCta[0].addEventListener('mouseup', function () { clearTimeout(status.mousedown); }); els.tooltipCta[0].addEventListener('touchstart', eventList.pressButton); els.tooltipCta[0].addEventListener('touchend', function () { clearTimeout(status.mousedown); }); els.tooltipCta[0].addEventListener('keydown', eventList.keydownButton); els.tooltipCta[1].addEventListener('click', function () { eventList.nextVideoPlay(2); }); }, pressButton: function (e) { e.preventDefault(); if (els.videos[2].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[2]]); } clearTimeout(status.mousedown); status.mousedown = setTimeout(() => { eventList.nextVideoPlay(1); }, 1000); }, keydownButton: function (e) { if (e.type == 'keydown' && e.keyCode != 13) return; if (status.isKeydownTime == null) { status.isKeydownTime = Date.now(); } else { let keyDownDuration = Date.now() - status.isKeydownTime; if (keyDownDuration >= 1000) { if (els.videos[2].readyState < 4) { videoLoader.setResponsiveMedia([els.videos[2]]); } eventList.nextVideoPlay(1); status.isKeydownTime = null; } } }, endCallback: function () { let autoplay = this.video.playIndex == 0 || this.video.playIndex == 3; if (stepInfo[this.video.playIndex].tooltip == 'true') { this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (autoplay) { eventList.nextVideoPlay(this.video.playIndex); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); if (this.video.duration > 3) { this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); } switch (this.video.playIndex) { case 2: videoLoader.setResponsiveMedia([els.videos[3], els.videos[4]]); break; default: break; } }, pauseCallback: function () { if (this.video.duration > 3) { setTagging.play(this.controller); } }, endCallback: function () { if (!!this.wrap.tooltip) { utils.offAccessibility(this.wrap.tooltip); } if (this.video.duration > 3) { this.controller.style.display = 'none !important'; } eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.color = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}, status = {}, objs = {}; let activeClass = 'is-active'; let oldIndex = null; let currDevice = resize.checkResolution(); let prevDevice = null; const init = function () { els.section = document.querySelector('.highlights-color'); if (!!els.section) { setElements(); setStatus(); bindEvents(); } }; const setElements = function () { // topSwiper els.topSwiperWrap = els.section.querySelector('.highlights-color__carousel'); if (!!els.topSwiperWrap) { els.topSwiperSlides = els.topSwiperWrap.querySelectorAll('.highlights-color__carousel-slide'); if (els.topSwiperSlides.length > 1) { els.topSwiperContainer = els.section.querySelector('.highlights-color__carousel-container'); els.topSwiperNextArrow = els.topSwiperContainer.querySelector('.highlights-color__arrow--next'); els.topSwiperPrevArrow = els.topSwiperContainer.querySelector('.highlights-color__arrow--prev'); els.topSwiperPagination = els.section.querySelector('.highlights-color__pagination'); } } // colorchipSwiper els.colorchipWrap = els.section.querySelector('.highlights-color__tab-colors'); els.colorchipSwiperContainer = els.colorchipWrap.querySelector('.swiper-container'); els.colorchipSwiperArrowWrap = els.colorchipWrap.querySelector('.highlights-color__tab-navigation'); els.colorchipSwiperNextArrow = els.colorchipWrap.querySelector('.highlights-color__navigation-arrow--next'); els.colorchipSwiperPrevArrow = els.colorchipWrap.querySelector('.highlights-color__navigation-arrow--prev'); // colorchipItem els.colorchipItemWrap = els.section.querySelector('.highlights-color__tab'); els.colorchipItems = els.colorchipItemWrap.querySelectorAll('.highlights-color__tab-item'); els.colorchipBtns = els.colorchipItemWrap.querySelectorAll('.highlights-color__tab-button'); for (let i = 0; i < els.colorchipBtns.length; i++) { els.colorchipBtns[i].setAttribute('data-js-index', i); } // colorName els.colorNameWrap = els.section.querySelector('.highlights-color__tab-names'); els.colorNames = els.colorNameWrap.querySelectorAll('.highlights-color__tab-name'); // colorPanel els.panelWrap = els.section.querySelector('.highlights-color__tab-panel-group'); els.panels = els.panelWrap.querySelectorAll('.highlights-color__tab-panel'); // 360 Popup Btn els.popupBtn = els.section.querySelector('.common-cta-area button'); }; const setStatus = function () { status.isClick = false; // index status.targetIndex = null; status.oldColorIndex = null; }; const bindEvents = function () { resize.add(handlerList.onResize); setColorchipEvent(); if (!els.topSwiperWrap || (!!els.topSwiperWrap && (!!els.topSwiperSlides && els.topSwiperSlides.length < 2))) return; setTimeout(function () { window.addEventListener('scroll', handlerList.scroll); }, 1000); objList.setScene(); setSwiper.top(); els.topSwiperNextArrow.addEventListener('click', handlerList.onClickArrow); els.topSwiperNextArrow.addEventListener('keydown', handlerList.onClickArrow); els.topSwiperPrevArrow.addEventListener('click', handlerList.onClickArrow); els.topSwiperPrevArrow.addEventListener('keydown', handlerList.onClickArrow); }; const setColorchipEvent = function () { let colorchipSwiperLength = currDevice.indexOf('mobile') > -1 ? 5 : 7; if (els.colorchipBtns.length >= colorchipSwiperLength) { status.isLoop = true; oldIndex = els.colorchipBtns.length; if (els.colorchipSwiperArrowWrap.style.display == 'none') { els.colorchipSwiperArrowWrap.style.display = ''; } if (els.colorchipWrap.classList.contains('js-colorchip-static')) { els.colorchipWrap.classList.remove('js-colorchip-static'); } setSwiper.colorchip(); } else { status.isLoop = false; if (els.colorchipSwiperArrowWrap.style.display != 'none') { els.colorchipSwiperArrowWrap.style.display = 'none'; } if (!els.colorchipWrap.classList.contains('js-colorchip-static')) { els.colorchipWrap.classList.add('js-colorchip-static'); } if (objs.colorchipSwiper != null) { let realIndex = objs.colorchipSwiper.realIndex; if (!els.colorchipBtns[realIndex].classList.contains(activeClass)) { els.colorchipBtns[realIndex].classList.add(activeClass); els.colorchipBtns[realIndex].setAttribute('aria-selected', true); } swiperEvents.colorchip.destroy(); } let currentColorchip = els.colorchipItemWrap.querySelector(`.${activeClass}`); status.oldColorIndex = currentColorchip.getAttribute('data-js-index'); for (let i = 0; i < els.colorchipBtns.length; i++) { els.colorchipBtns[i].addEventListener('click', handlerList.onClickColorchip); els.colorchipItems[i].removeAttribute('tabindex'); els.colorchipItems[i].removeAttribute('aria-hidden'); } } }; const objList = { topSwiper: function () { if (objs.topSwiper == null) { objs.topSwiper = new Swiper(els.topSwiperContainer, { init: false, speed: 800, navigation: { nextEl: els.topSwiperNextArrow, prevEl: els.topSwiperPrevArrow, }, pagination: { el: els.topSwiperPagination, type: 'bullets', clickable: true, renderBullet: function () { return '

      • '; } }, slidesPerView: 'auto', centeredSlides: true, }); } }, colorchipSwiper: function () { if (objs.colorchipSwiper == null) { objs.colorchipSwiper = new Swiper(els.colorchipSwiperContainer, { init: false, navigation: { nextEl: els.colorchipSwiperNextArrow, prevEl: els.colorchipSwiperPrevArrow, }, slidesPerView: 'auto', centeredSlides: true, loop: true, speed: 300, touchRatio: 0, }); } }, setScene: function () { objs.topScene = SCROLLER({ trackElement: els.topSwiperContainer, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); } }; const setSwiper = { top: function () { objList.topSwiper(); objs.topSwiper.on('init', swiperEvents.top.init); objs.topSwiper.on('slideChange', swiperEvents.top.slideChange); objs.topSwiper.init(); }, colorchip: function () { objList.colorchipSwiper(); objs.colorchipSwiper.on('init', swiperEvents.colorchip.init); objs.colorchipSwiper.on('slideChange', swiperEvents.colorchip.slideChange); objs.colorchipSwiper.on('transitionEnd', swiperEvents.colorchip.transitionEnd); objs.colorchipSwiper.init(); els.loopColorchipBtns = els.section.querySelectorAll('.highlights-color__tab-button'); for (let i = 0; i < els.loopColorchipBtns.length; i++) { els.loopColorchipBtns[i].index = i; els.loopColorchipBtns[i].addEventListener('click', handlerList.onClickColorchip); } if (status.targetIndex != 0) status.targetIndex = 0; eventList.colorchip(); eventList.colorName(); eventList.panel(); } }; const swiperEvents = { top: { init: function () { let notification = this.el.querySelector('.swiper-notification'); let bullets = this.pagination.bullets; this.slides[this.activeIndex].style.transitionDuration = '0s'; setTimeout(() => { this.slides[this.activeIndex].style.transitionDuration = ''; }, 100); if (!!notification) this.el.removeChild(notification); accessibility.slide.top(objs.topSwiper); accessibility.pagination.tagging(bullets); accessibility.pagination.label(bullets); els.topSwiperPrevArrow.removeAttribute('aria-label'); els.topSwiperNextArrow.removeAttribute('aria-label'); setTimeout(function () { handlerList.scroll(); }, 900); status.isTest = false; for (let i = 0; i < bullets.length; i++) { bullets[i].removeAttribute('role'); bullets[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); objs.topSwiper.slideTo(i); }); } }, slideChange: function () { accessibility.slide.top(objs.topSwiper); accessibility.pagination.label(objs.topSwiper.pagination.bullets); } }, colorchip: { init: function () { let notification = this.el.querySelector('.swiper-notification'); if (!!notification) this.el.removeChild(notification); accessibility.slide.colorchip(objs.colorchipSwiper); els.colorchipSwiperPrevArrow.removeAttribute('aria-label'); els.colorchipSwiperNextArrow.removeAttribute('aria-label'); let cloneSlide = this.el.querySelectorAll('.swiper-slide-duplicate'); for (let i = 0; i < cloneSlide.length; i++) { let activeClone = cloneSlide[i].querySelector('.highlights-color__tab-button.is-active'); if (!!activeClone) activeClone.classList.remove('is-active'); } }, slideChange: function () { let activeIndex = this.activeIndex; let oldColor = els.loopColorchipBtns[oldIndex]; status.oldColorIndex = oldColor.getAttribute('data-js-index'); status.targetIndex = els.loopColorchipBtns[activeIndex].getAttribute('data-js-index'); eventList.colorchip(); eventList.colorName(); eventList.panel(); accessibility.slide.colorchip(objs.colorchipSwiper); eventList.setPopupBtnColor(els.panels[status.targetIndex]); oldIndex = activeIndex; }, transitionEnd: function () { if (status.isClick) status.isClick = false; }, destroy: function () { objs.colorchipSwiper.destroy(true); objs.colorchipSwiper = null; }, }, }; const handlerList = { scroll: function () { objs.topScene.trackAnimation(function () { if (this.wheelDirection == 'down' && this.progress > 45 && this.progress < 70) { if (objs.topSwiper != null) { objs.topSwiper.slideNext(); objs.topScene.destroy(); window.removeEventListener('scroll', handlerList.scroll); } } else if (this.wheelDirection == 'up' && this.progress < 50) { if (objs.topSwiper != null) { objs.topSwiper.slideNext(); objs.topScene.destroy(); window.removeEventListener('scroll', handlerList.scroll); } } }); }, onResize: function (currRes) { currDevice = currRes; if (currDevice !== prevDevice) { setColorchipEvent(); if (objs.colorchipSwiper != null) { accessibility.slide.colorchip(objs.colorchipSwiper); } prevDevice = currDevice; } }, onClickArrow: function (e) { status.isArrowClick = true; status.arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (objs.topSwiper.isBeginning && !objs.topSwiper.isEnd) { els.topSwiperPrevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.topSwiperNextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.topSwiperPrevArrow.style.display = ''; }, 400); } else if (!objs.topSwiper.isBeginning && objs.topSwiper.isEnd) { els.topSwiperNextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.topSwiperPrevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.topSwiperNextArrow.style.display = ''; }, 400); } } }, onClickColorchip: function () { status.isClick = true; let targetColor = this; if (status.isLoop) { if (targetColor.classList.contains('is-active')) return; eventList.slideTo(targetColor); } else { status.targetIndex = targetColor.getAttribute('data-js-index'); eventList.colorchip(); eventList.colorName(); eventList.panel(); status.oldColorIndex = status.targetIndex; } } }; const eventList = { colorchip: function () { let oldColor = els.colorchipItemWrap.querySelectorAll(`.${activeClass}`); let activeIndex = status.isLoop ? objs.colorchipSwiper.activeIndex : status.targetIndex; let targetColorchipBtns = status.isLoop ? els.loopColorchipBtns[activeIndex] : els.colorchipBtns[activeIndex]; if (!targetColorchipBtns.classList.contains(activeClass)) { for (let i = 0; i < oldColor.length; i++) { oldColor[i].classList.remove(activeClass); oldColor[i].setAttribute('aria-selected', false); } targetColorchipBtns.classList.add(activeClass); targetColorchipBtns.setAttribute('aria-selected', true); } }, colorName: function () { for (let i = 0; i < els.colorNames.length; i++) { if (els.colorNames[i].classList.contains(activeClass)) { els.colorNames[i].classList.remove(activeClass); } } if (!els.colorNames[status.targetIndex].classList.contains(activeClass)) { els.colorNames[status.targetIndex].classList.add(activeClass); } }, panel: function () { for (let i = 0; i < els.panels.length; i++) { if (els.panels[i].classList.contains(activeClass)) { els.panels[i].classList.remove(activeClass); els.panels[i].setAttribute('aria-hidden', true); } } if (!els.panels[status.targetIndex].classList.contains(activeClass)) { els.panels[status.targetIndex].classList.add(activeClass); els.panels[status.targetIndex].setAttribute('aria-hidden', false); els.popupBtn.setAttribute('data-model-color', els.panels[status.targetIndex].getAttribute('id')); } if (status.targetIndex != 0) { let targetPanelImgs = els.panels[status.targetIndex].querySelectorAll('img'); if (!targetPanelImgs[0].classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([targetPanelImgs[0]]); } if (!targetPanelImgs[1].classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([targetPanelImgs[1]]); } } }, slideTo: function (targetColor) { let self = objs.colorchipSwiper; let activeIndex = targetColor.index; objs.slideChangeTime = null; if (status.isClick) { let moveSize = oldIndex - activeIndex; if (moveSize > 0) { if (moveSize == 1) { objs.colorchipSwiper.slidePrev(); } else if (moveSize == 3) { objs.colorchipSwiper.slidePrev(0); objs.colorchipSwiper.slidePrev(0); self.slidePrev(); } else { objs.colorchipSwiper.slidePrev(0); self.slidePrev(); } } else { if (moveSize == -1) { objs.colorchipSwiper.slideNext(); } else if (moveSize == -3) { objs.colorchipSwiper.slideNext(0); objs.colorchipSwiper.slideNext(0); self.slideNext(); } else { objs.colorchipSwiper.slideNext(0); self.slideNext(); } } self.slides[self.activeIndex].querySelector('button').focus(); clearTimeout(objs.slideChangeTime); objs.slideChangeTime = setTimeout(function () { self.slides[self.activeIndex].querySelector('button').focus(); }, 200); status.isClick = false; } }, setPopupBtnColor: function (target) { els.popupBtn.setAttribute('data-model-color', target.getAttribute('id')); } }; const accessibility = { slide: { top: function (swiperObjs) { for (let i = 0; i < swiperObjs.slides.length; i++) { if (i != swiperObjs.activeIndex) { utils.onAccessibility(swiperObjs.slides[i]); } else { utils.offAccessibility(swiperObjs.slides[i]); } } }, colorchip: function (swiperObjs) { let isNotActivedColorchips = null; for (let i = 0; i < swiperObjs.slides.length; i++) { if (currDevice.indexOf('mobile') > -1) { isNotActivedColorchips = (i != swiperObjs.activeIndex) && (i > swiperObjs.activeIndex + 2) || (i < swiperObjs.activeIndex - 2) } else { isNotActivedColorchips = (i != swiperObjs.activeIndex) && (i > swiperObjs.activeIndex + 3) || (i < swiperObjs.activeIndex - 3) } if (isNotActivedColorchips) { utils.onAccessibility(swiperObjs.slides[i]); } else { utils.offAccessibility(swiperObjs.slides[i]); } } } }, pagination: { tagging: function (pagination) { const tagging = { 'data-omni-type': 'microsite_gallery', 'data-omni': 'galaxy-s24:highlights:design^colors:index:', 'ga-ca': 'gallery', 'ga-ac': 'feature gallery', 'ga-la': 'galaxy-s24:highlights:design^colors:index:' }; if (!!pagination) { for (let i = 0; i < pagination.length; i++) { Object.keys(tagging).forEach(key => { if (key == 'data-omni' || key == 'ga-la') { pagination[i].setAttribute(key, tagging[key] + (i + 1)); } else { pagination[i].setAttribute(key, tagging[key]); } }); } } }, label: function (bullets) { for (let i = 0; i < bullets.length; i++) { let isExclusive = objs.topSwiper.slides[i].getAttribute('data-colortype') == 'true' ? true : false; let slideName; if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { slideName = !!isExclusive ? LOCAL_VARI.exclusive : LOCAL_VARI.default; if (i === objs.topSwiper.realIndex) { bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName} ${LOCAL_VARI.selected.toLowerCase()}`); } else { bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName}`); } } else { slideName = !!isExclusive ? 'online exclusive color' : 'default color'; if (i === objs.topSwiper.realIndex) { bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName} selected`); } else { bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName}`); } } } }, } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.dayPopup = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let status = {}; const init = function () { els.section = document.querySelector('.highlights-super-hdr'); els.layerPopup = document.querySelector('.highlights-day-popup'); if (!!els.layerPopup && !!els.section) { setElements(); setStatus(); objList.setPopup(); bindEvents(); } }; const setElements = function () { status.isGlobal = document.documentElement.classList.contains('global'); els.contents = document.querySelector('#contents'); els.openCta = els.section.querySelector('.highlights-super-hdr__cta button'); els.innerWrap = els.layerPopup.querySelector('.common-popup__inner-wrapper'); els.closeCtas = els.layerPopup.querySelectorAll('.common-popup__close-cta'); els.dimmed = els.layerPopup.querySelector('.common-popup__dimmed'); els.supClicker = els.layerPopup.querySelectorAll('a.click_sup'); els.videoWrap = els.layerPopup.querySelector('.common-video.js-scroll-video'); els.videoWrap.video = els.videoWrap.querySelector('.common-video__video'); els.videoWrap.controller = els.videoWrap.querySelector('.common-video__control'); els.videoWrap.controller.video = els.videoWrap.video; els.hashPopupOpener = null; }; const setStatus = function () { status.isHash = false; }; const bindEvents = function () { els.videoWrap.controller.addEventListener('click', handlerList.videoCta); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', handlerList.onClickSup); } }; const objList = { setPopup: function () { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.highlights-day-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCtas[0], els.closeCtas[1]], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.innerWrap.scrollTop = 0; els.layerPopup.classList.add('is-init'); target.openerCta.blur(); setPopupLazyLoader.image(); setPopupLazyLoader.video(); objList.setVideo(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { status.isHash = true; els.hashPopupOpener = els.openCta; } }, end: function () { if (utils.detector.isIosDevice) els.layerPopup.style.display = 'block'; els.layerPopup.classList.add('is-open'); } }, hide: { start: function (target) { target.openerCta.focus(); els.layerPopup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); els.videoWrap.video.pause(); els.videoWrap.video.currentTime = 0; if (status.isHash && els.hashPopupOpener) { els.hashPopupOpener.focus(); setTimeout(function () { els.hashPopupOpener.focus(); status.isHash = false; els.hashPopupOpener = null; }, 300); } } } }); }, setVideo: function () { objs.scrollVideo = ANIUTIL.videoHandler({ wrap: els.videoWrap, video: els.videoWrap.video, controller: els.videoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }; const handlerList = { videoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }, onClickSup: function (e) { e.preventDefault(); e.stopPropagation(); els.layerPopup.hide(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); } }; const setPopupLazyLoader = { image: function () { objs.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-day-popup-img-src', responsiveClass: '.js-day-popup-res-img', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.popupBgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-day-popup-bg-img', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }, video: function () { objs.videoLoader = ANIUTIL.mediaLoader({ type: 'video', lazyClass: '.js-day-popup-video-src', responsiveClass: '.js-day-popup-res-video', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (video.videoWrap && !video.videoWrap.classList.contains('is-loaded')) { video.videoWrap.classList.add('is-loaded'); } } }); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.designSpecPopup = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let status = {}; const init = function () { els.section = document.querySelector('.highlights-design-display'); els.layerPopup = document.querySelector('.highlights-design-spec-popup'); if (!!els.layerPopup) { setElements(); setStatus(); bindEvents(); setPopup(); } }; const setElements = function () { status.isGlobal = document.documentElement.classList.contains('global'); els.contents = document.querySelector('#contents'); els.innerWrap = els.layerPopup.querySelector('.common-popup__inner-wrapper'); els.openCta = els.section.querySelector('.highlights-design-display__cta button'); els.closeCtas = els.layerPopup.querySelectorAll('.common-popup__close-cta'); els.dimmed = els.layerPopup.querySelector('.common-popup__dimmed'); els.supClicker = els.layerPopup.querySelectorAll('a.click_sup'); els.hashPopupOpener = null; }; const setStatus = function () { status.isHash = false; }; const bindEvents = function () { for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', onClickSup); } }; const setPopup = function () { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.highlights-design-spec-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCtas[0], els.closeCtas[1]], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.innerWrap.scrollTop = 0; els.layerPopup.classList.add('is-init'); target.openerCta.blur(); setPopupLazyLoader.image(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { status.isHash = true; els.hashPopupOpener = els.openCta; } }, end: function () { if (utils.detector.isIosDevice) els.layerPopup.style.display = 'block'; els.layerPopup.classList.add('is-open'); } }, hide: { start: function (target) { target.openerCta.focus(); els.layerPopup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); if (status.isHash && els.hashPopupOpener) { els.hashPopupOpener.focus(); setTimeout(function () { els.hashPopupOpener.focus(); status.isHash = false; els.hashPopupOpener = null; }, 300); } } } }); }; const onClickSup = function (e) { e.preventDefault(); e.stopPropagation(); els.layerPopup.hide(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); }; const setPopupLazyLoader = { image: function () { objs.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-design-spec-popup-img-src', responsiveClass: '.js-design-spec-popup-res-img', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.popupBgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-design-spec-popup-bg-img', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.experiences = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}, objs = {}, status = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.highlights-galaxy-offers'); if (!!els.section) { els.offersItems = els.section.querySelectorAll('.highlights-galaxy-offers__card-item'); if (!!els.offersItems && (els.offersItems.length > 1)) { setElements(); bindEvents(); } } }; const setElements = function () { els.swiperContainer = els.section.querySelector('.highlights-galaxy-offers__card-container'); els.nextArrow = els.section.querySelector('.highlights-galaxy-offers__arrow--next'); els.prevArrow = els.section.querySelector('.highlights-galaxy-offers__arrow--prev'); }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', handlerList.onLoad, { once: true }); resize.add(handlerList.onResize); els.nextArrow.addEventListener('click', handlerList.onClickArrow); els.nextArrow.addEventListener('keydown', handlerList.onClickArrow); els.prevArrow.addEventListener('click', handlerList.onClickArrow); els.prevArrow.addEventListener('keydown', handlerList.onClickArrow); }; const objList = { swiper: function () { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { init: false, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, loop: false, slidesPerView: 'auto', centeredSlides: false }); } } }; const handlerList = { onLoad: function () { if (currDevice.indexOf('mobile') > -1) { setSwiper(); } }, onResize: function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { handlerList.onResponsive(); prevDevice = currDevice; } }, onResponsive: function () { if (currDevice.indexOf('mobile') > -1) { setSwiper(); } else { swiperEvents.destroy(); } }, onClickArrow: function (e) { status.arrowTimeout = null; status.arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (objs.swiper.isBeginning && !objs.swiper.isEnd) { els.nextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.prevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.nextArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && objs.swiper.isEnd) { els.prevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.nextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.prevArrow.style.display = ''; }, 400); } } } }; const setSwiper = function () { objList.swiper(); objs.swiper.on('init', swiperEvents.init); objs.swiper.on('slideChange', swiperEvents.slideChange); objs.swiper.init(); }; const swiperEvents = { init: function () { let notification = this.el.querySelector('.swiper-notification'); if (!!notification) this.el.removeChild(notification); accessibility.slide(); }, slideChange: function () { accessibility.slide(); }, destroy: function () { if (objs.swiper != null) { objs.swiper.navigation.destroy(true); objs.swiper.destroy(true); objs.swiper = null; } }, }; const accessibility = { slide: function () { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } } }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.faq = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let objs = {}; let prevDevice = null; let currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.highlights-faq'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.faqList = els.section.querySelector('.highlights-faq__list'); }; const bindEvents = function () { resize.add(onResizeHandler); setAccordion(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { onResponsiveHandler(); prevDevice = currDevice; } }; const onResponsiveHandler = function () { let isOpenedItems = els.faqList.querySelectorAll('.highlights-faq__item.is-open'); if (isOpenedItems.length > 0) { for (let i = 0; i < isOpenedItems.length; i++) { let isOpenedItemContent = isOpenedItems[i].querySelector('.highlights-faq__answer'); let clientHeight = isOpenedItemContent.children[0].clientHeight; isOpenedItemContent.style.height = `${clientHeight}px`; } } }; const setAccordion = function () { objs.accordion = new window.flagship.common.accordion({ wrap: els.faqList, classList: { item: 'highlights-faq__item', button: 'highlights-faq__question-arrow', contents: 'highlights-faq__answer', activeClass: 'is-open' }, open: { start: function (target) { let targetInnerCta = target.querySelector('.highlights-faq__cta'); if (targetInnerCta) targetInnerCta.addEventListener('click', onClickFaqCta); } } }); objs.accordion.init(); }; const onClickFaqCta = function (e) { if (this.getAttribute('href').indexOf('#') == 0) { e.preventDefault(); let sectionId = this.getAttribute('href'); let section = document.querySelector(sectionId); let sectionTop = section.getBoundingClientRect().top; let movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(); let clickable = section.querySelectorAll('a, button'); let title = (sectionId == '#galaxy-ai') ? section.querySelector('.common-headline') : section.querySelector('h2'); if (title.classList.contains('common-display-mo')) { if (resize.checkResolution().indexOf('mobile') > -1) { title = section.querySelector('h2.common-display-mo'); } else { title = section.querySelector('h2.common-display-pc'); } } if (!!title) { let _focusOut = function () { title.removeAttribute('tabindex'); title.removeEventListener('focusout', _focusOut); }; title.addEventListener('focusout', _focusOut); title.setAttribute('tabindex', 0); title.focus(); } else { clickable[0].focus(); } window.scrollTo(0, movePosition); } }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.generativeEditTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-generative-edit-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.coverImages = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__cover-image'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.generativeCta = els.tutorialVideoContainer.querySelector('.js-tutorial-generative-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-video__control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { if (this.paused) this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.controller.focus(); }, 200); }, click: function () { let self = this; els.tooltipCta[0].addEventListener('click', function () { if (els.videos[2].readyState < 4) { imageLoader.setResponsiveMedia([els.coverImages[2], els.coverImages[3], els.coverImages[4]]); videoLoader.setResponsiveMedia([els.videos[2], els.videos[3], els.videos[4]]); } self.nextVideoPlay(0); }) els.tooltipCta[1].addEventListener('click', function () { self.nextVideoPlay(1); }), els.generativeCta.addEventListener('click', function () { this.setAttribute('disabled', ''); utils.onAccessibility(els.generativeCta); this.parentElement.classList.remove('is-visible'); self.nextVideoPlay(5); }) }, endCallback: function () { let autoplay = this.video.playIndex == 2 || this.video.playIndex == 6; if (stepInfo[this.video.playIndex].tooltip == 'true') { if (this.video.playIndex != 5) this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (autoplay) { eventList.nextVideoPlay(this.video.playIndex); } let self = this; switch (this.video.playIndex) { case 2: if (!els.generativeCta.classList.contains('is-bg-load-complete')) { els.generativeCta.classList.add('is-bg-load-complete'); } els.generativeCta.parentElement.classList.add('is-visible'); break; case 3: if (els.videos[5].readyState < 4) { imageLoader.setResponsiveMedia([els.coverImages[5]]); videoLoader.setResponsiveMedia([els.videos[5]]); } (function (wrap, video) { setTimeout(() => { self.wrap.alert.classList.remove('is-visible'); eventList.nextVideoPlay(video.playIndex); }, 3000) })(this.wrap, this.video); break; case 4: if (els.videos[6].readyState < 4) { imageLoader.setResponsiveMedia([els.coverImages[6], els.coverImages[7]]); videoLoader.setResponsiveMedia([els.videos[6], els.videos[7]]); } (function (wrap, video) { setTimeout(() => { self.wrap.alert.classList.remove('is-visible'); eventList.nextVideoPlay(video.playIndex); }, 3000) })(this.wrap, this.video); break; case 5: els.generativeCta.removeAttribute('disabled'); utils.offAccessibility(els.generativeCta); break; case 7: els.generativeCta.parentElement.classList.add('is-visible'); els.generativeCta.classList.add('is-tutorial-end'); break; default: break; } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); switch (this.video.playIndex) { case 2: videoLoader.setResponsiveMedia([els.videos[3], els.videos[4]]); break; default: break; } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.innerPopup = (function () { let els = {}; const utils = window.flagship.common.utils; const innerPopup = function (opts) { let els = {}; let show = {}, hide = {}; const init = function () { setElements(); setOpts(); bindEvent(); }; const setElements = function () { els.outPopup = opts.openerEvent.element.closest('.common-popup'); els.innerPopup = opts.layerPopup; els.closeCtas = opts.closeCtas; els.moveTarget = opts.moveTarget; els.dimmed = !!!opts.dimmed ? '' : opts.dimmed; els.contents = opts.contents; els.innerPopupClass = opts.layerPopupClass; }; const setOpts = function () { show.start = (!!!opts.show) ? undefined : opts.show.start; show.end = (!!!opts.show) ? undefined : opts.show.end; hide.start = (!!!opts.hide) ? undefined : opts.hide.start; hide.end = (!!!opts.hide) ? undefined : opts.hide.end; } const bindEvent = function () { opts.openerEvent.element.addEventListener('click', showLayer); els.innerPopup.show = showLayer; els.innerPopup.hide = hideLayer; }; const showLayer = function (e) { if (opts.openerEvent.proxy) { if (opts.openerEvent.parent) { if (e.target.parentElement.classList.contains(opts.openerEvent.class)) { els.openerCta = e.target.parentElement; } } else { if (e.target.classList.contains(opts.openerEvent.class)) { els.openerCta = e.target; } } } else { els.openerCta = this; } els.innerPopup.opener = els.openerCta; if (show.start) show.start(els); els.outPopup.classList.add('is-layer-open'); if (utils.detector.isIosDevice) { els.innerPopup.opener.blur(); els.openerCta.style.display = 'none'; } els.closeCtas[0].focus(); setTimeout(function () { els.closeCtas[0].focus(); accessibility.on(); }, 300); for (let i = 0; i < els.closeCtas.length; i++) { els.closeCtas[i].addEventListener('click', hideLayer); } if (els.dimmed) els.dimmed.addEventListener('click', onClickDimmed); if (show.end) show.end(els); }; const hideLayer = function () { if (utils.detector.isIosDevice) els.openerCta.style.display = ''; if (hide.start) hide.start(els); for (let i = 0; i < els.closeCtas.length; i++) { els.closeCtas[i].removeEventListener('click', hideLayer); } if (els.dimmed) els.dimmed.removeEventListener('click', onClickDimmed); accessibility.off(); els.outPopup.classList.remove('is-layer-open'); if (!!!els.openerCta) { els.innerPopup.opener.focus(); } else { els.openerCta.focus(); } setTimeout(function () { if (!!!els.openerCta) { els.innerPopup.opener.focus(); } else { els.openerCta.focus(); } }, 300); if (hide.end) hide.end(els); }; const onClickDimmed = function (e) { if (e.currentTarget == e.target) { hideLayer(); } }; const accessibility = { on: function () { utils.onPopupAccessibility(els.outPopup); utils.offAccessibility(els.innerPopup); }, off: function () { utils.offPopupAccessibility(els.outPopup); utils.onAccessibility(els.innerPopup); } }; return init(); }; const init = function () { els.layerPopup = document.querySelector('.common-youtube-popup'); if (!!els.layerPopup) { setElements(); setPopup(); } }; const setElements = function () { els.contents = document.querySelector('#contents'); els.openCta = document.querySelector('.js-inner-popup'); els.closeCta = document.querySelector('.common-youtube-popup__close-cta'); els.ytIframe = els.layerPopup.querySelector('.common-youtube-popup__iframe > iframe'); els.ytDesc = els.layerPopup.querySelector('.youtube-player__desc'); els.dimmed = els.layerPopup.querySelector('.common-youtube-popup__close-area'); }; const setPopup = function () { innerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.common-yotube-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCta], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function () { els.layerPopup.classList.add('is-yt-open'); }, end: function (target) { eventList.setYoutube(target); } }, hide: { start: function () { els.layerPopup.classList.remove('is-yt-open'); }, end: function (target) { eventList.clearYoutube(); } } }); }; const eventList = { setYoutube: function (target) { let opener = target.openerCta, ytSrc = 'htt' + 'ps://www.youtube.com/embed/' + opener.getAttribute('data-youtube-id') + '?wmode=opaque&rel=0&enablejsapi=1&version=3&autoplay=1', ytTitle = opener.getAttribute('data-youtube-title'), ytBlind = opener.querySelector('.blind').innerHTML; els.ytIframe.setAttribute('src', ytSrc); els.ytIframe.setAttribute('title', ytTitle); els.ytDesc.innerHTML = ytBlind; els.OpenerTarget = opener; }, clearYoutube: function () { els.ytIframe.removeAttribute('src'); els.ytDesc.innerHTML = ''; } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.liveTranslateTutorial = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let stepInfo = []; let status = {}; const init = function () { els.section = document.querySelector('.highlights-live-translate-tutorial'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.tutorialVideoContainer = els.section.querySelector('.common-tutorial__main-video'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-tutorial__video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.common-tutorial__replay-cta'); els.muteCtas = els.section.querySelectorAll('.common-mute-button'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.controller = el.querySelector('.common-play-button'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.videoMuteCta = el.querySelector('.common-mute-button'); el.video.playIndex = index; } const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); } const eventList = { videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('canplay', function () { if (this.paused) this.play(); }); } setTimeout(() => { els.videoList[index].classList.remove('is-visible'); if (!!els.videoList[index].tooltipCta) { els.videoList[index].tooltipCta.blur(); } els.videos[index + 1].videoWrap.videoMuteCta.focus(); }, 200); }, click: function () { let self = this; els.tooltipCta[0].addEventListener('click', function () { self.nextVideoPlay(0); }); }, endCallback: function () { if (stepInfo[this.video.playIndex].tooltip == 'true') { if (!this.wrap.tooltipCta.classList.contains('is-bg-load-complete')) { this.wrap.tooltipCta.classList.add('is-bg-load-complete'); } this.wrap.tooltipCta.removeAttribute('disabled'); this.wrap.tooltip.classList.add('is-visible'); } if (stepInfo[this.video.playIndex].alert == 'true') { this.wrap.alert.classList.add('is-visible'); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); this.controller.style.display = 'none'; } }, onClickMute: function () { for (let i = 0; i < els.muteCtas.length; i++) { els.muteCtas[i].video = els.muteCtas[i].parentElement.parentElement.video; els.muteCtas[i].addEventListener('click', function () { let isMute = this.video.muted; if (!!isMute) { this.classList.add('is-unmuted'); this.video.muted = false; this.blind.innerText = this.getAttribute('data-mute'); setTagging.mute(this); } else { this.classList.remove('is-unmuted'); this.video.muted = true; this.blind.innerText = this.getAttribute('data-unmute'); setTagging.unmute(this); } }); } }, setMuteBlindText: function () { for (let i = 0; i < els.muteCtas.length; i++) { els.muteCtas[i].blind = els.muteCtas[i].querySelector('.blind'); els.muteCtas[i].blind.innerText = els.muteCtas[i].getAttribute('data-unmute'); } } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(ANIUTIL.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') this.controller.style.display = ''; } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); utils.offAccessibility(this.wrap.videoMuteCta); if (this.video.playIndex == 0) { let self = this; clearTimeout(status.videoFocusTimeout); status.videoFocusTimeout = setTimeout(function () { self.wrap.videoMuteCta.focus(); status.videoFocusTimeout = null; }, 400); } if (!this.video.muted) { this.wrap.videoMuteCta.classList.remove('is-unmuted'); this.wrap.videoMuteCta.video.muted = true; this.wrap.videoMuteCta.blind.innerText = this.wrap.videoMuteCta.getAttribute('data-unmute'); setTagging.unmute(this.wrap.videoMuteCta); } this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip) { let self = this; utils.offAccessibility(this.wrap.tooltip); setTimeout(function () { self.wrap.tooltipCta.focus(); }, 200); } this.controller.style.display = 'none !important'; eventList.endCallback.call(this); if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); els.tutorialReplay.focus(); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } }, mute: function (targetCta) { if (targetCta.hasAttribute('data-omni')) { let dataOmni = targetCta.getAttribute('data-omni').toLowerCase(); targetCta.setAttribute('data-omni', dataOmni.replace('unmute', 'mute')); } if (targetCta.hasAttribute('ga-la')) { let gaLa = targetCta.getAttribute('ga-la').toLowerCase(); targetCta.setAttribute('ga-la', gaLa.replace('unmute', 'mute')); } }, unmute: function (targetCta) { if (targetCta.hasAttribute('data-omni')) { let dataOmni = targetCta.getAttribute('data-omni').toLowerCase(); targetCta.setAttribute('data-omni', dataOmni.replace('mute', 'unmute')); } if (targetCta.hasAttribute('ga-la')) { let gaLa = targetCta.getAttribute('ga-la').toLowerCase(); targetCta.setAttribute('ga-la', gaLa.replace('mute', 'unmute')); } }, }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.setMuteBlindText(); eventList.videoController(); eventList.click(); eventList.onClickMute(); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.liveTranslatePopup = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let status = {}; const init = function () { els.layerPopup = document.querySelector('.highlights-live-translate-popup'); if (!!els.layerPopup) { setElements(); setStatus(); objList.setPopup(); bindEvents(); } }; const setElements = function () { status.isGlobal = document.documentElement.classList.contains('global'); els.contents = document.querySelector('#contents'); els.openCta = document.querySelector('.highlights-live-translate__cta button'); els.innerWrap = els.layerPopup.querySelector('.common-popup__inner-wrapper'); els.closeCtas = els.layerPopup.querySelectorAll('.common-popup__close-cta'); els.dimmed = els.layerPopup.querySelector('.common-popup__dimmed'); els.supClicker = els.layerPopup.querySelectorAll('a.click_sup'); els.videoWrap = els.layerPopup.querySelector('.common-video.js-scroll-video'); els.videoWrap.video = els.videoWrap.querySelector('.common-video__video'); els.videoWrap.controller = els.videoWrap.querySelector('.common-video__control'); els.videoWrap.controller.video = els.videoWrap.video; els.hashPopupOpener = null; }; const setStatus = function () { status.isHash = false; }; const bindEvents = function () { els.videoWrap.controller.addEventListener('click', handlerList.videoCta); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', handlerList.onClickSup); } }; const objList = { setPopup: function () { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.highlights-live-translate-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCtas[0], els.closeCtas[1]], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.innerWrap.scrollTop = 0; els.layerPopup.classList.add('is-init'); target.openerCta.blur(); setPopupLazyLoader.image(); setPopupLazyLoader.video(); objList.setVideo(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { status.isHash = true; els.hashPopupOpener = els.openCta; } }, end: function () { if (utils.detector.isIosDevice) els.layerPopup.style.display = 'block'; els.layerPopup.classList.add('is-open'); if (els.contents.querySelector('.common-youtube-popup')) { document.documentElement.appendChild(els.contents.querySelector('.common-youtube-popup')); } } }, hide: { start: function (target) { target.openerCta.focus(); els.layerPopup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); els.videoWrap.video.pause(); els.videoWrap.video.currentTime = 0; if (status.isHash && els.hashPopupOpener) { els.hashPopupOpener.focus(); setTimeout(function () { els.hashPopupOpener.focus(); status.isHash = false; els.hashPopupOpener = null; }, 300); } els.openCta.focus(); setTimeout(() => { els.openCta.focus(); }, 300); } } }); }, setVideo: function () { objs.video = ANIUTIL.videoHandler({ wrap: els.videoWrap, video: els.videoWrap.video, controller: els.videoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } }, playCallback: function () { setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }; const handlerList = { videoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }, onClickSup: function (e) { e.preventDefault(); e.stopPropagation(); els.layerPopup.hide(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); } }; const setPopupLazyLoader = { image: function () { objs.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-live-translate-popup-img-src', responsiveClass: '.js-live-translate-popup-res-img', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.popupBgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-live-translate-popup-bg-img', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }, video: function () { objs.videoLoader = ANIUTIL.mediaLoader({ type: 'video', lazyClass: '.js-live-translate-popup-video-src', responsiveClass: '.js-live-translate-popup-res-video', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (video.videoWrap && !video.videoWrap.classList.contains('is-loaded')) { video.videoWrap.classList.add('is-loaded'); } } }); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.nightography = (function () { let els = {}; let status = {}; let objs = {}; const utils = window.flagship.common.utils; const init = function () { els.section = document.querySelector('.highlights-nightography'); if (!!els.section) { setElements(); objList.swiper(); bindEvents(); } }; const setElements = function () { els.swiperContainer = els.section.querySelector('.swiper-container'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.pagination = els.section.querySelector('.swiper-pagination'); }; const bindEvents = function () { objs.swiper.on('init', swiperEvents.init); objs.swiper.on('slideChange', swiperEvents.slideChange); objs.swiper.init(); els.nextArrow.addEventListener('click', swiperEvents.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvents.onClickArrow); els.prevArrow.addEventListener('click', swiperEvents.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvents.onClickArrow); }; const objList = { swiper: function () { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { init: false, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, pagination: { el: els.pagination, type: 'bullets', clickable: true, renderBullet: function () { return '

      • '; } }, slidesPerView: 'auto', centeredSlides: true, spaceBetween: 10, breakpoints: { 768: { spaceBetween: 100, } }, }); } } }; const swiperEvents = { init: function () { let notification = this.el.querySelector('.swiper-notification'); els.bullets = this.pagination.bullets; for (let i = 0; i < els.bullets.length; i++) { els.bullets[i].removeAttribute('role'); els.bullets[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); objs.swiper.slideTo(i); }); } if (!!notification) this.el.removeChild(notification); accessibility.slide(); accessibility.pagination.tagging(); accessibility.pagination.label(); els.nextArrow.removeAttribute('aria-label'); els.prevArrow.removeAttribute('aria-label'); }, slideChange: function () { accessibility.slide(); accessibility.pagination.label(); }, onClickArrow: function (e) { status.arrowTimeout = null; status.arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (objs.swiper.isBeginning && !objs.swiper.isEnd) { els.prevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.nextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.prevArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && objs.swiper.isEnd) { els.nextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.prevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.nextArrow.style.display = ''; }, 400); } } } }; const accessibility = { slide: function () { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } }, pagination: { tagging: function () { const tagging = { 'data-omni-type': 'microsite_gallery', 'data-omni': 'galaxy-s24:highlights:camera^nightography:index:', 'ga-ca': 'gallery', 'ga-ac': 'feature gallery', 'ga-la': 'galaxy-s24:highlights:camera^nightography:index:', }; for (let i = 0; i < els.bullets.length; i++) { Object.keys(tagging).forEach(key => { if (key == 'data-omni' || key == 'ga-la') { els.bullets[i].setAttribute(key, tagging[key] + (i + 1)); } else { els.bullets[i].setAttribute(key, tagging[key]); } }); } }, label: function () { for (let i = 0; i < els.bullets.length; i++) { let slideName = objs.swiper.slides[i].getAttribute('data-slide-name'); if (i === objs.swiper.realIndex) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { els.bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName} ${LOCAL_VARI.selected.toLowerCase()}`); } else { els.bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName} selected`); } } else { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { els.bullets[i].setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}: ${slideName}`); } else { els.bullets[i].setAttribute('aria-label', `Slide${i + 1}: ${slideName}`); } } } }, } }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.opticalZoom = (function () { const resize = window.flagship.common.resize; let els = {}; let objs = {}; let classList = { isZoom: 'is-zoom', isHide: 'is-hide', active: 'is-active', zoomOutReady: 'is-zoom-out-ready' }; let index = {}; let clickActive = false; const init = function () { els.section = document.querySelector('.highlights-optical-zoom'); if (!!els.section) { setElements(); setProperty(); setScene(); bindEvents(); } }; const setElements = function () { els.zoomCtaList = els.section.querySelector('.highlights-optical-zoom__zoom-button-list'); els.zoomCta = els.section.querySelectorAll('.highlights-optical-zoom__zoom-button'); els.zoomTarget = els.section.querySelector('.js-img-zoom'); els.zoomImages = els.zoomTarget.querySelectorAll('img'); els.tooltip = els.section.querySelector('.highlights-optical-zoom__zoom-tooltip'); }; const setProperty = function () { for (let i = 0; i < els.zoomImages.length; i++) { els.zoomImages[i].setAttribute('aria-hidden', true); } els.isActiveCtaWrap = els.zoomCta[0].parentElement; els.oldVisibleImage = els.zoomImages[0]; accessibility.setTitle(els.zoomCta[0]); els.zoomImages[0].setAttribute('aria-hidden', false); els.zoomImages[0].style.transition = 'none'; els.zoomImages[0].classList.add(classList.active); els.zoomImages[0].style.transition = ''; els.oldVisibleImage = els.zoomImages[0]; }; const setScene = function () { objs.scene = SCROLLER({ trackElement: els.section, useFixed: false }); }; const resetImages = function () { setTimeout(() => { els.oldVisibleImage.classList.remove(classList.isZoom); els.oldVisibleImage.classList.remove('is-zoom-out-ready'); els.isvisibleTargetImage.removeEventListener('transitionend', resetImages); els.oldVisibleImage.removeEventListener('transitionend', resetImages); els.oldVisibleImage = els.isvisibleTargetImage; clickActive = false; }, 200); }; const bindEvents = function () { els.zoomCtaList.addEventListener('click', zoomClickEvent); els.section.addEventListener('keydown', zoomClickEvent); window.addEventListener('scroll', scrollHandler); scrollHandler(); }; const scrollHandler = function () { objs.scene.trackAnimation(function () { let startProgress = resize.checkResolution() == 'desktop' ? 40 : 35; if (this.progress > startProgress && this.progress < 70) { let speed = 1000; zoomClickEvent(undefined, els.zoomCta[1]); setTimeout(() => { zoomClickEvent(undefined, els.zoomCta[2]); }, speed); setTimeout(() => { zoomClickEvent(undefined, els.zoomCta[1]); TweenMax.to(els.tooltip, 0.4, { opacity: 1, ease: 'linear', delay: 1 }); }, speed * 2); window.removeEventListener('scroll', scrollHandler); } }); }; const zoomClickEvent = function (e, trigger) { if (clickActive) return; let actionableEventStatus; if (e != undefined) { if (e.type == 'click' && e.target.classList.contains('highlights-optical-zoom__zoom-tooltip-text')) return; let typeCheck = (e.type == 'click' || e.type == 'keydown'); let commonClassCheck = e.target.classList.contains('highlights-optical-zoom__zoom-button-title'); let clickClassCheck = e.type == 'click' && e.target.classList.contains('highlights-optical-zoom__zoom-button'); let keyCodeCheck = e.keyCode == 13; actionableEventStatus = typeCheck && (commonClassCheck || clickClassCheck || keyCodeCheck); } else if (e == undefined && trigger != undefined) { actionableEventStatus = true; } if (actionableEventStatus) { els.isZoomCta = trigger ? trigger : e.target.classList.contains('highlights-optical-zoom__zoom-button-title') ? e.target.parentElement : e.target; els.isZoomCtaWrap = els.isZoomCta.parentElement; index.click = els.isZoomCta.getAttribute('data-index'); if (index.click == index.active) return; clickActive = true; els.isvisibleTargetImage = els.zoomImages[index.click]; if (!!!trigger && !els.tooltip.classList.contains(classList.isHide)) { TweenMax.to(els.tooltip, 0.4, { opacity: 0, ease: 'linear', onComplete: function () { els.tooltip.style.display = 'none'; els.tooltip.setAttribute('aria-hidden', 'true'); } }); els.tooltip.classList.add(classList.isHide); } accessibility.removeTitle(); accessibility.setTitle(els.isZoomCta); els.isActiveCtaWrap.classList.remove(classList.active); els.isZoomCtaWrap.classList.add(classList.active); if (!!!index.active || (index.active < index.click)) { els.isZoomImage = els.oldVisibleImage; els.oldVisibleImage.addEventListener('transitionend', resetImages); els.oldVisibleImage.classList.add(classList.isZoom); els.oldVisibleImage.classList.remove(classList.active, classList.zoomOutReady); els.isvisibleTargetImage.classList.add(classList.active); } else { els.isZoomImage = els.oldVisibleImage; els.isvisibleTargetImage.classList.add(classList.zoomOutReady); els.isvisibleTargetImage.addEventListener('transitionend', resetImages); setTimeout(() => { els.isvisibleTargetImage.classList.add(classList.active); }, 100); setTimeout(() => { els.oldVisibleImage.classList.remove(classList.active); }, 600); } els.oldVisibleImage.setAttribute('aria-hidden', true); els.isvisibleTargetImage.setAttribute('aria-hidden', false); els.isActiveCtaWrap = els.isZoomCtaWrap; index.active = index.click; } }; const accessibility = { removeTitle: function () { for (let i = 0; i < els.zoomCta.length; i++) { els.zoomCta[i].removeAttribute('title'); } }, setTitle: function (cta) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { cta.setAttribute('title', LOCAL_VARI.selected); } else { cta.setAttribute('title', 'selected'); } }, }; return { init: init } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.overview = (() => { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let objs = {}; let eventFnc = {}; let statusClass = { progress: { active: 'js-progress-active', pause: 'js-progress-pause' }, video: { load: 'is-loaded', complete: 'is-video-load-complete' }, navigation: 'is-active', info: { visible: 'is-visible', active: 'is-active' }, }; let status = { currentDevice: resize.checkResolution(), isAuto: true, isClickControl: false, }; const init = () => { els.section = document.querySelector('.highlights-overview'); if (!!els.section) { setElements(); setProperty(); objList.setScene(); bindEvents(); } }; const setElements = () => { els.sectionInner = els.section.querySelector('.common-inner'); els.overviewContents = els.section.querySelector('.highlights-overview__contents') els.swiperContainer = els.section.querySelector('.js-overview-carousel'); els.slides = els.section.querySelectorAll('.highlights-overview__carousel-slide'); els.videoWrap = els.section.querySelectorAll('.common-video'); els.videos = els.section.querySelectorAll('.common-video__video'); els.videoControlCta = els.section.querySelectorAll('.common-video__control'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.progressWrap = els.section.querySelectorAll('.js-progress-wrap'); els.progressBar = els.section.querySelectorAll('.js-progress-bar'); els.navigationWrap = els.section.querySelector('.highlights-overview__navigation'); els.navigationInner = els.navigationWrap.querySelector('.highlights-overview__navigation-inner'); els.navigationList = els.navigationWrap.querySelectorAll('.highlights-overview__navigation-listitem'); els.navigationBtn = els.navigationWrap.querySelectorAll('.highlights-overview__navigation-button-wrap'); els.infoItem = els.section.querySelectorAll('.highlights-overview__info-item'); els.featureCtas = els.section.querySelectorAll('a.common-cta-encased'); els.sup = els.section.querySelectorAll('a.click_sup'); // tutorial els.tutorialOpenCtas = els.section.querySelectorAll('.js-tutorial-popup'); els.tutorialCloseCtas = document.querySelectorAll('.common-tutorial__close-cta'); }; const setProperty = () => { status.navSlideWrapWidth = els.navigationWrap.clientWidth; status.isRtl = document.documentElement.classList.contains('rtl'); for (let i = 0; i < els.videos.length; i++) { els.videos[i].controlCta = els.videoControlCta[i]; els.videos[i].wrap = els.videoWrap[i]; els.videoControlCta[i].video = els.videos[i]; } for (let j = 0; j < els.navigationBtn.length; j++) { els.navigationBtn[j].index = j; els.navigationBtn[j].img = els.navigationBtn[j].querySelectorAll('.highlights-overview__navigation-button-image img'); els.navigationBtn[j].img[0].parentWrap = els.navigationBtn[j]; els.navigationBtn[j].img[1].parentWrap = els.navigationBtn[j]; els.navigationBtn[j].text = els.navigationBtn[j].querySelector('.highlights-overview__navigation-button-text'); els.navigationBtn[j].text.parentWrap = els.navigationBtn[j]; els.navigationBtn[j].addEventListener('keydown', eventList.onClickNavigation); } }; const objList = { setSwiper: () => { if (objs.swiper == null) { objs.swiper = new Swiper(els.swiperContainer, { navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, init: false, speed: 500, }); objs.swiper.currentIndex = 0; objs.swiper.on('init', function () { let notification = this.el.querySelector('.swiper-notification'); this.el.removeChild(notification); els.nextArrow.removeAttribute('aria-label'); els.prevArrow.removeAttribute('aria-label'); objList.setVideo(); eventList.setVideoController(); eventList.scroll(); eventList.animationEnd(); accessibility.slide(); accessibility.setTitle(); }); objs.swiper.on('slideChange', swiperEvent.slideChange); objs.swiper.on('transitionEnd', swiperEvent.transitionEnd); objs.swiper.on('touchMove', swiperEvent.touchMove); objs.swiper.on('touchEnd', swiperEvent.touchEnd); objs.swiper.init(); } }, setVideo: () => { for (let i = 0; i < els.slides.length; i++) { let isSlide = els.slides[i]; let isVideoWrap = isSlide.querySelector('.common-video'); let isVideo = isSlide.querySelector('.common-video__video'); objs[`video_${i}`] = ANIUTIL.videoHandler({ playType: 'scrollPlay', wrap: isVideoWrap, video: isVideo, controller: isVideo.controlCta, startPoint: resize.checkResolution().indexOf('mobile') > -1 ? 25 : 35, reversePoint: resize.checkResolution().indexOf('mobile') > -1 ? 75 : 80, playCallback: function () { status.isAuto = true; if (!!!els.progressBar[i].style['animation-duration']) els.progressBar[i].style['animation-duration'] = `${isVideo.duration}s`; els.progressWrap[i].classList.remove(statusClass.progress.pause); if (isVideo.currentTime == 0) els.progressWrap[i].classList.remove(statusClass.progress.active); setTimeout(() => { els.progressWrap[i].classList.add(statusClass.progress.active); }, 20); accessibility.setTagging.pause(isVideo.controlCta); }, pauseCallback: function () { status.isAuto = false; setTimeout(() => { els.progressWrap[i].classList.add(statusClass.progress.pause); }, 100); accessibility.setTagging.play(isVideo.controlCta); }, endCallback: function () { if (!isVideoWrap.classList.contains('is-completed')) isVideoWrap.classList.add('is-completed'); status.isAuto = true; }, resetCallback: function () { setTimeout(() => { els.progressWrap[i].classList.remove(statusClass.progress.pause); els.progressWrap[i].classList.remove(statusClass.progress.active); }, 100); } }); } }, setScene: () => { objs.scene = SCROLLER({ trackElement: els.overviewContents, useFixed: false }); }, setNavSwiper: () => { if (objs.navSwiper == null) { objs.navSwiper = new Swiper(els.navigationWrap, { init: false, slidesPerView: 'auto', }); objs.navSwiper.on('init', function () { let notification = this.el.querySelector('.swiper-notification'); this.el.removeChild(notification); }); objs.navSwiper.on('touchMove', swiperEvent.checkScrollEnd); objs.navSwiper.init(); } } }; const bindEvents = () => { objList.setSwiper(); window.addEventListener('scroll', eventList.scroll); els.navigationWrap.addEventListener('click', eventList.onClickNavigation); els.nextArrow.addEventListener('click', swiperEvent.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvent.onClickArrow); els.prevArrow.addEventListener('click', swiperEvent.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvent.onClickArrow); swiperEvent.navInitCheck(); for (let i = 0; i < els.featureCtas.length; i++) { els.featureCtas[i].addEventListener('click', eventList.clickFeatureCta); } // tutorial for (let j = 0; j < els.tutorialOpenCtas.length; j++) { els.tutorialOpenCtas[j].addEventListener('click', eventList.clickTutorialOpenCta); } // tutorial close for (let i = 0; i < els.tutorialCloseCtas.length; i++) { els.tutorialCloseCtas[i].addEventListener('click', function () { if (!status.activeVideoPaused) status.activeVideo.play(); }) } for (let i = 0; i < els.sup.length; i++) { els.sup[i].addEventListener('click', function () { status.isAuto = false; }); } resize.add(eventList.onResize); }; const swiperEvent = { slideChange: () => { let activeIndex = objs.swiper.activeIndex; let currentIndex = objs.swiper.currentIndex; let slideLength = objs.swiper.slides.length; let loadIndex = activeIndex == slideLength - 1 ? 0 : activeIndex; let loadVideoLength = els.section.querySelectorAll(`.${statusClass.video.load}`).length; let allSlideloadComplete = els.videos.length == loadVideoLength; let nextIndex = (objs.swiper.activeIndex < objs.swiper.slides.length - 1) ? (objs.swiper.activeIndex + 1) : 0; if (!allSlideloadComplete && els.videos.length > loadIndex) { if (!els.videos[activeIndex].classList.contains(statusClass.video.complete)) { videoLoader.setResponsiveMedia([els.videos[activeIndex]]); els.videoWrap[activeIndex].classList.add(statusClass.video.load); } if (!els.videos[nextIndex].classList.contains(statusClass.video.complete)) { videoLoader.setResponsiveMedia([els.videos[nextIndex]]); els.videoWrap[nextIndex].classList.add(statusClass.video.load); } } if (currentIndex != activeIndex) { objs[`video_${currentIndex}`].eventList.reset.call(objs[`video_${currentIndex}`]); objs[`video_${currentIndex}`].video.removeEventListener('canplay', objs[`video_${currentIndex}`].video.play); if (!!utils.isLowNetwork() || !status.isAuto) { els.progressWrap[currentIndex].classList.remove(statusClass.progress.active); els.progressWrap[activeIndex].classList.remove(statusClass.progress.pause); } else { els.progressWrap[currentIndex].classList.remove(statusClass.progress.active); if (objs[`video_${activeIndex}`] != undefined && objs[`video_${activeIndex}`].video.readyState >= 4) { objs[`video_${activeIndex}`].video.play(); } else { objs[`video_${activeIndex}`].video.addEventListener('canplay', function () { this.play(); }); } } if (!els.navigationBtn[activeIndex].classList.contains(statusClass.navigation)) { els.navigationBtn[currentIndex].classList.remove(statusClass.navigation); els.navigationBtn[activeIndex].classList.add(statusClass.navigation); accessibility.setTitle(); } if (!els.infoItem[activeIndex].classList.contains(statusClass.info.visible)) { els.infoItem[currentIndex].classList.remove(statusClass.info.visible); els.infoItem[activeIndex].classList.add(statusClass.info.visible); } if (!els.infoItem[activeIndex].classList.contains(statusClass.info.active)) { els.infoItem[currentIndex].classList.remove(statusClass.info.active); els.infoItem[activeIndex].classList.add(statusClass.info.active); } } if (objs.navSwiper != null) swiperEvent.setNavSwiperXvalue(activeIndex); accessibility.slide(); objs.swiper.currentIndex = activeIndex; }, transitionEnd: function () { if (!!status.isClickControl) return; objs[`video_${objs.swiper.activeIndex}`].video.controlCta.focus(); }, touchMove: function () { objs.swiper.off('transitionEnd', swiperEvent.transitionEnd); }, touchEnd: function () { objs.swiper.on('transitionEnd', swiperEvent.transitionEnd); }, onClickArrow: function (e) { status.arrowTimeout = null; status.arrowStyleTimeout = null; status.accessibilityTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); status.isClickControl = true; if (objs.swiper.isBeginning && !objs.swiper.isEnd) { els.prevArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.nextArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.prevArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && objs.swiper.isEnd) { els.nextArrow.style.setProperty('display', 'block', 'important'); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { els.prevArrow.focus(); }, 300); clearTimeout(status.arrowStyleTimeout); status.arrowStyleTimeout = setTimeout(function () { els.nextArrow.style.display = ''; }, 400); } else if (!objs.swiper.isBeginning && !objs.swiper.isEnd) { let target = e.target.classList.contains('swiper-button-next') ? els.nextArrow : els.prevArrow; let noTarget = target.classList.contains('swiper-button-next') ? els.prevArrow : els.nextArrow; objs.swiper.slides[objs.swiper.activeIndex].setAttribute('tabindex', -1); objs.swiper.slides[objs.swiper.activeIndex].setAttribute('aria-hidden', true); noTarget.setAttribute('tabindex', -1); noTarget.setAttribute('aria-hidden', true); clearTimeout(status.arrowTimeout); status.arrowTimeout = setTimeout(function () { target.focus(); }, 300); clearTimeout(status.accessibilityTimeout); status.accessibilityTimeout = setTimeout(function () { objs.swiper.slides[objs.swiper.activeIndex].removeAttribute('tabindex'); objs.swiper.slides[objs.swiper.activeIndex].removeAttribute('aria-hidden'); noTarget.removeAttribute('tabindex'); noTarget.removeAttribute('aria-hidden'); }, 400); } eventList.animationEndDestroy(); } }, navInitCheck: () => { let wrapPadding = parseInt(window.getComputedStyle(els.sectionInner).paddingLeft) * 2; let getComputedStyle = window.getComputedStyle(els.navigationList[0]); let navMargin = !!status.isRtl ? parseInt(getComputedStyle.marginLeft) : parseInt(getComputedStyle.marginRight); let navSlideWidth = els.navigationList[0].clientWidth; let slideWrapWidth = (navSlideWidth * els.navigationList.length) + (navMargin * (els.navigationList.length - 1)); status.navSwiperPadding = (status.navSlideWrapWidth - slideWrapWidth) / 2; let contentsWidth = els.sectionInner.clientWidth - wrapPadding - status.navSwiperPadding; status.isNavInit = (status.currentDevice.indexOf('mobile') > -1 && contentsWidth <= slideWrapWidth) || els.navigationList.length > 4; if (!!status.isNavInit) { objList.setNavSwiper(); } else { swiperEvent.destroy(); } }, setNavSwiperXvalue: (activeIndex) => { if (activeIndex === 0 || activeIndex === 1) { status.xValue = 0; } else if (activeIndex > 1) { if ((status.navSwiperPadding * 2) < 0) { status.xValue = (status.navSlideWrapWidth - els.navigationInner.clientWidth) + Math.abs((status.navSwiperPadding * 2)); } else { status.xValue = status.navSlideWrapWidth - els.navigationInner.clientWidth; } } if (!status.isRtl) els.navigationInner.style.transform = `translate3d(-${status.xValue}px, 0px, 0px)`; else els.navigationInner.style.transform = `translate3d(${status.xValue}px, 0px, 0px)`; swiperEvent.checkScrollEnd(); }, checkScrollEnd: () => { if (!status.isRtl) { if (objs.navSwiper.getTranslate() < 0) els.navigationWrap.classList.add('is-scroll-end'); else els.navigationWrap.classList.remove('is-scroll-end'); } else { if (objs.navSwiper.getTranslate() < 0) els.navigationWrap.classList.remove('is-scroll-end'); else els.navigationWrap.classList.add('is-scroll-end'); } }, destroy: () => { if (objs.navSwiper != null) { objs.navSwiper.destroy(true); objs.navSwiper = null; } } } const eventList = { setVideoController: () => { for (let i = 0; i < els.videoControlCta.length; i++) { els.videoControlCta[i].addEventListener('click', function () { let isVideo = this.video; if (isVideo.paused) { isVideo.play(); } else { isVideo.pause(); } }); } }, scroll: () => { objs.scene.trackAnimation(function () { objs[`video_${objs.swiper.activeIndex}`].scrollActive(this.progress); }); }, animationEnd: () => { eventFnc.animationEnd = {}; if (!!utils.isLowNetwork()) return; for (let i = 0; i < els.progressBar.length; i++) { eventFnc.animationEnd[i] = function () { if (objs.swiper.activeIndex == (objs.swiper.slides.length - 1)) { status.isAuto = false; els.progressBar[i].removeEventListener('animationend', eventFnc.animationEnd[i]); } else { setTimeout(() => { if (!status.isAuto) return; objs.swiper.slideNext(500); els.progressBar[i].removeEventListener('animationend', eventFnc.animationEnd[i]); }, 800); } }; els.progressBar[i].addEventListener('animationend', eventFnc.animationEnd[i]); } }, animationEndDestroy: () => { for (let i = 0; i < els.progressBar.length; i++) { els.progressBar[i].removeEventListener('animationend', eventFnc.animationEnd[i]); } }, onClickNavigation: (e) => { if (e.target.classList.contains('swiper-wrapper') || (e.type == 'keydown' && e.keyCode != 13)) return; let oldTarget = els.navigationWrap.querySelector(`.${statusClass.navigation}`); let targetMatches = e.target.matches('.highlights-overview__navigation-button-image img') || e.target.matches('.highlights-overview__navigation-button-text'); if (targetMatches) { currentTarget = e.target.parentWrap; } else if (e.target.classList.contains('highlights-overview__navigation-button')) { currentTarget = e.target.parentElement; } if (!currentTarget.classList.contains(statusClass.navigation)) { oldTarget.classList.remove(statusClass.navigation); currentTarget.classList.add(statusClass.navigation); objs.swiper.slideTo(currentTarget.index, 500, false); accessibility.setTitle(); } status.isClickControl = true; eventList.animationEndDestroy(); }, clickFeatureCta: (e) => { e.preventDefault(); status.isAuto = false; let target = e.target.matches('.common-cta-encased__text') ? e.target.parentElement : e.target; let sectionId = target.getAttribute('href'); let section; if (sectionId == '#transcript-assist') { section = document.querySelector('.highlights-live-translate'); let layerPopup = document.querySelector(sectionId); let sectionTop = section.getBoundingClientRect().top; let movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(); window.scrollTo(0, movePosition); setTimeout(() => { layerPopup.show(); }, 300); } else { section = document.querySelector(sectionId); let sectionTop = section.getBoundingClientRect().top; let movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(); let title = section.querySelector('h2.common-sub-headline'); let clickable = section.querySelectorAll('a, button'); if (!!title) { let _focusOut = function () { title.removeAttribute('tabindex'); title.removeEventListener('focusout', _focusOut); }; title.addEventListener('focusout', _focusOut); title.setAttribute('tabindex', 0); title.focus(); } else { clickable[0].focus(); } window.scrollTo(0, movePosition); } }, onResize: function (currRes) { status.currentDevice = currRes; status.navSlideWrapWidth = els.navigationWrap.clientWidth; swiperEvent.navInitCheck(); }, clickTutorialOpenCta: function () { let hash = this.getAttribute('data-hash'); let tutorialPopup = document.querySelector(`#${hash}`); let tutorialPopupList = document.querySelectorAll('.common-tutorial'); if (tutorialPopup) { status.isAuto = false; status.activeVideo = objs[`video_${objs.swiper.activeIndex}`].video; status.activeVideoPaused = status.activeVideo.paused; tutorialPopup.show(); if (utils.detector.isIosDevice || utils.detector.isTouchDevice) this.blur(); else this.focus(); for (let i = 0; i < tutorialPopupList.length; i++) { tutorialPopupList[i].isOverview = true; tutorialPopupList[i].overviewCta = this; } } }, }; const accessibility = { slide: () => { for (let i = 0; i < objs.swiper.slides.length; i++) { if (i != objs.swiper.activeIndex) { utils.onAccessibility(objs.swiper.slides[i]); } else { utils.offAccessibility(objs.swiper.slides[i]); } } }, setTitle: () => { for (let i = 0; i < els.navigationBtn.length; i++) { let button = els.navigationBtn[i].querySelector('button'); button.removeAttribute('title'); if (i == objs.swiper.activeIndex) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { button.setAttribute('title', LOCAL_VARI.selected); } else { button.setAttribute('title', 'Selected'); } } } }, setTagging: { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } } }; return { init: init } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.quote = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.highlights-media-quote'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.swiper = null; els.itemArray = []; els.quoteWrap = els.section.querySelector('.highlights-media-quote__inner'); els.quoteContainer = els.section.querySelector('.highlights-media-quote__list-wrap'); els.quoteList = els.section.querySelector('.highlights-media-quote__list'); els.quoteListItems = els.quoteList.querySelectorAll('.highlights-media-quote__item'); els.arrowWrap = els.section.querySelector('.highlights-media-quote__arrow'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.quotePagination = els.section.querySelector('.highlights-media-quote__pagination'); }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', onLodeHandler, { once: true }); resize.add(onResizeHandler); els.nextArrow.addEventListener('click', swiperEvents.onClickArrow); els.nextArrow.addEventListener('keydown', swiperEvents.onClickArrow); els.prevArrow.addEventListener('click', swiperEvents.onClickArrow); els.prevArrow.addEventListener('keydown', swiperEvents.onClickArrow); }; const onLodeHandler = function () { onResponsiveChange(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { onResponsiveChange(); prevDevice = currDevice; } }; const onResponsiveChange = function () { if (currDevice.indexOf('mobile') > -1) { setSwiper(); } else { swiperEvents.destroy(); } }; const setSwiper = function () { if (els.swiper === null) { els.quoteWrap.classList.add('js-swiper-initialized'); els.swiper = new Swiper(els.quoteContainer, { init: false, slidesPerView: 'auto', centeredSlides: true, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, pagination: { el: els.quotePagination, type: 'bullets', renderBullet: function () { return '

      • '; } } }); els.swiper.on('init', swiperEvents.init); els.swiper.on('slideChange', swiperEvents.slideChange); els.swiper.init(); } }; const swiperEvents = { init: function () { let self = this, notification = self.el.querySelector('.swiper-notification'); if (!!notification) self.el.removeChild(notification); setAccessibility.slide(); setAccessibility.arrow(); setPaginationTagging.call(self); setPaginationLabel.call(self); for (let i = 0; i < self.pagination.bullets.length; i++) { (function (idx) { self.pagination.bullets[i].addEventListener('click', function () { self.slideTo(idx); }); })(i); } }, slideChange: function () { setAccessibility.slide(); setAccessibility.arrow(); setPaginationLabel.call(this); }, onClickArrow: function (e) { if ((e.type == 'keydown' && e.keyCode == 13) || (e.type == 'click' && document.documentElement.classList.contains('isTouchDevice'))) { e.preventDefault(); clearTimeout(els.arrowTimeout); els.arrowTimeout = setTimeout(function () { if (els.swiper.isBeginning && !els.swiper.isEnd) { els.nextArrow.focus(); } else if (!els.swiper.isBeginning && els.swiper.isEnd) { els.prevArrow.focus(); } }, 300); } }, destroy: function () { if (els.swiper != null) { els.quoteWrap.classList.remove('js-swiper-initialized'); els.swiper.pagination.destroy(true); els.swiper.navigation.destroy(true); els.swiper.destroy(true); els.swiper = null; } }, }; const setPaginationTagging = function () { let bullets = Array.prototype.slice.call(this.pagination.bullets), paginationTagging = { 'data-omni-type': 'microsite_contentinter', 'data-omni': 'galaxy-s24:highlights:overview:media-quote:index:', 'ga-ca': 'indication', 'ga-ac': 'carousel', 'ga-la': 'galaxy-s24:highlights:overview:media-quote:index:', }; bullets.forEach(function (ele, idx) { Object.keys(paginationTagging).forEach(function (key) { if (key == 'data-omni' || key == 'ga-la') { ele.setAttribute(key, paginationTagging[key] + (idx + 1)); } else { ele.setAttribute(key, paginationTagging[key]); } }); }); }; const setPaginationLabel = function () { let self = this, slides = Array.prototype.slice.call(this.slides), bullets = Array.prototype.slice.call(this.pagination.bullets); bullets.forEach(function (bullet, bulletIndex) { let ariaLabelText = slides[bulletIndex].querySelector('.highlights-media-quote__media').innerText; if (self.realIndex == bulletIndex) { bullet.setAttribute('aria-label', ariaLabelText + ' Selected'); } else { bullet.setAttribute('aria-label', ariaLabelText); } }); }; const setAccessibility = { slide: function () { for (let i = 0; i < els.swiper.slides.length; i++) { if (i != els.swiper.snapIndex) { utils.onAccessibility(els.swiper.slides[i]); } else { utils.offAccessibility(els.swiper.slides[i]); } } }, arrow: function () { if (els.swiper.isBeginning && !els.swiper.isEnd) { utils.offAccessibility(els.nextArrow); utils.onAccessibility(els.prevArrow); } else if (!els.swiper.isBeginning && els.swiper.isEnd) { utils.offAccessibility(els.prevArrow); utils.onAccessibility(els.nextArrow); } else { utils.offAccessibility(els.nextArrow); utils.offAccessibility(els.prevArrow); } } }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.resolutionPopup = (function () { const utils = window.flagship.common.utils; const common = window.flagship.highlights.common; let els = {}; let objs = {}; let status = {}; const init = function () { els.section = document.querySelector('.highlights-resolution'); els.layerPopup = document.querySelector('.highlights-resolution-popup'); if (!!els.layerPopup) { setElements(); setStatus(); setPopup(); bindEvents(); } }; const setElements = function () { status.isGlobal = document.documentElement.classList.contains('global'); els.contents = document.querySelector('#contents'); els.openCta = els.section.querySelector('.js-layer-popup'); els.innerWrap = els.layerPopup.querySelector('.common-popup__inner-wrapper'); els.closeCtas = els.layerPopup.querySelectorAll('.common-popup__close-cta'); els.dimmed = els.layerPopup.querySelector('.common-popup__dimmed'); els.supClicker = els.layerPopup.querySelectorAll('a.click_sup'); els.hashPopupOpener = null; }; const setStatus = function () { status.isHash = false; }; const bindEvents = function () { for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', onClickSup); } }; const setPopup = function () { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.highlights-resolution-popup', openerEvent: { element: els.openCta, }, closeCtas: [els.closeCtas[0], els.closeCtas[1]], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.innerWrap.scrollTop = 0; els.layerPopup.classList.add('is-init'); target.openerCta.blur(); setPopupLazyLoader.image(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { status.isHash = true; els.hashPopupOpener = els.openCta; } }, end: function () { if (utils.detector.isIosDevice) els.layerPopup.style.display = 'block'; els.layerPopup.classList.add('is-open'); } }, hide: { start: function (target) { target.openerCta.focus(); els.layerPopup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); if (status.isHash && els.hashPopupOpener) { els.hashPopupOpener.focus(); setTimeout(function () { els.hashPopupOpener.focus(); status.isHash = false; els.hashPopupOpener = null; }, 300); } } } }); }; const setPopupLazyLoader = { image: function () { objs.imageLoader = ANIUTIL.mediaLoader({ lazyClass: '.js-resolution-popup-img-src', responsiveClass: '.js-resolution-popup-res-img', preset: status.isGlobal ? '' : '?imbypass=true', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.popupBgLoader = ANIUTIL.mediaLoader({ type: 'bgImage', lazyClass: '.js-resolution-popup-bg-img', innerScroll: { use: true, wrap: els.layerPopup, }, loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 1 }); }, }; const onClickSup = function (e) { e.preventDefault(); e.stopPropagation(); els.layerPopup.hide(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); }; return { init: init, } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.tutorial = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; const common = window.flagship.highlights.common; const tutorialPopup = window.flagship.highlights.tutorialPopup; let objs = {}; let status = {}; let commonEls = {}; let isDevice = resize.checkResolution(); status.isGlobal = document.documentElement.classList.contains('global'); let sectionList = document.querySelectorAll('#generative-edit, #circle-to-search, #live-translate, #chat-assist'); let layerPopup = document.querySelectorAll('#generative-edit-experience, #circle-to-search-experience, #live-translate-experience, #chat-assist-experience'); let popupClassList = [ '.highlights-generative-edit-tutorial', '.highlights-circle-to-search-tutorial', '.highlights-live-translate-tutorial', '.highlights-chat-assist-tutorial' ] let statusClass = { isVisible: 'is-visible', isTutorialOpend: 'is-tutorial-opened', isTutorialOpenedMo: 'is-tutorial-opened-mo', isInfoOpen: 'is-info-open', isInfoVisible: 'is-info-visible', isTutorialEnd: 'is-tutorial-end', isActive: 'is-active', isBgLoadComplete: 'is-bg-load-complete', isCompleted: 'is-completed', isOpen: 'is-open', } const init = function () { status.isHash = false; status.isIos = utils.detector.isIosDevice; status.overview = {}; commonEls.globalSubNav = document.querySelector('#subnav'); commonEls.globalContents = document.querySelector('#contents'); commonEls.dotcomContents = document.querySelector('.pd-g-floating-nav'); commonEls.overview = document.querySelector('.highlights-overview'); commonEls.gnb = document.querySelector('.nv00-gnb'); commonEls.tooltipWrap = document.querySelectorAll('.js-tutorial-tooltip'); if (status.isGlobal) { commonEls.contentsChildren = document.querySelector('#contents').children; commonEls.commonUi = document.querySelectorAll('#accessibility-navigation, #header, #footer'); } else { commonEls.wrapChildren = document.querySelector('#wrap').children; commonEls.contentChildren = document.querySelector('#content').children; commonEls.rootChildren = document.querySelector('#content .root .responsivegrid .aem-Grid--12').children; commonEls.flotingNavi = document.querySelector('.pd-g-floating-nav'); commonEls.flotingNaviFixedWrap = document.querySelector('.floating-navigation__wrap'); } for (let i = 0; i < sectionList.length; i++) { let opts = { section: sectionList[i], layerPopup: layerPopup[i], popupClass: popupClassList[i], openCta: sectionList[i].querySelector('.js-tutorial-popup'), closeCta: layerPopup[i].querySelector('.common-tutorial__close-cta--popup'), moCloseCta: layerPopup[i].querySelector('.common-tutorial__close-cta--video'), } els = getElements(opts); tooltipAccessibility(); setPopup(opts, els); bindEvents(els, i); } }; const getElements = function (opts) { let els = {}; els.openCta = opts.section.querySelector('.js-tutorial-popup'); els.layerPopup = opts.layerPopup; els.innerWrapper = opts.layerPopup.querySelector('.common-tutorial__inner-wrapper'); els.innerWrap = opts.layerPopup.querySelector('.common-tutorial__inner-wrap'); els.textWrap = opts.layerPopup.querySelector('.common-tutorial__text'); els.closeCta = opts.layerPopup.querySelector('.common-tutorial__close-cta--popup'); els.moCloseCta = opts.moCloseCta; els.infoPopup = opts.layerPopup.querySelector('.common-tutorial__info-area'); els.videoContent = opts.layerPopup.querySelector('.common-tutorial__video-content'); els.introVideoSection = opts.layerPopup.querySelector('.common-tutorial__intro-video'); els.introVideoWrap = opts.layerPopup.querySelector('.common-tutorial__intro-video .common-video'); els.introVideo = opts.layerPopup.querySelector('.common-tutorial__intro-video video'); els.introCoverImage = opts.layerPopup.querySelector('.common-tutorial__intro-video .common-video__cover-image'); if (opts.layerPopup.classList.contains('highlights-live-translate-tutorial')) { els.introCta = opts.layerPopup.querySelector('.common-tutorial__intro-video .js-tutorial-tooltip-cta'); } els.tutorialContents = opts.layerPopup.querySelector('.common-tutorial__video-content'); els.tutorialVideoContainer = opts.layerPopup.querySelector('.common-tutorial__main-video'); els.tutorialVideoWrap = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .common-tutorial__video'); els.tutorialVideos = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .common-tutorial__video video'); els.tutorialCoverImages = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .common-video__cover-image'); els.tutorialActiveCta = opts.layerPopup.querySelector('.common-tutorial__cta--play button'); els.tutorialDeactiveCta = opts.layerPopup.querySelector('.common-tutorial__cta--pause button'); els.tutorialTooltip = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .js-tutorial-tooltip'); els.tutorialAlert = opts.layerPopup.querySelectorAll('.common-tutorial__main-video .js-tutorial-alert'); els.generativeCta = opts.layerPopup.querySelector('.js-tutorial-generative-cta'); els.tutorialFrame = opts.layerPopup.querySelector('.common-tutorial__main-video.common-video__frame'); els.tutorialReplay = opts.layerPopup.querySelector('.common-tutorial__replay-cta'); els.tutorialNavigation = opts.layerPopup.querySelector('.common-tutorial__navigation'); els.navPrev = els.tutorialNavigation.querySelector('.common-tutorial__navigation-button--prev'); els.navNext = els.tutorialNavigation.querySelector('.common-tutorial__navigation-button--next'); els.tutorialPagination = opts.layerPopup.querySelector('.common-tutorial__pagination-area'); els.supClicker = opts.layerPopup.querySelectorAll('a.click_sup'); els.layerPopup.opener = els.openCta; els.layerPopup.targetOpener = opts.openCta; return els; }; const setProperty = function (els) { els.introVideoWrap.video = els.introVideo; els.introVideoWrap.controller = els.introVideoWrap.querySelector('.common-video__control'); els.introVideoWrap.controller.video = els.introVideo; }; const tooltipAccessibility = function () { for (let i = 0; i < commonEls.tooltipWrap.length; i++) { utils.onAccessibility(commonEls.tooltipWrap[i]); } }; const eventList = { common: { setMobileVideoWidth: function (els) { if (els.layerPopup.classList.contains('is-open') && resize.checkResolution().indexOf('mobile') > -1) { let containerWidth = window.innerWidth; let containerHeight = window.innerHeight; if (!status.isIos) { let videoHeight = Math.floor(containerWidth * 2.1666); if (videoHeight > containerHeight) { els.tutorialVideoContainer.style.width = `${Math.floor(containerHeight * 0.4615)}px`; els.tutorialVideoContainer.style.height = `${containerHeight}px`; } else { els.tutorialVideoContainer.style.width = ''; els.tutorialVideoContainer.style.height = `${videoHeight}px`; } } else { els.tutorialVideoContainer.style.width = `${Math.floor(containerHeight * 0.4615)}px`; } } else if (resize.checkResolution() != 'mobile' && els.tutorialVideoContainer.style.height) { if (!status.isIos) { els.tutorialVideoContainer.style.width = ''; els.tutorialVideoContainer.style.height = ''; } else { els.tutorialVideoContainer.style.width = ''; } } }, }, resize: { position: function (els) { if (els.layerPopup.classList.contains('is-open')) { if (isDevice.indexOf('desktop') > -1 && resize.checkResolution().indexOf('desktop') > -1) { let isHash = location.hash; if (!status.isGlobal && window.pageYOffset == 0 && !!isHash) { eventList.popup.setPopupPosition(els.layerPopup); } } if (isDevice != resize.checkResolution()) { eventList.popup.setPopupPosition(els.layerPopup); if (els.layerPopup.querySelector('.is-info-open, .is-tutorial-opened')) { eventList.tutorial.deactive(els); eventList.tutorial.reset(els); }; isDevice = resize.checkResolution(); } } }, }, tutorial: { videoContentReset: function (els) { els.videoContent.classList.remove(statusClass.isInfoOpen); els.videoContent.classList.remove(statusClass.isInfoVisible); els.videoContent.classList.add(statusClass.isTutorialOpend); }, reset: function (els) { if (els.generativeCta) { els.generativeCta.classList.remove(statusClass.isVisible, statusClass.isTutorialEnd); els.generativeCta.parentElement.classList.remove(statusClass.isVisible); } els.tutorialActiveCta.parentElement.classList.add(statusClass.isActive); els.tutorialDeactiveCta.parentElement.classList.remove(statusClass.isActive); els.tutorialContents.classList.remove(statusClass.isInfoOpen); els.videoContent.classList.remove(statusClass.isInfoVisible); els.tutorialContents.classList.remove(statusClass.isTutorialOpend); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.remove(statusClass.isTutorialOpenedMo); } for (let i = 0; i < els.tutorialVideoWrap.length; i++) { if (els.tutorialVideoWrap[i]) els.tutorialVideoWrap[i].classList.remove(statusClass.isVisible); if (els.tutorialVideos[i]) { if (!els.tutorialVideos[i].paused) { els.tutorialVideos[i].pause(); } els.tutorialVideos[i].currentTime = 0; } let isComplete = els.tutorialVideoWrap[i].querySelector(`.${statusClass.isCompleted}`); if (isComplete) els.tutorialVideos[i].videoHandler.resetCallback(); if (els.tutorialTooltip[i]) els.tutorialTooltip[i].classList.remove(statusClass.isVisible); if (els.tutorialAlert[i]) els.tutorialAlert[i].classList.remove(statusClass.isVisible); clearTimeout(status.infoRemoveTiming); } if (!!els.introCta) { els.introCta.parentElement.classList.remove(statusClass.isVisible); utils.onAccessibility(els.introCta.parentElement); } els.tutorialReplay.style.display = ''; if (!els.tutorialReplay.hasAttribute('tabindex')) els.tutorialReplay.setAttribute('tabindex', -1); if (!els.tutorialReplay.hasAttribute('aria-hidden')) els.tutorialReplay.setAttribute('aria-hidden', true); els.introVideoWrap.controller.removeAttribute('tabindex'); els.introVideoWrap.controller.removeAttribute('aria-hidden'); }, videoVisible: function (els) { if (!els.introVideo.paused) { els.introVideo.pause(); } els.videoContent.classList.add(statusClass.isInfoOpen); setTimeout(() => { els.videoContent.classList.add(statusClass.isInfoVisible); }, 0); els.tutorialVideoWrap[0].classList.add(statusClass.isVisible); }, imageLoad: function (els) { if (!els.tutorialFrame.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialFrame.classList.add(statusClass.isBgLoadComplete); } if (!els.tutorialDeactiveCta.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialDeactiveCta.classList.add(statusClass.isBgLoadComplete); } }, setActiveCta: function (els) { els.tutorialActiveCta.parentElement.classList.remove(statusClass.isActive); els.tutorialDeactiveCta.parentElement.classList.add(statusClass.isActive); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.add(statusClass.isTutorialOpenedMo); } }, activeInfo: function (els) { let self = this; clearTimeout(status.infoRemoveTiming); status.infoRemoveTiming = setTimeout(() => { self.videoContentReset(els); els.tutorialVideos[0].play(); utils.offAccessibility(els.tutorialVideoWrap[0]); let tutorialVideoController = els.tutorialVideoWrap[0].querySelector('.common-video__control.common-play-button'); tutorialVideoController.focus(); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.add(statusClass.isTutorialOpenedMo); } if (els.tutorialVideos[1].readyState < 4) { imageLoader.setResponsiveMedia([els.tutorialCoverImages[1]]); videoLoader.setResponsiveMedia([els.tutorialVideos[1]]); } els.tutorialVideos[0].focus(); status.infoRemoveTiming = null; }, 3000); }, active: function (els) { this.onAccessibility(els); if (resize.checkResolution().indexOf('mobile') > -1 && !status.isIos) { document.documentElement.requestFullscreen(); } if (resize.checkResolution().indexOf('mobile') > -1) { setTimeout(function () { els.moCloseCta.focus(); }, 300); } else { setTimeout(function () { els.tutorialDeactiveCta.focus(); }, 300); } status.infoRemoveTiming = null; this.videoVisible(els); this.imageLoad(els); this.setActiveCta(els); this.activeInfo(els); }, videoReset: function (els) { els.introVideo.currentTime = 0; if (isDevice == resize.checkResolution()) { els.introVideo.play(); } for (let i = 0; i < els.tutorialVideoWrap.length; i++) { els.tutorialVideoWrap[i].classList.remove(statusClass.isVisible); if (!els.tutorialVideos[i].paused) { els.tutorialVideos[i].pause(); els.tutorialVideos[i].currentTime = 0; } } }, ctaReset: function (els) { els.tutorialDeactiveCta.parentElement.classList.remove(statusClass.isActive); els.tutorialActiveCta.parentElement.classList.add(statusClass.isActive); if (resize.checkResolution().indexOf('mobile') == -1) { els.layerPopup.classList.remove(statusClass.isTutorialOpenedMo); } if (!!els.introCta) { els.introCta.parentElement.classList.remove(statusClass.isVisible); utils.onAccessibility(els.introCta.parentElement); } }, deactive: function (els) { els.videoContent.classList.remove(statusClass.isInfoOpen, statusClass.isInfoVisible, statusClass.isTutorialOpend); this.offAccessibility(els); if (resize.checkResolution().indexOf('mobile') > -1 && !status.isIos) { if (document.fullscreenElement != null) document.exitFullscreen(); } setTimeout(function () { els.tutorialActiveCta.focus(); }, 300); this.videoReset(els) this.ctaReset(els); for (let i = 0; i < els.tutorialVideoWrap.length; i++) { utils.onAccessibility(els.tutorialVideoWrap[i]); } }, onAccessibility: function (els) { if (resize.checkResolution().indexOf('mobile') > -1) { utils.onPopupAccessibility(els.textWrap); if (!status.isGlobal) { utils.onPopupAccessibility(commonEls.flotingNaviFixedWrap); } else { utils.onPopupAccessibility(commonEls.globalSubNav); } } utils.onPopupAccessibility(els.introVideoSection); }, offAccessibility: function (els) { if (resize.checkResolution().indexOf('mobile') > -1) { utils.offPopupAccessibility(els.textWrap); if (!status.isGlobal) { utils.offPopupAccessibility(commonEls.flotingNaviFixedWrap); } else { utils.offPopupAccessibility(commonEls.globalSubNav); } } utils.offPopupAccessibility(els.introVideoSection); } }, popup: { setOverviewStatus: function (opts) { if (opts.openCta.parentElement.getAttribute('class').indexOf('__tutorial-cta') > -1) { let isOverviewVideo = commonEls.overview.querySelector('.swiper-slide-active video'); if (!isOverviewVideo.paused) { status.overview = { video: isOverviewVideo, paused: true } isOverviewVideo.pause(); } } }, mediaLoad: function (els) { if (!els.tutorialActiveCta.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialActiveCta.classList.add(statusClass.isBgLoadComplete); } if (els.introVideo.readyState < 4) { imageLoader.setResponsiveMedia([els.introCoverImage]); videoLoader.setResponsiveMedia([els.introVideo]); } if (!els.navPrev.classList.contains(statusClass.isBgLoadComplete)) { els.navPrev.classList.add(statusClass.isBgLoadComplete); } if (!els.navNext.classList.contains(statusClass.isBgLoadComplete)) { els.navNext.classList.add(statusClass.isBgLoadComplete); } }, playIntroVideo: function (els) { if (els.introVideo.readyState >= 4) { els.introVideo.currentTime = 0; els.introVideo.play(); } else { els.introVideo.addEventListener('canplay', function () { if (this.paused) this.play(); }); } }, tutorialIntroImgLoad: function (els) { if (!!els.introCoverImage && !els.introCoverImage.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.introCoverImage]); } }, tutorialMediaLoad: function (els) { if (els.tutorialVideos[0].readyState < 4) { imageLoader.setResponsiveMedia([els.tutorialCoverImages[0]]); videoLoader.setResponsiveMedia([els.tutorialVideos[0]]); } if (!els.tutorialReplay.classList.contains(statusClass.isBgLoadComplete)) { els.tutorialReplay.classList.add(statusClass.isBgLoadComplete) } }, setPopupPosition: function (layerPopup) { let isHash = location.hash; let dotcomGnbHeight = 0; if (!status.isGlobal && window.pageYOffset == 0 && !!isHash) { dotcomGnbHeight = document.querySelector('.nv00-gnb').clientHeight; layerPopup.style.top = `${utils.getNavHeight() + dotcomGnbHeight}px`; } else { layerPopup.style.top = `${utils.getNavHeight()}px`; } }, setUiEls: function (opts, els, target) { if (commonEls.globalSubNav) commonEls.globalSubNav.style.opacity = 1; opts.layerPopup.classList.add('is-init'); target.openerCta.blur(); if (`#${els.openCta.getAttribute('data-hash')}` == window.location.hash) { let oldOpenPopup = document.querySelector('.common-tutorial.is-open'); if (!!oldOpenPopup) { let oldOpenPopupId = oldOpenPopup.getAttribute('id'); if (`#${oldOpenPopupId}` != window.location.hash) { document.querySelector(`#${oldOpenPopupId}`).hide(); } } status.isHash = true; if (!status.isGlobal) commonEls.gnb.style.display = 'none'; } if (!!els.introCta) { els.introVideo.addEventListener('ended', function () { utils.offAccessibility(els.introCta.parentElement); setTimeout(function () { els.introCta.parentElement.classList.add(statusClass.isVisible); }, 100); }); } }, setSubnavi: function (opts) { if (commonEls.globalSubNav) commonEls.globalSubNav.style.opacity = .9; opts.layerPopup.classList.remove('is-init'); }, focusHandler: function (opts, els) { let isHash = status.isHash && els.layerPopup.targetOpener; let isOverview = els.layerPopup.isOverview; let isController = els.layerPopup.isController; if (isHash || !!isController && !!!isOverview) { els.layerPopup.targetOpener.blur(); if (!status.isIos) els.layerPopup.targetOpener.focus(); setTimeout(function () { els.layerPopup.targetOpener.focus(); if (isHash) { status.isHash = false; history.pushState('', document.title, window.location.pathname); if (!status.isGlobal) commonEls.gnb.style.display = ''; } if (!!isController) isController = false; }, 300); } if (!!isOverview) { opts.layerPopup.overviewCta.blur(); if (!status.isIos) opts.layerPopup.overviewCta.focus(); setTimeout(function () { if (!document.querySelector('.common-tutorial.is-open')) { opts.layerPopup.overviewCta.focus(); for (let i = 0; i < layerPopup.length; i++) { layerPopup[i].isOverview = false; layerPopup[i].overviewCta = null; } } }, 300); } }, onAccessibilityGlobal: function (els) { for (let i = 0; i < commonEls.contentsChildren.length; i++) { let isId = commonEls.contentsChildren[i].getAttribute('id'); if ((isId != null && isId.indexOf('experience') == -1 && isId.indexOf('subnav') == -1) || isId == null) { utils.onPopupAccessibility(commonEls.contentsChildren[i]); } } for (let i = 0; i < commonEls.commonUi.length; i++) { utils.onPopupAccessibility(commonEls.commonUi[i]); } }, offAccessibilityGlobal: function (els) { for (let i = 0; i < commonEls.contentsChildren.length; i++) { let isId = commonEls.contentsChildren[i].getAttribute('id'); if ((isId != null && isId.indexOf('experience') == -1 && isId.indexOf('subnav') == -1) || isId == null) { utils.offPopupAccessibility(commonEls.contentsChildren[i]); } } for (let i = 0; i < commonEls.commonUi.length; i++) { utils.offPopupAccessibility(commonEls.commonUi[i]); } }, onAccessibilityDotom: function (els) { let staticContent = document.querySelector('.static-content'); staticContent.style.zIndex = -1; staticContent.style.position = 'relative'; for (let i = 0; i < commonEls.wrapChildren.length; i++) { let isId = commonEls.wrapChildren[i].getAttribute('id'); if ((isId != null && isId.indexOf('content') == -1) || isId == null) { utils.onPopupAccessibility(commonEls.wrapChildren[i]); } } for (let i = 0; i < commonEls.contentChildren.length; i++) { let isClass = commonEls.contentChildren[i].getAttribute('class'); if ((isClass != null && isClass.indexOf('root') == -1) || isClass == null) { utils.onPopupAccessibility(commonEls.contentChildren[i]); } } for (let i = 0; i < commonEls.rootChildren.length; i++) { let isClass = commonEls.rootChildren[i].getAttribute('class'); if ((isClass != null && isClass.indexOf('pd-g-floating-nav') == -1) || isClass == null) { utils.onPopupAccessibility(commonEls.rootChildren[i]); } } }, offAccessibilityDotcom: function (els) { for (let i = 0; i < commonEls.wrapChildren.length; i++) { utils.offPopupAccessibility(commonEls.wrapChildren[i]); } if (!status.isIos) { for (let i = 0; i < commonEls.contentChildren.length; i++) { commonEls.contentChildren[i].removeAttribute('tabindex'); commonEls.contentChildren[i].removeAttribute('aria-hidden'); } for (let i = 0; i < commonEls.rootChildren.length; i++) { commonEls.rootChildren[i].removeAttribute('tabindex'); commonEls.rootChildren[i].removeAttribute('aria-hidden'); } } else { for (let i = 0; i < commonEls.contentChildren.length; i++) { utils.offPopupAccessibility(commonEls.contentChildren[i]); } for (let i = 0; i < commonEls.rootChildren.length; i++) { utils.offPopupAccessibility(commonEls.rootChildren[i]); } } setTimeout(function () { let staticContent = document.querySelector('.static-content'); staticContent.style.zIndex = ''; staticContent.style.position = ''; }, 200); }, onAccessibility: function (els) { els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); if (status.isGlobal) { this.onAccessibilityGlobal(els); } else { this.onAccessibilityDotom(els); } }, offAccessibility: function (els) { els.closeCta.setAttribute('tabindex', '-1'); els.closeCta.setAttribute('aria-hidden', true); if (status.isGlobal) { this.offAccessibilityGlobal(els); } else { this.offAccessibilityDotcom(els); } } } } const eventHandler = { resize: function (els) { window.addEventListener('resize', function () { eventList.resize.position(els); eventList.common.setMobileVideoWidth(els); }); }, infoPopupDeactive: function (els) { els.infoPopup.addEventListener('click', function () { eventList.tutorial.videoContentReset(els); clearTimeout(status.infoRemoveTiming); els.tutorialVideos[0].play(); let tutorialVideoController = els.tutorialVideoWrap[0].querySelector('.common-video__control.common-play-button'); tutorialVideoController.focus(); if (resize.checkResolution().indexOf('mobile') > -1) { els.layerPopup.classList.add(statusClass.isTutorialOpenedMo); } if (els.tutorialVideos[1].readyState < 4) { imageLoader.setResponsiveMedia([els.tutorialCoverImages[1]]); videoLoader.setResponsiveMedia([els.tutorialVideos[1]]); } status.infoRemoveTiming = null; }); }, tutorialActiveEvent: function (els) { if (!!els.introCta) { els.introCta.addEventListener('click', function () { eventList.tutorial.active(els); }); } els.tutorialActiveCta.addEventListener('click', function () { this.parentElement.classList.remove(statusClass.isActive); eventList.tutorial.active(els); }); }, tutorialDeactiveEvent: function (els) { els.tutorialDeactiveCta.addEventListener('click', function () { eventList.tutorial.deactive(els); eventList.tutorial.reset(els); }); }, reStartTutorial: function (els) { els.tutorialReplay.addEventListener('click', function () { this.style.display = ''; eventList.tutorial.reset(els); eventList.tutorial.active(els); utils.onAccessibility(els.tutorialVideoWrap[els.tutorialVideoWrap.length - 1]); }); }, videoController: function (index) { objs[`introVideo_${index}`].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); }, onClickMoCloseCta: function (els) { els.moCloseCta.addEventListener('click', function () { eventList.tutorial.deactive(els); eventList.tutorial.reset(els); }); }, onClickController: function (els) { els.tutorialNavigation.addEventListener('click', function (e) { let isNaviBtn = e.target.classList.contains('common-tutorial__navigation-button'); if (isNaviBtn) { _controllEvent(e.target); } }); els.tutorialPagination.addEventListener('click', function (e) { let isPaginationBtn = e.target.classList.contains('common-tutorial__pagination'); if (isPaginationBtn) { let currOpenPopupId = document.querySelector('.common-tutorial.is-open').getAttribute('id'); let targetId = e.target.getAttribute('data-hash'); if (targetId != currOpenPopupId) { _controllEvent(e.target); } } }); const _controllEvent = function (target) { let targetPopupId = target.getAttribute('data-hash'); document.querySelector('.common-tutorial.is-open').hide(); document.querySelector(`#${targetPopupId}`).show(); eventList.tutorial.reset(els); document.querySelector(`#${targetPopupId}`).isController = true; }; }, tutorialintroImgLoad: function (els) { window.addEventListener('scroll', function () { if (this.pageYOffset > 0) { eventList.popup.tutorialIntroImgLoad(els); } }) }, moveToTutorialPopup: function (els) { window.addEventListener('DOMContentLoaded', function () { if (!status.isGlobal) { commonEls.flotingNaviFixedWrap.after(els.layerPopup); } else { document.querySelector('#contents').prepend(els.layerPopup); if (status.isIos) commonEls.globalSubNav.after(els.layerPopup); } }); }, onClickSup: function (els) { for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); let targetIndex = parseFloat(e.target.innerText), disclaimer = document.querySelectorAll('#desc-section li')[targetIndex - 1], disclaimerText = disclaimer.innerText, activeBlock = '' + disclaimerText + ''; els.layerPopup.hide(); setTimeout(() => { disclaimer.innerHTML = activeBlock; disclaimer.querySelector('a').focus(); }, 500); const eventList = { focusIn: function () { common.centeredFocus.call(disclaimer.querySelector('a')); disclaimer.removeEventListener('focusin', eventList.focusIn); }, focusOut: function () { disclaimer.innerHTML = disclaimerText; disclaimer.removeAttribute('tabindex'); disclaimer.removeEventListener('focusout', eventList.focusOut); }, }; disclaimer.addEventListener('focusin', eventList.focusIn); disclaimer.addEventListener('focusout', eventList.focusOut); }); } } } const setIntroVideo = function (el, index) { objs[`introVideo_${index}`] = ANIUTIL.videoHandler({ wrap: el, video: el.video, controller: el.controller, playCallback: function () { if (el.classList.contains(statusClass.isCompleted)) el.classList.remove(statusClass.isCompleted); setTagging.pause(el.controller); }, pauseCallback: function () { setTagging.play(el.controller); }, endCallback: function () { if (!el.classList.contains(statusClass.isCompleted)) el.classList.add(statusClass.isCompleted); } }); }; const setPopup = function (opts, els) { tutorialPopup({ tutorialPopup: opts.layerPopup, tutorialPopupClass: opts.popupClass, openerEvent: { element: opts.openCta, }, closeCtas: [opts.closeCta], show: { start: function (target) { eventList.popup.setOverviewStatus(opts); eventList.popup.mediaLoad(els); eventList.popup.playIntroVideo(els); eventList.popup.tutorialMediaLoad(els); eventList.popup.setPopupPosition(opts.layerPopup); eventList.popup.setUiEls(opts, els, target); eventList.popup.onAccessibility(els); }, end: function () { if (status.isIos) opts.layerPopup.style.display = 'block'; opts.layerPopup.classList.add('is-open'); eventList.common.setMobileVideoWidth(els); } }, hide: { start: function (target) { eventList.popup.offAccessibility(els); target.openerCta.focus(); opts.layerPopup.classList.remove('is-open'); }, end: function () { eventList.tutorial.reset(els); els.introVideo.pause(); eventList.popup.setSubnavi(opts); eventList.popup.focusHandler(opts, els); els.innerWrapper.scrollTop = 0; } } }); }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const bindEvents = function (els, index) { eventHandler.moveToTutorialPopup(els); eventHandler.resize(els); eventHandler.infoPopupDeactive(els); eventHandler.tutorialActiveEvent(els); eventHandler.tutorialDeactiveEvent(els); eventHandler.reStartTutorial(els); eventHandler.onClickMoCloseCta(els); eventHandler.onClickController(els); eventHandler.tutorialintroImgLoad(els); eventHandler.onClickSup(els); // introVideo setProperty(els); setIntroVideo(els.introVideoWrap, index); eventHandler.videoController(index); }; return { init: init, } })(); })(); ; (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.viewer = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}, status = {}, currDevice = resize.checkResolution(); const init = function () { els.viewerBtn = document.querySelector('.viewer-btn'); if (!!els.viewerBtn) { setElements(); setStatus(); setPopup(); bindEvents(); } }; const setElements = function () { els.wrapEl = document.querySelector('#wrap'); els.contents = document.querySelector('#contents'); // popup els.popup = document.querySelector('.highlights-viewer'); els.popupContents = els.popup.querySelector('.highlights-viewer__contents'); els.popupInner = els.popup.querySelector('.highlights-viewer__inner'); els.popupWrap = els.popup.querySelector('.highlights-viewer__wrap'); els.closeCta = els.popup.querySelector('.highlights-viewer__close-cta'); els.viewerWrap = els.popup.querySelector('.highlights-viewer__contents-wrap'); els.viewerContainer = els.popup.querySelector('.highlights-viewer__container'); els.viewerIframe = els.popup.querySelector('.highlights-viewer__container-viewer'); // popup-scroll els.popupScroll = els.popup.querySelector('.highlights-viewer__scroll'); els.popupScrollUpBtn = els.popup.querySelector('.highlights-viewer__scroll-btn--up'); els.popupScrollDownBtn = els.popup.querySelector('.highlights-viewer__scroll-btn--down'); // infoPopup els.infoBtn = els.popup.querySelector('.highlights-viewer__title-cta'); els.infoCloseBtn = els.popup.querySelector('.highlights-viewer__header-close-cta'); els.infoDimmed = els.popup.querySelector('.highlights-viewer__dimmed'); // timeout els.resizeTimeout = null; els.resizeInnerTimeout = null; // viewer els.viewerOpener = null; els.viewerModel = ''; els.viewerColor = ''; }; const setStatus = function () { status.viewerBaseUrl = '//www.samsung.com/global/galaxy/3d-360/viewer/?'; status.defaultParams = '&gesture_guide=0'; status.defaultParams += '&bgcolor=transparent'; status.defaultParams += '&skin=colorlayer'; status.defaultParams += '&theme=roundlayer'; status.defaultParams += '&intro=1'; status.defaultParams += '&ruler=1'; status.defaultParams += '&breakpoint_criteria=outer'; status.defaultParams += '&breakpoint_desktop_width=1024'; status.defaultParams += '&intro_pose=2'; status.defaultParams += '&intro_pose_once=1'; status.defaultParams += '&intro_pose_hold=1'; status.moPoseReady = false; status.isHash = false; }; const bindEvents = function () { window.addEventListener('DOMContentLoaded', onLoadHandler, { once: true }); window.addEventListener('message', onReceiveV3DMessage, false); //els.popupContents.addEventListener('scroll', onScrollPopupContents); els.viewerIframe.addEventListener('DOMContentLoaded', viewerEvents.onLoadLayerPopupIframe); els.popupScroll.addEventListener('click', layerPopupScrollHandler.onClickLayerScroll); resize.add(onResizeHandler); }; const onLoadHandler = function () { setViewerWrap.innerWrapHeight(); setViewerWrap.layerScroll(); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (utils.detector.isTouchDevice && !utils.detector.isIosDevice) setViewerWrap.innerWrapHeight(); setViewerWrap.layerScroll(); }; const setViewerWrap = { innerWrapHeight: function () { clearTimeout(els.resizeInnerTimeout); els.resizeInnerTimeout = setTimeout(function () { if (els.popupInner) { els.popupInner.style.height = parseInt(window.innerHeight * 0.9) + 'px'; } }, 0); }, layerScroll: function () { clearTimeout(els.resizeTimeout); els.resizeTimeout = setTimeout(function () { layerPopupScrollHandler.setLayerScroll(); }, 300); } }; const setPopup = function () { utils.layerPopup({ layerPopup: els.popup, layerPopupClass: '.highlights-viewer', openerEvent: { element: els.viewerBtn, }, closeCtas: [els.closeCta], moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.popup.classList.add('is-init'); viewerEvents.show(target.openerCta); }, end: function () { if (utils.detector.isIosDevice) els.popup.style.display = 'block'; els.popup.classList.add('is-open'); if (els.popup.classList.contains('is-info-open')) { setTimeout(function () { els.infoCloseBtn.focus(); }, 500); } } }, hide: { start: function () { els.popup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.popup.classList.remove('is-init'); }, 300); viewerEvents.hide(); } } }); }; const viewerEvents = { show: function (viewerOpener) { if (viewerOpener.classList.contains('viewer-btn')) { status.isHash = false; els.viewerOpener = viewerOpener; } else { status.isHash = true; els.viewerOpener = els.viewerBtn; } els.viewerModel = els.viewerOpener.getAttribute('data-model-name'); els.viewerColor = els.viewerOpener.getAttribute('data-model-color'); els.viewerIframe.setAttribute('src', getViewerUrl()); if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { viewerEvents.infoPopupShow(); } els.infoBtn.addEventListener('click', function () { viewerEvents.infoPopupShow(); setTimeout(function () { els.infoCloseBtn.focus(); }, 400); }); els.popupWrap.addEventListener('click', viewerEvents.onclickViewerDimmed); }, hide: function () { els.viewerModel = ''; els.viewerIframe.setAttribute('src', 'about:blank'); if (status.isHash) { setTimeout(function () { els.viewerOpener.focus(); }, 300); } }, infoPopupShow: function () { if (!els.popup.classList.contains('is-info-open')) { els.popup.classList.add('is-info-open'); els.infoCloseBtn.addEventListener('click', viewerEvents.infoPopupHide); els.infoDimmed.addEventListener('click', viewerEvents.infoPopupHide); setTimeout(function () { els.closeCta.setAttribute('tabindex', -1); els.closeCta.setAttribute('aria-hidden', true); els.infoBtn.setAttribute('tabindex', -1); els.infoBtn.setAttribute('aria-hidden', true); els.viewerContainer.setAttribute('tabindex', -1); els.viewerContainer.setAttribute('aria-hidden', true); }, 400); } }, infoPopupHide: function () { if (els.popup.classList.contains('is-info-open')) { els.popup.classList.remove('is-info-open'); setTimeout(function () { els.infoBtn.focus(); }, 300); setTimeout(function () { els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); els.infoBtn.removeAttribute('tabindex'); els.infoBtn.removeAttribute('aria-hidden'); els.viewerContainer.removeAttribute('tabindex'); els.viewerContainer.removeAttribute('aria-hidden'); }, 100); } }, onclickViewerDimmed: function (e) { if (e.currentTarget == e.target) { if (utils.detector.isIosDevice) els.viewerOpener.style.display = 'block'; els.popup.classList.remove('is-open'); document.documentElement.classList.remove('is-layer-open'); document.documentElement.style.overflow = ''; utils.visibleScroll(); utils.onAccessibility(els.popup); utils.offAccessibility(document.querySelector('#wrap')); setTimeout(function () { els.viewerOpener.focus(); }, 300); els.viewerModel = ''; els.viewerIframe.setAttribute('src', 'about:blank'); setTimeout(function () { els.popup.classList.remove('is-init'); }, 300); } }, onLoadLayerPopupIframe: function () { if (document.documentElement.classList.contains('color_yb') || (utils.getCookie('highContrastMode') != null && utils.getCookie('highContrastMode') == 1)) { els.viewerIframe.contentWindow.postMessage('V3D.highContrast.on', '*'); setTimeout(function () { els.viewerIframe.contentWindow.postMessage('V3D.highContrast.on', '*'); }, 300); } } }; const layerPopupScrollHandler = { setLayerScroll: function () { if (!els.popupContents) return; if (els.popupContents.scrollHeight > els.popupContents.clientHeight) { utils.offAccessibility(els.popupScroll); els.popupScroll && els.popupScroll.classList.add('is-scroll-btn'); } else { utils.onAccessibility(els.popupScroll); els.popupScroll && els.popupScroll.classList.remove('is-scroll-btn'); } }, onScrollPopupContents: function () { onUpdateLayerScroll(false); }, onClickLayerScroll: function (e) { e && e.preventDefault(); if (e.target.matches('.highlights-viewer__scroll-btn')) { let scrollDown = e.target.classList.contains('highlights-viewer__scroll-btn--down'), $popupContents = $(els.popupContents); if (scrollDown) { $popupContents.stop().animate({ scrollTop: $popupContents.scrollTop() + 100 }, { duration: 300, complete: function () { layerPopupScrollHandler.onUpdateLayerScroll(true); } }); } else { $popupContents.stop().animate({ scrollTop: $popupContents.scrollTop() - 100 }, { duration: 300, complete: function () { layerPopupScrollHandler.onUpdateLayerScroll(true); } }); } } }, onUpdateLayerScroll: function (isClicked) { const offsetTop = els.popupContents.scrollTop, layerBottom = els.popupContents.scrollHeight - els.popupContents.clientHeight; els.popupScrollUpBtn.removeAttribute('tabindex'); els.popupScrollUpBtn.removeAttribute('aria-hidden'); els.popupScrollUpBtn.removeAttribute('disabled'); els.popupScrollDownBtn.removeAttribute('tabindex'); els.popupScrollDownBtn.removeAttribute('aria-hidden'); els.popupScrollDownBtn.removeAttribute('disabled'); if (offsetTop == 0) { isClicked && els.popupScrollDownBtn && els.popupScrollDownBtn.focus(); els.popupScrollUpBtn.setAttribute('tabindex', '-1'); els.popupScrollUpBtn.setAttribute('aria-hidden', 'true'); els.popupScrollUpBtn.setAttribute('disabled', 'disabled'); } else if (offsetTop >= layerBottom - 1) { isClicked && els.popupScrollUpBtn && els.popupScrollUpBtn.focus(); els.popupScrollDownBtn.setAttribute('tabindex', '-1'); els.popupScrollDownBtn.setAttribute('aria-hidden', 'true'); els.popupScrollDownBtn.setAttribute('disabled', 'disabled'); } } }; const onReceiveV3DMessage = function (e) { if (e.data == 'V3D.state.popOpen') { if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { if (els.closeCta) { if (!els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.add('is-popup-opened'); els.closeCta.setAttribute('tabindex', '-1'); els.closeCta.setAttribute('aria-hidden', 'true'); els.closeCta.setAttribute('disabled', 'disabled'); } if (els.infoBtn) { els.infoBtn.setAttribute('tabindex', '-1'); els.infoBtn.setAttribute('aria-hidden', 'true'); } } } else if (e.data == 'V3D.state.popClose') { if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { if (els.closeCta) { if (els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.remove('is-popup-opened'); els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); els.closeCta.removeAttribute('disabled'); } if (els.infoBtn) { els.infoBtn.removeAttribute('tabindex'); els.infoBtn.removeAttribute('aria-hidden'); } } } else if (e.data == 'V3D.state.introPose.ready') { if (currDevice.indexOf('desktop') > -1) { els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*'); } status.moPoseReady = true; setTimeout(function () { status.moPoseReady = false; }, 2000); } else if (e.data == 'V3D.state.localData.ready') { els.viewerIframe && els.viewerIframe.contentWindow.postMessage(JSON.stringify(V3DLOCALDATA), '*'); } }; const getViewerUrl = function () { let viewerUrl = status.viewerBaseUrl; let viewerModelList = 'galaxy-s24,galaxy-s24-plus'; let isbasicLineShow = (!V3DLOCALDATA['galaxy-s24-plus']) || (!!V3DLOCALDATA['galaxy-s24-plus'] && V3DLOCALDATA['galaxy-s24-plus'].color.length == 0) let isPlusLineShow = (!V3DLOCALDATA['galaxy-s24']) || (!!V3DLOCALDATA['galaxy-s24'] && V3DLOCALDATA['galaxy-s24'].color.length == 0); if (isbasicLineShow) { viewerModelList = 'galaxy-s24'; } else if (isPlusLineShow) { viewerModelList = 'galaxy-s24-plus'; } // model_name viewerUrl += 'model_name=' + els.viewerModel + '&model_list=' + viewerModelList; if (document.documentElement.classList.contains('color_yb') || (utils.getCookie('highContrastMode') != null && utils.getCookie('highContrastMode') == 1)) { viewerUrl += '&highcontrast=1'; } else { viewerUrl += '&highcontrast=0'; } // RTL utils.isRTL() && (viewerUrl += '&rtl=1'); viewerUrl += status.defaultParams; viewerUrl += '#color=' + (els.viewerColor ? els.viewerColor : 'null'); return viewerUrl; }; return { init: init } })(); })(); (function () { window.flagship = window.flagship || {}; window.flagship.highlights = window.flagship.highlights || {}; window.flagship.highlights.ytPopup = (function () { let els = {}; const utils = window.flagship.common.utils; const init = function () { els.layerPopup = document.querySelector('.common-youtube-popup'); if (!!els.layerPopup) { setElements(); setPopup(); } }; const setElements = function () { els.contents = document.querySelector('#contents'); els.openCtas = document.querySelectorAll('.js-youtube-popup'); els.closeCta = document.querySelector('.common-youtube-popup__close-cta'); els.ytIframe = els.layerPopup.querySelector('.common-youtube-popup__iframe > iframe'); els.ytDesc = els.layerPopup.querySelector('.youtube-player__desc'); els.dimmed = els.layerPopup.querySelector('.common-youtube-popup__close-area'); }; const setPopup = function () { for (let i = 0; i < els.openCtas.length; i++) { utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.common-youtube-popup', openerEvent: { element: els.openCtas[i], }, closeCtas: [els.closeCta], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function () { els.layerPopup.classList.add('is-yt-open'); }, end: function (target) { eventList.setYoutube(target); } }, hide: { start: function () { els.layerPopup.classList.remove('is-yt-open'); }, end: function (target) { eventList.clearYoutube(); } } }); } }; const eventList = { setYoutube: function (target) { let opener = target.openerCta, ytSrc = 'htt' + 'ps://www.youtube.com/embed/' + opener.getAttribute('data-youtube-id') + '?wmode=opaque&rel=0&enablejsapi=1&version=3&autoplay=1', ytTitle = opener.getAttribute('data-youtube-title'), ytBlind = opener.querySelector('.blind').innerHTML; els.ytIframe.setAttribute('src', ytSrc); els.ytIframe.setAttribute('title', ytTitle); els.ytDesc.innerHTML = ytBlind; els.OpenerTarget = opener; }, clearYoutube: function () { els.ytIframe.removeAttribute('src'); els.ytDesc.innerHTML = ''; } }; return { init: init, } })(); })(); (function () { window.flagship.common.resize.bindEvent(); var initComponents = function () { flagship.highlights.accordion.init(); flagship.highlights.scrollVideo.init(); flagship.highlights.clickToVideo.init(); flagship.highlights.overview.init(); flagship.highlights.quote.init(); flagship.highlights.designSpecPopup.init(); flagship.highlights.color.init(); flagship.highlights.viewer.init(); flagship.highlights.cameraAi.init(); flagship.highlights.resolutionPopup.init(); flagship.highlights.nightography.init(); flagship.highlights.opticalZoom.init(); flagship.highlights.dayPopup.init(); flagship.highlights.liveTranslatePopup.init(); flagship.highlights.aod.init(); flagship.highlights.experiences.init(); flagship.highlights.faq.init(); flagship.highlights.ytPopup.init(); flagship.highlights.tutorial.init(); flagship.highlights.generativeEditTutorial.init(); flagship.highlights.circleToSearchTutorial.init(); flagship.highlights.liveTranslateTutorial.init(); flagship.highlights.chatAssistTutorial.init(); flagship.highlights.innerPopup.init(); }; initComponents(); })(); });

      • Galaxy S24 y S24+ | Galaxy AI | Samsung Argentina (2024)

        References

        Top Articles
        Latest Posts
        Article information

        Author: Carlyn Walter

        Last Updated:

        Views: 6136

        Rating: 5 / 5 (70 voted)

        Reviews: 93% of readers found this page helpful

        Author information

        Name: Carlyn Walter

        Birthday: 1996-01-03

        Address: Suite 452 40815 Denyse Extensions, Sengermouth, OR 42374

        Phone: +8501809515404

        Job: Manufacturing Technician

        Hobby: Table tennis, Archery, Vacation, Metal detecting, Yo-yoing, Crocheting, Creative writing

        Introduction: My name is Carlyn Walter, I am a lively, glamorous, healthy, clean, powerful, calm, combative person who loves writing and wants to share my knowledge and understanding with you.