Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (2024)

World on my Watch

Galaxy Watch6 Series

BUY NOW

PRE-REGISTER

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (1)

*Image simulated & colors subject to availability.

Movie player Layer

The watch that knows you best is back with a more personalized health experience and better yet, upgraded sleep tracking. Start off your day with a good night's sleep with Sleep coaching now available on Galaxy Watch6.

Galaxy Watch6Start your everyday wellness journey

Sleep Tracking
Display
Health
Customize

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (4)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (5)

Galaxy Watch6 can be seen displaying Sleep score screen. The progress bar is advancing as the sleep score '82' appears with the text 'Excellent' below. The sleep animal, a lion, appears at the bottom of the screen.

Develop healthy sleeping habits Go to Sleep Tracking

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (7)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (8)

Galaxy Watch6 can be seen rotating and then facing the front. Black margin of the display is being reduced to emphasize the larger display.

Large space to view, tap, swipe and scroll Go to Display

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (10)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (11)

GUI of ECG being measured can be seen, with the measure time changing from 15 to 10 seconds and the bpm changing between 72 and 77. Under the numbers is a moving graph illustrating the heartbeat.

Get detailed insights on your body and wellness Go to Health

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (13)

Set your own goals and get tips on your fitness journey Go to Exercise

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (15)

Express your own unique style Go to Customize

Display Sleep Tracking Health Exercise Cusotmize

Close Popup

More screen.

Thinner bezel

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (17)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (18)

20% larger
30% slimmer

Get even more info at a glance on up to 20% more display. The up to 30% slimmer black margin makes way for Galaxy Watch's biggest screen yet, and more space for self expression with customizable watch faces.1, 2

Introducing
a slimmer form

Two Galaxy Watch6 can be seen. The first one is positioned to show its thinness. The second one is zoomed in to emphasize the slim design of Galaxy Watch6.

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (19)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (20)

Style and comfort join forces in this slimmer, sleeker shape. Galaxy Watch6 has been redesigned with a trimmed-down watch form, making it easier to wear. The seamless fit and timeless circular design are an ultra-comfortable, lightweight trick up your sleeve.3

Switching bands is One-Click easy

Press the band release button to detach your watch straps easily. Swap them out to change from workout to go-out styles with just one touch. The band guide makes it easy to align, with a satisfying click once it's reattached.4

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (21)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (22)

Galaxy Watch6 watch band can be seen being attached to illustrate the easiness of the one-click release button.

Scratches are no
match for Sapphire
Crystal glass

Ready for anything, rain or shine. Ultra-durable Sapphire Crystal glass makes for a resilient and sturdy watch display, while IP68 and 5ATM ratings mean your watch is tough enough to stay with you on your adventures.5, 6

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (23)

Defy the dangers of dust

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (24)

Afraid of water? Not on our watch

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (25)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (26)

Galaxy Watch6 can be seen facing upward with the display zoomed in, with waterdrops next to the Watch to indicate that it is waterproof. A gleam of light goes over the display to emphasize the durability of the Sapphire Crystal glass.

18% faster processor

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (27)

Lasts 40 hours

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (28)

Charge up
in
record time

With one full charge, the watch lasts up to 40 hours. Fast charge the watch to 45% in just 30 minutes and you're all set to explore the great outdoors or enjoy a well-deserved break in bed.7, 8, 9

Up to 45 %

charged in 30 min

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (29)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (30)

Front view of Galaxy Watch6 can be seen with the charging screen GUI on display. The number on the screen goes up from '50%' to '100%', implying the battery is being fully charged.

Our most powerful watch ever

The upgraded processor makes Galaxy Watch6 18% faster than before, improving app launch speed. So whether you're starting off the day with a run or settling in for the night, it keeps up with every gesture.3

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (31)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (32)

Galaxy Watch6 processor is being assembled with the bezel and display.

Better days
begin with
better nights

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (33)

Understand your nights to make the most of your days. Wear your Galaxy Watch6 to bed and monitor your nightly sleep stage, sleep score and sleep consistency to improve your sleep. And now you can access Sleep Coaching directly on your watch, so you can check tips right on your wrist.10, 11, 12, 13, 14, 15, 16

Information on the time spent in each sleep stage can be seen: Awake 35m, REM 1h 30m, Light 4h 30m, Deep 55m. The information is also displayed as a graph.

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (34)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (35)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (36)

Better together

Fabric Band

Light and comfortable Optimized for sleep

Learn more

A heart monitoring package that watches over you

Lessen your worries with a heart monitoring package that brings you peace of mind, so you can focus on your day. The built-in PPG sensor periodically measures heart rate and heart rhythm while you wear your Galaxy Watch6, and will alert you if your heart rate is too high or too low. It will also send you a notification if it detects an irregular heart rhythm, along with a prompt to take an ECG to examine your heart rhythm in more detail.18, 19, 20

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (39)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (40)

GUI of ECG being measured can be seen, with the measure time changing from 26 to 31 seconds and the bpm changing between 72 and 77. Under the numbers is a moving graph illustrating the heartbeat.

Add a quick BP check to your wellness routine

Maintain a healthy lifestyle by adding a quick blood pressure check to your daily routine. Measure and track your blood pressure right on your wrist with Galaxy Watch6. No additional equipment required!21, 22, 23, 24

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (41)

Know your body inside and out with BIA

Skip the clunky machines - collect data on your body any time you like, with the Bioelectrical Impedance Analysis (BIA) sensor on your Galaxy Watch6. These measurements will help you take a data-driven approach to monitor your body and health better and set personalized fitness goals.25, 26, 27

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (42)

Safety features for your peace of mind

Your watch is on standby in case of an emergency. Should you take a tumble, Fall Detection will catch it and ask if you need help. For other emergencies, simply press the home button five times to send SOS to emergency services. When help arrives, quickly access your Medical info from the lock screen with a single tap. Rest assured, now you're in good hands.28, 29, 30, 31

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (43)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (44)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (45)

Daily activity screen can be seen, with the progress bars advancing.

Exercise tracking - Monitor your
fitness journey

Record each of your physical accomplishments, and check all of your progress with Galaxy Watch6. Track your movements for over 90 workouts, including indoor swimming and yoga, or you can even create your own custom workout. Forget to hit start? Your watch will automatically recognize and record select workouts such as running, walking and now, even cycling, so you don't lose precious data.27, 32, 33

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (46)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (47)

Different workout icons can be seen. In the middle is the cycling icon with the person sitting upright. The person begins cycling and slowly bends forward as other workout icons appear from the right.

Set your perfect
intensity with
personalized HR Zone

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (48)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (49)

Set a personalized HR Zone. Or just start running and Galaxy Watch6 will measure your heart rate based on your fitness capacity and optimize an HR Zone that suits you. Once set, you can get notified when you enter your goal HR Zone and make sure you're still in the zone as you move, run and work out to your own beat.34

Snap remote
Galaxy Z Flip5 photos from
your watch

Pair your watch with Galaxy Z Flip5 to capture the healthy you up close or from a distance. Galaxy Z Flip5's Flex mode and Camera Controller let you easily switch between photo and video mode, or zoom in and out, all from the comfort of your wrist. Then tap the shutter button on your watch to take a pic.35, 36

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (50)

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (51)

On the right is Galaxy Z Flip5 on Flex mode. On the left is Galaxy Watch6 displaying the same screen as Galaxy Z Flip5, illustrating the Camera Controller feature.

More than just a watch

Way more than just a clock. With Galaxy Watch6, you can still text, call, stream music and more, even without your phone. Stay productive and carry on with your day.37, 38

Call Text Stream Music

Call Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (52)

Text Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (53)

Stream Music Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (54)

International Roaming keeps contacts close

Explore the world without getting lost. International Roaming on Galaxy Watch6 allows you to use the map to find your way to landmarks, all from your watch. If you do get into trouble, no need to worry — you'll be able to make calls or send texts to ask for help.39, 40

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (55)

Samsung Wallet is available on your watch

Don't fumble in your pockets or rummage through your bag looking for cash or cards — you've got Samsung Wallet for that. Now you can pay and ride without taking out your phone, because everything you need is just a swipe or tap away.41

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (56)

Customize to suit your personality

Make Galaxy Watch6 uniquely your own. Choose from a wide collection of bands in different styles and materials. You can also customize your watch face with your favorite colors, complications, designs or even photos of your pet. The only limit is your imagination.4

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (57)

Switch, upgrade and trade.
It's all easy

Watch how easy switching is

Smart Switch is the sure and secure way to transfer your data to Galaxy. Take all your apps, watch faces, settings and more, with you when you make the switch.42, 43, 44, 45

LEARN MORE

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (58)

It's time to find your Watch

  • Galaxy Watch6

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (59)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (60)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (61)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (62)

    Learn More

    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (63) Display Sapphire Crystal
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (64) Screen Size 37.3mm | 33.3mm
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (65) Fast Charge8, 9 Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (66)
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (67) Infrared
      Temperature
      Sensor
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (68)
    • Material Armor
      Aluminum
    • Battery
      (typical)7
      425mAh |
      300mAh
    • Sleep
      Tracking
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (69)
    • Body
      Composition
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (70)
    • Route
      Workout /
      Track Back
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (71)
    • Durability 5ATM+IP68/
      MIL-STD-810H
    • Size 44mm | 40mm
    • Weight 33.3g | 28.7g
  • Galaxy Watch6 Classic

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (72)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (73)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (74)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (75)

    Learn More

    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (76) Display Sapphire Crystal
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (77) Screen Size 37.3mm | 33.3mm
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (78) Fast Charge8, 9 Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (79)
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (80) Infrared
      Temperature
      Sensor
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (81)
    • Material Stainless Steel
    • Battery
      (typical)7
      425mAh |
      300mAh
    • Sleep
      Tracking
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (82)
    • Body
      Composition
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (83)
    • Route
      Workout /
      Track Back
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (84)
    • Durability 5ATM+IP68/
      MIL-STD-810H
    • Size 47mm | 43mm
    • Weight 59.0g | 52.0g
  • Galaxy Watch4

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (85)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (86)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (87)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (88)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (89)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (90)

    Buy Now

    Learn More

    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (91) Display Corning®
      Gorilla® Glass
      with DX+
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (92) Screen Size 34.6mm | 30.4mm
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (93) Fast Charge46 Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (94)
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (95) Infrared
      Temperature
      Sensor
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (96)
    • Material Armor
      Aluminum
    • Battery
      (typical)46
      361mAh |
      247mAh
    • Sleep
      Tracking
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (97)
    • Body
      Composition
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (98)
    • Route
      Workout /
      Track Back
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (99)
    • Durability 5ATM+IP68/
      MIL-STD-810G
    • Size 44mm | 40mm
    • Weight 30.3g | 25.9g
  • Galaxy Watch5 Pro

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (100)

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (101)

    Buy Now

    Learn More

    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (102) Display Sapphire Crystal
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (103) Screen Size 34.6mm
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (104) Fast Charge47 Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (105)
    • Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (106) Infrared
      Temperature
      Sensor
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (107)
    • Material Titanium
    • Battery
      (typical)48
      590mAh
    • Sleep
      Tracking
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (108)
    • Body
      Composition
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (109)
    • Route
      Workout /
      Track Back
      Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (110)
    • Durability 5ATM+IP68/
      MIL-STD-810H
    • Size 45mm
    • Weight 46.5g

Join the Flip side

Go to galaxy Z flip5

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (111)

Unfold your world

Go to galaxy Z fold5

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (112)

Galaxy
Tab S9 | S9+ | S9
Ultra

Go to galaxy tab s9

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (113)

Galaxy Watch6 Classic

Go to galaxy watch6 classic

Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (114)

C C

  1. Galaxy Watch6 display size is compared to that of Galaxy Watch5.
  2. The screen size and black margin comparisons are based on Galaxy Watch6 40mm model. Based on Galaxy Watch6 44mm model, the screen size and black margin comparisons are 16.5% and 28%, respectively.
  3. Compared to Galaxy Watch5.
  4. Availability of Watch bands may vary by country or region. Additional Watch bands are sold separately.
  5. Galaxy Watch6 is water resistant to up to 50 meters in depth for 10 minutes under the 5ATM rating. It is not suitable for diving or high-pressure water activities. If the device or your hands are wet, they must be dried thoroughly prior to handling. Galaxy Watch6 provides ingress protection (IP68) against dust and fresh water to a maximum of 1.5 meters for up to 30 minutes. Refer to user manual for further information, including care/use instructions.
  6. Based on Vickers hardness measured with constant load of 200gf.
  7. Actual battery life may vary depending on network environment, usage patterns and other factors.
  8. Testing conducted by Samsung using pre-released version of Galaxy WatchX (BT & LTE), each paired to a Samsung phone; all devices tested with prerelease software, Galaxy Watch Magnetic Fast Charging USB C Cable (EP-OR900), and Samsung 25W USB C Power Adapter (EP-TA800). Charge time varies with region, settings, usage pattern and environmental factors; actual results may vary.
  9. Samsung 25W USB C Power Adapter (EP-TA800) sold separately.
  10. Requires Samsung Health application version 6.24 or later.
  11. Galaxy Watch6 must be paired with a Samsung Galaxy smartphone with Android 10.0 and minimum 1.5GB Memory.
  12. Sleep tracking features are intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment of any medical condition or sleep disorder. The measurements are for your personal reference only. Please consult a medical professional for advice.
  13. Sleep Coaching requires sleep data of at least 7 days, including 2 days off.
  14. Availability of blood oxygen level feature may vary by country or regions.
  15. Invisible LED is enabled when sleep mode is turned on.
  16. Fabric Band is sold separately and compatible with Galaxy Watch4 and later released Galaxy Watch series. Availability of watch bands may vary by country/region or carrier
  17. Cycle Tracking is available for cycle and period prediction which is powered by Natural Cycles. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), Cycle Tracking based on skin temperature only works on phones and watches purchased in the countries where the service is currently available. NOT INTENDED FOR CONTRACEPTION. If you are currently taking hormonal birth control or undergoing hormonal treatment that inhibits ovulation, this service will not be useful for tracking ovulation. Predictions displayed are for personal reference only. To improve the accuracy of predictions, it is recommended to wear your watch for at least 4 hours during sleep, 5 times a week. Predictions may vary depending on the proper use of your watch, input data, environmental conditions, etc. Intended for users 18 years old and above. Users should not interpret or take clinical action based on the predictions made without consultation of a qualified healthcare professional. Requires latest version of Samsung Health app.
  18. HR alerts is intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment, monitoring or management of any medical condition or disease. Any health-related information accessed through the device and application should not be treated as medical advice. Users should seek any medical advice from a physician.
  19. Availability of Irregular Heart Rhythm Notification (IHRN) feature may vary by country or region. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), it only works on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries). Not intended to provide a notification on every episode of irregular rhythm suggestive of AFib and the absence of a notification is not intended to indicate no disease process is present. It is not intended for users with other known arrhythmias or users under 22 years old. Users should not interpret or take clinical action based on the predictions made without consultation of a qualified healthcare professional.
  20. Availability of ECG app may vary by country or region. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), ECG app only works on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries). Check out https://www.samsung.com/apps/samsung-health-monitor for more information and latest update on service countries. It is not intended for users by people under 22 years old. Users should not interpret or take clinical action based on the device output without consultation of a qualified healthcare professional.
  21. For accurate blood pressure readings, a calibration is required every 4 weeks by BP monitor & arm cuff. Requires a Galaxy smartphone running Android 10.0 or above.
  22. Availability of Blood pressure app may vary by country or region. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), Blood pressure app only works on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries). Check out https://www.samsung.com/apps/samsung-health-monitor for more information and latest update on service countries. It is not intended for use by people under 22 years old.
  23. Users should measure their blood pressure when at rest, as they would do with a traditional cuff, and refrain from measuring when they are working out, smoking, or drinking. Blood pressure app is not intended for any diagnostic purposes regarding hypertension or other heart conditions or users under 22 years old. Users should not interpret or take clinical action based on the device output without consultation of a qualified healthcare professional. Blood pressure app is not intended to replace traditional methods of diagnosis or treatment.
  24. Measured blood pressure history can be reviewed within the Samsung Health Monitor app on a paired smartphone.
  25. Not intended for use in detection, diagnosis, treatment. Intended for general wellness and fitness purposes only.
  26. Body composition is only supported in Samsung Galaxy Watch4 series and later released Galaxy Watch models. Body composition should not be used if you have an implanted pacemaker or other implanted medical devices, or if you are pregnant. Any health-related information accessed through the device and application should not be treated as medical advice. Measurement results may not be accurate if you are under 20 years old. The measurements are for your personal reference only. Please consult a medical professional for advice.
  27. Compatible smartphones and available features may vary by country/region, carrier or device.
  28. Galaxy Watch6 must have the latest Wear OS version installed.
  29. Detect falls feature must be enabled on the Galaxy Wearable app on your Galaxy smartphone to use Fall Detection on the watch.
  30. Emergency call requires network connection or pairing with Galaxy smartphone.
  31. Information gathered from the watch, Samsung Health app or related software is not intended to diagnose, cure, mitigate, treat or prevent disease or other conditions.
  32. Auto detect workouts must be turned on in Settings. Auto detect is not available for all workouts.
  33. Only available on Galaxy Watch6 series and must be paired with a compatible mobile device.
  34. To update the ranges of each HR zone for running based on cardiopulmonary capabilities, it is required to run outdoors more than 10 min with constant speed of 4km/h or faster.
  35. Galaxy Z Flip5 sold separately.
  36. Camera Controller is supported on Galaxy Watch4 and later released Galaxy Watch models when paired with Galaxy S9 series and later. Camera Controller zoom feature is available on Samsung Galaxy Watch4 series and later released Galaxy Watch models that are paired with a Galaxy S series, Galaxy Note series and Galaxy Z series smartphone running One UI 5.1 or above with Camera Controller support.
  37. LTE connection required to use select features on Galaxy Watch6. LTE connectivity only available in LTE models.
  38. Not all apps and services are compatible with Wear OS.
  39. Available on LTE models.
  40. Enabling International Roaming may result in roaming charges depending on your smartphone carrier's plan.
  41. The availability of Samsung Wallet and its features may vary by country or region.
  42. Bluetooth, Wi-Fi or LTE connection is required.
  43. Third-party apps must be downloaded separately.
  44. Compatible with Galaxy Watch in Wear OS powered by Samsung. Requires pairing with smartphone with latest version of Smart Switch installed.
  45. Data and content available for transfer may vary by OS.
  46. The typical capacity has been tested under third party laboratory conditions. The typical capacity is the estimated average capacity considering the deviation in battery capacity among the battery samples tested under the IEC 61960-3 standard.
  47. Testing conducted by Samsung in June 2022 using pre-released version of Galaxy Watch5 (BT & LTE), each paired to a Samsung phone; all devices tested with prerelease software, Galaxy Watch Magnetic Fast Charging USB C Cable (EP-OR900), and Samsung 25W USB C Power Adapter (EP-TA800). Charge time varies with region, settings, usage pattern and environmental factors; actual results may vary.
  48. The typical capacity has been tested under third party laboratory conditions. The typical capacity is the estimated average capacity considering the deviation in battery capacity among the battery samples tested under the IEC 61960-3 standard. Rated capacity is 573mAh. Actual battery life may vary depending on network environment, usage patterns and other factors.

"); } else { $yvSlide.find("li:last > div").attr("role", "list").append('

' + yvThumbArray[i] + "

"); } } var omniTxt = modelData + $yvSlidePagingOmni; $yvSlide.find("li").each(function (i) { var n = i * thumbLength; var title = yvTitleArr.slice(n, n + thumbLength).toString(); $('' + pageTitle + " " + (i + 1) + ":" + title + "").appendTo($yvSlidePaging); }); $yvSlide.find("li").each(function () { if ($(this).find("> div .thumb").length < 2) { $(this).find("> div").removeAttr("role"); $(this).find("> div .thumb").removeAttr("role"); } }); var meetSwipe = GALAXY.swipeAble; if (($html.hasClass("ie") || $html.hasClass("edge")) && $html.hasClass("rtl")) { meetSwipe = false; } var isArrow = false; var $prev = $yvWrap.find(".m_btn_type1-prev"); var $next = $yvWrap.find(".m_btn_type1-next"); $prev.on('click', function () { isArrow = true; }); $next.on('click', function () { isArrow = true; }); $yvSlide.xlider({ swipe: meetSwipe, endless: true, arrows: [$yvWrap.find(".m_btn_type1-prev"), $yvWrap.find(".m_btn_type1-next")], paging: $yvSlidePaging, onMove: function onMove() { $yvSlideWrap.find("li").removeClass("view").removeAttr("aria-hidden tabindex"); $yvSlideWrap.removeClass("ie-error"); }, onChange: function onChange(idx, max) { if (idx == 0) { $next.removeClass('disabled'); $prev.addClass('disabled'); if (isArrow) { setTimeout(function () { $next.focus(); }, 300); } } else if (idx == max - 1) { $next.addClass('disabled'); $prev.removeClass('disabled'); if (isArrow) { setTimeout(function () { $prev.focus(); }, 300); } } else { $next.removeClass('disabled'); $prev.removeClass('disabled'); } $yvSlideWrap.find("li").removeClass("view").removeAttr("aria-hidden tabindex"); $yvSlideWrap.removeClass("ie-error"); }, onChangeEnd: function onChangeEnd(i) { var select = $yvSlidePaging.data("btn-title"); sliderOmni.remove(); $yvSlideWrap.find(".xlider-current").removeClass("view").siblings().addClass("view").attr({ "aria-hidden": "true", tabindex: -1 }); $yvSlidePaging.find("a").eq(i).attr("title", select).siblings().attr("title", ""); $yvSlideWrap.addClass("ie-error"); isArrow = false; } }); $yvWrap.off("mousedown.yv keydown.yv").on("mousedown.yv keydown.yv", ".slide-paging a, .arrow-wrap a", function (e) { sliderOmni.add(e, this); }); $yvSlide.find("li").each(function () { if ($(this).find(".thumb").length == 1) { $(this).removeAttr("role").find(".thumb").removeAttr("role"); } }); } else { $yvWrap.addClass("no-slide"); } }; var yvLoad = function yvLoad() { // if (!yvLoaded && window.pageYOffset > 10) { yvLoaded = true; GALAXY.sizeMode && $yvSlide.find("img").each(function (i, img) { this.src = GALAXY.getImageSources($(img))[GALAXY.sizeMode]; img.src = img.getAttribute("data-media-s4"); if (GALAXY.sizeMode >= 3) { img.src = img.getAttribute("data-media-s4"); } else if (GALAXY.sizeMode <= 2) { img.src = img.getAttribute("data-media-s2"); } }); // } }; var yvSlideDestroy = function yvSlideDestroy() { yvThumbArray = []; $yvSlidePaging.html(""); $yvSlide.removeAttr("style").xlider("remove"); $yvSlide.html(yvSlideHtml); $yvSlide.attr("role", "list"); $yvWrap.addClass("no-slide").addClass("set-youtube"); yvLoaded = false; setTimeout(function () { yvLoad(); }, 10); }; // quote slide var $quoteWrap = $('.quote-wrap'); var $quoteSlideWrap = $('.quote-slide'); var $quoteSlide = $quoteSlideWrap.find('.quote-list'); var $quoteSlidePaging = $quoteWrap.find('.slide-paging'); var $quoteSlidePagingOmni = $quoteSlidePaging.data('indicator-omni'); var quoteSlideHtml = $quoteSlide.html(); var quoteBoxArray = []; var quoteTitleArr = []; var quoteSlideInit = function () { if($quoteWrap.hasClass('no-slide')) $quoteWrap.removeClass('no-slide'); var quateLength; if($('html').hasClass('s34')) { quateLength = ($quoteSlide.find('.quote-item').length > 3) ? true : false; }else if($('html').hasClass('s2')){ quateLength = ($quoteSlide.find('.quote-item').length > 2) ? true : false; }else { quateLength = ($quoteSlide.find('.quote-item').length > 2) ? true : false; } if(quateLength){ GALAXY.unResize(quoteListHeight); GALAXY.resize(quoteListHeight); $quoteSlide.find('.quote-item').each(function(i) { var thisHtml = $(this).html(); quoteBoxArray.push(thisHtml); quoteTitleArr.push($(this).find('strong').text()); }); var pageTitle = $quoteSlidePaging.data('page-title'); $quoteSlide.attr('role','list'); $quoteSlide.html(''); for(var i=0; i

'+'

'+quoteBoxArray[i]+'

'+''); if(i%2 != 0)$quoteSlide.find('li:last-child').append('

'+quoteBoxArray[i]+'

'); }else{ if(i%3 == 0)$quoteSlide.append('
  • '+'

    '+quoteBoxArray[i]+'

    '+'
  • '); if(i%3 != 0)$quoteSlide.find('li:last-child').append('

    '+quoteBoxArray[i]+'

    '); } } var omniTxt = modelName+$quoteSlidePagingOmni; $quoteSlide.find('li').each(function(i) { var quateContLength = $(this).find('.quote-item').length var title = ($html.hasClass('s12')) ? quoteTitleArr.slice(i*2,(i*2)+quateContLength).toString() : quoteTitleArr.slice(i*3,(i*3)+quateContLength).toString(); $('
  • '+pageTitle +' '+ (i+1) +':'+title + '
  • ').appendTo($quoteSlidePaging); }); var meetSwipe = GALAXY.swipeAble; if ($html.hasClass('ie') && $html.hasClass('rtl')) { meetSwipe = false; } if ($html.hasClass('edge') && $html.hasClass('rtl')) { meetSwipe = false; } $quoteSlide.xlider({ swipe: meetSwipe, endless:true, arrows: [$quoteWrap.find('.m_btn_type1-prev'),$quoteWrap.find('.m_btn_type1-next')], paging: $quoteSlidePaging, onMove:function(){ $quoteSlideWrap.find('li').removeClass('view').removeAttr('aria-hidden tabindex'); $quoteSlideWrap.removeClass('ie-error'); }, onChange:function(){ $quoteSlideWrap.find('li').removeClass('view').removeAttr('aria-hidden tabindex'); $quoteSlideWrap.removeClass('ie-error'); }, onChangeEnd: function(i){ var select = $quoteSlidePaging.data('btn-title'); sliderOmni.remove(); $quoteSlideWrap.find('.xlider-current').removeClass('view').siblings().addClass('view').attr({'aria-hidden': 'true', 'tabindex': -1}); $quoteSlidePaging.find('li').eq(i).find('a').attr('title', select).closest('li').siblings().find('a').attr('title',''); $quoteSlideWrap.addClass('ie-error'); } }); $quoteWrap.off('mousedown.quot keydown.quot').on('mousedown.quot keydown.quot', '.slide-paging a', function(e){ sliderOmni.add(e, this); }); quoteListHeight(); } else { $quoteWrap.addClass('no-slide'); } } var quoteListHeight = function() { var max = 0; $quoteSlide.find('li').css({height:''}).each(function() { max = Math.max($(this).outerHeight(), max); }).css({height: max}); } var quoteSlideDestroy = function () { quoteBoxArray = []; $quoteSlidePaging.html(''); $quoteSlide.removeAttr('style').xlider('remove'); $quoteSlide.html(quoteSlideHtml); $quoteSlide.attr('role','list'); $quoteWrap.addClass('no-slide'); $quoteWrap.addClass('set-quateSlide'); $quoteSlide.find('li').css({height:''}).attr('role','presentation'); setTimeout(function () { $quoteSlide.find('img').each(function () { $(this).attr('src', $(this).attr('data-media-s4')); }); },10); } var changeSizeMode = GALAXY.sizeMode; GALAXY.load(function () { yvSlideDestroy(); yvSlideInit(); quoteSlideDestroy(); quoteSlideInit(); }); GALAXY.resize(function () { var _sizeMode = GALAXY.sizeMode; if (_sizeMode != changeSizeMode) { changeSizeMode = _sizeMode; yvSlideDestroy(); yvSlideInit(); quoteSlideDestroy(); quoteSlideInit(); } }); GALAXY.scroll(function () {// yvLoad(); }); // youtube modals var $opener = null; $(".youtube-wrap").on("click", "a", function (e) { e.preventDefault(); $opener = $(this); GALAXY.vodPlayer.show(this.href, this, true); var $desc = $(this).parent().find(".youtube-desc").length ? $(this).parent().find(".youtube-desc").clone().removeAttr("aria-hidden") : null; var $ytModal = $(".m_layer-youtube.show"); if ($("html").hasClass("safari") && $("html").hasClass("mobile")) $("html").css("height", "100vh"); $ytModal.find("h3").empty().text(""); $ytModal.find("iframe").attr("title", $(this).find("img").attr("alt")); setTimeout(function () { $ytModal.find(".c_btn_close-type1").focus(); }, 1500); $ytModal.on("click", ".modals_close-area", function (e) { $ytModal.find(".c_btn_close_area button").trigger("click"); if ($("html").hasClass("safari") && $("html").hasClass("mobile")) $("html").css("height", ""); }); if ($desc != null) $ytModal.find(".m_video_view").append($desc); if (GALAXY.isGalaxy && $(this).parents(".youtube-slide").length) GALAXY.omniture($(this).attr("data-omni")); if ($("html").hasClass("dotcom")) { accessibillityLayers.on($("#teconsent, .QSIFeedbackButton")); $("html").addClass("is-modal-opened"); } }); //wa $(document).on("click", ".m_layer-youtube .c_btn_close-type1", function (e) { if ($("html").hasClass("dotcom")) { accessibillityLayers.off($("#teconsent, .QSIFeedbackButton")); $("html").removeClass("is-modal-opened"); $('#QSIFeedbackButton-btn').css('width', '37px'); } setTimeout(function () { $opener && $opener.blur(); }, 500); setTimeout(function () { $opener && $opener.focus(); $opener = null; }, 2000); }); // overview nav $(".overview-nav a").on("click", function (e) { var scrollTimeout = null; var $target = $($(this).attr("href")); var duration = 750; if ($target.length) { GALAXY.setSmoothScrollTop($target.offset().top, duration, function () { clearTimeout(scrollTimeout); scrollTimeout = setTimeout(function () { $target.find("button").focus(); }, 300); }); } e.preventDefault(); });}();var overview = function overview(section, options) { var $section = $(section); if (!$section.length) return false; if ($('html').hasClass('ie') || $('html').hasClass('sL')) { var $texts = $section.find('.text-item'); $texts.length && $texts.each(function (idx, e) { var $text = $(e); var io = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { $texts.removeClass('active'); $text.addClass('active'); } else $text.removeClass('active'); }); }, { rootMargin: "-45% 0px -45%" }); io.observe(e); }); return false; } var defaultOptions = { horizontal: true }; options = Object.assign(defaultOptions, options); var $stickyInner; var $videoWrap; var $videoFigure; var $videoGradient; var $textList; var $text; var videoTypes; var videoPlayed; var gradientTimeout; var clipTimeout; var clipStatus; var clipDuration = 0.4; var videoDuration = 5; var loaded; var halfSize; var areaWidth; var areaHeight; var isMobileSize; var heightDiff; var textNumber; var prevIndex; var prevHeight; var isReady; var checkMobile = function checkMobile() { return $(window).width() < 768; }; var init = function init() { loaded = true; $stickyInner = $section.find(".sticky-inner"); $videoWrap = $section.find(".content-wrap"); $videoFigure = $section.find(".mask-video figure"); $videoGradient = $videoFigure.find(".video-gradient"); if (options.horizontal) $videoFigure.addClass("horizontal"); videoTypes = ["webm", "mp4"]; createVideo($videoFigure); $videoFigure.video.muted = true; $maskWrap = $section.find(".mask-wrap"); $textList = $section.find(".text-list"); $text = $section.find(".text-item"); textNumber = $text.length - 1; prevIndex = -1; videoPlayed = false; isMobileSize = checkMobile(); reset(); }; var createVideo = function createVideo($videoFigure) { var mobileTag = checkMobile() ? "_s" : ""; var source = $videoFigure.data("src"); var $videoTag; if (!$videoFigure.$video) { $videoTag = $(""); $videoTag.appendTo($videoFigure); } else { $videoTag = $videoFigure.find('video').html(""); } videoTypes.forEach(function (type) { $("").attr({ type: "video/".concat(type), src: "//images.samsung.com/in/smartphones/galaxy-z-fold4/videos/".concat(source + mobileTag, ".").concat(type) }).appendTo($videoTag); }); $videoTag[0].load(); $videoTag.one('canplay', function () { if ($videoTag[0].readyState > 2 && !isReady) { isReady = true; playVideo(); } }); $section.find('.mask-video').css({ 'background-image': "url(//images.samsung.com/in/smartphones/galaxy-z-fold4/images/".concat(source + '_start' + mobileTag, ".jpg)") }); $videoFigure.$video = $videoTag; $videoFigure.video = $videoTag[0]; }; var reset = function reset() { areaWidth = $stickyInner.width(); areaHeight = $stickyInner.height(); var sizeMobile = checkMobile(); halfSize = options.horizontal ? areaWidth / 2 : areaHeight / 2; if (options.horizontal) $videoFigure.css({ transform: '' }); var margin = sizeMobile ? 104 : 130; var textArea = $textList.height() + margin * 2; if (areaHeight - textArea < 0) { $textList.parent().addClass("overH"); heightDiff = areaHeight - textArea; } else { $textList.parent().removeClass("overH"); $textList.__css({ transform: '' }); heightDiff = 0; } if (sizeMobile && !isMobileSize) { isMobileSize = true; videoPlayed = false; createVideo($videoFigure); _scroll(0.01); GALAXY.scrollTop > $section.offset().top && _scroll(0.99); } else if (!sizeMobile && isMobileSize) { isMobileSize = false; videoPlayed = false; createVideo($videoFigure); _scroll(0.01); GALAXY.scrollTop > $section.offset().top && _scroll(0.99); } if (options.horizontal) { var windowRatio = areaWidth / areaHeight; var videoWidth = $videoFigure.$video.width(); var videoHeight = checkMobile() ? videoWidth : $videoFigure.$video.height(); videoScale = windowRatio > videoWidth / videoHeight ? areaWidth / videoWidth : areaHeight / videoHeight; $videoFigure.css({ transform: "scale(".concat(videoScale * 1.02, ")") }); } if (areaHeight != prevHeight) { prevHeight = areaHeight; if (clipStatus) { if (clipStatus == 'open') { TweenMax.to($videoWrap, 0, { clip: "rect(0px, ".concat(areaWidth, "px, ").concat(areaHeight, "px, 0px)") }); } else if (clipStatus == 'close') { TweenMax.to($videoWrap, 0, { clip: options.horizontal ? "rect(0px, ".concat(halfSize, "px, ").concat(areaHeight, "px, ").concat(halfSize, "px)") : "rect(".concat(halfSize, "px, ").concat(areaWidth, "px, ").concat(halfSize, "px, 0px)") }); } } } }; var _scroll = function scroll(percent) { percent = percent || 0; var perText = stickyPercent(percent, 0, 0.7); var index = Math.floor(perText / (1 / textNumber)); if (index != prevIndex) { prevIndex = index; $text.removeClass("active").eq(index).addClass("active"); } heightDiff && $textList.__css({ y: heightDiff * perText }); var perMask = stickyPercent(percent, 0.75, 0.25); if (perMask > 0) { open(); } else { if (percent > 0 && percent < 1) close(); } }; var open = function open() { if (clipStatus != 'open') { clipStatus = 'open'; clearTimeout(clipTimeout); clipTimeout = setTimeout(function () { if ($videoGradient) { $videoGradient.__css({ opacity: 1 }); clearTimeout(gradientTimeout); gradientTimeout = setTimeout(function () { TweenMax.to($videoGradient, videoDuration * 0.1, { opacity: 0 }); }, videoDuration * 0.9 * 1000); } TweenMax.to($videoWrap, clipDuration, { clip: "rect(0px, ".concat(areaWidth, "px, ").concat(areaHeight, "px, 0px)"), ease: Circ.easeOut, onStart: function onStart() { pauseVideo(); playVideo(); } }); }, 0); } }; var close = function close() { if (clipStatus != 'close') { clipStatus = 'close'; clearTimeout(clipTimeout); clearTimeout(gradientTimeout); clipTimeout = setTimeout(function () { TweenMax.to($videoWrap, clipDuration, { clip: options.horizontal ? "rect(0px, ".concat(halfSize, "px, ").concat(areaHeight, "px, ").concat(halfSize, "px)") : "rect(".concat(halfSize, "px, ").concat(areaWidth, "px, ").concat(halfSize, "px, 0px)"), ease: Circ.easeOut, onComplete: function onComplete() { clipStatus == 'close' && videoPlayed && pauseVideo(); } }); }, 0); } }; var playVideo = function playVideo() { if (isReady) { videoPlayed = true; $videoFigure.video.currentTime = 0.01; $videoFigure.video.play(); } }; var pauseVideo = function pauseVideo() { if (isReady) { videoPlayed = false; $videoFigure.video.pause(); $videoFigure.video.currentTime = 0.01; } }; if (!loaded && window.pageYOffset > 10) init(); GALAXY.scroll(function () { if (!loaded && window.pageYOffset > 10) init(); }); new scrollSticky("".concat(section, " .sticky-wrap"), { scroll: function scroll(percent) { loaded && _scroll(percent); }, resize: function resize() { loaded && reset(); } }); var isShift = false, isTab = false; $(window).on('keydown', function (e) { if (e.shiftKey) isShift = true; else isShift = false; if (e.keyCode == 9) isTab = true; else isTab = false; }); $(".f_cate-overview-wrap a").on("focus", function (e) { e.preventDefault(); var itemIndex = $(".f_cate-overview-wrap .text-item").index($(this).parent()); if (isTab) { clipStatus = 'open'; if ((!isShift && itemIndex == 0) || (isShift && itemIndex > $(".f_cate-overview-wrap .text-item").length - 2)) { $('html, body').stop().scrollTop($('.m_content-overview').offset().top); } setTimeout(function () { _scroll(0.15 * (itemIndex + 1)); }, 30); } });};var dropdown = function dropdown() { var $section = $(".dropdown-wrap"), $item_q, $item_a, $item_btns, $item_all; var omni = { open: ":expand:", close: ":collapse:" }; var asset = function asset() { $item_all = $section.find(".dropdown_item"); $item_q = $section.find(".dropdown_item_q"); $item_a = $section.find(".dropdown_item_a"); $item_btns = $item_q.find("button"); }; var bindEvent = function bindEvent() { $item_btns.off("click").on("click", showContent); }; var init = function init() { if (!$section.length) { return false; } asset(); bindEvent(); return this; }; var showContent = function showContent() { var $item_btn = $(this); var curIndex = $item_btns.index(this); var $item = $item_btn.closest(".dropdown_item"); var omniture = this.dataset.omni; var $content = $item_a.eq(curIndex); if (!$item.hasClass("is-open")) { $item.addClass("is-open"); $item_btn.attr({ "aria-expanded": "true" }); $content.stop().slideDown(400); } else { $item.removeClass("is-open"); $item_btn.attr({ "aria-expanded": "false" }); $content.stop().slideUp(400); } return false; }; init();};GALAXY.load(function () { dropdown();});var faveColorChip = function faveColorChip($colors, $images, onchange, oninit) { var $inputs = $colors.find("input:radio"); var colorTimeout; var _init = function _init() { if ($colors.find("input:checked").length == 0) { $inputs.each(function (i) { if (i == 0) { this.checked = true; } }); } _setImage(); if (oninit) { oninit(); } $inputs.on("change focus", function () { var $this = $(this); clearTimeout(colorTimeout); colorTimeout = setTimeout(function () { _setImage(); if (onchange) { onchange.call($this); } }, 0); }); }; var _setImage = function _setImage() { var currentColor = $inputs.filter(":checked").val(); $images.each(function () { $(this).removeClass("active").attr('aria-hidden', true); if ($(this).data("color-name") === currentColor) { $(this).addClass("active").removeAttr('aria-hidden'); ; } }); }; GALAXY.load(function () { _init(); });};var Modals = function () { var $window = $(window); var $document = $(document); var $modals = $(''); var $baseContentsArea = $("#wrap"), $baseContentsClickable; var $ctrl = null; var $modalContent, saveScrollTop, isKeyDown = false; var isModalShow = false; var showroomUid = null; var showroomDataInit = false; var isHashCheck = false; var focusSetTime1; var focusSetTime2; var isShow = false; var showroom; var showroomColor = ""; var init = function init() { $("body").append($modals); setHashCheck(); $document.on("click.openModal", ".o_modal_controller", openModel); $document.on("click.openShowroom", ".showroom-btn", openShowroom); return this; }; var openModel = function openModel() { if (!isShow) { $modals.removeClass("modal-showroom"); isShow = true; $ctrl = this; var target = this.dataset.target || this.getAttribute("href"); show(target); } return false; }; var openShowroom = function openShowroom() { if (!isShow) { isShow = true; $ctrl = this; var uid = this.dataset.target || this.getAttribute("href"); var $target = $(".showroom_modal").clone(); showroomColor = ""; if (this.dataset.target == "see-in-360") { showroomColor = $(this).closest("article").find("input:radio:checked").attr("value") || "burgundy"; } showroomUid = uid; if (showroomDataInit === false) { callShowroomPage(); } else { $target.find(".modal-contents.showroom-con").html($("#showroom-" + uid).html()); $target.find(".modal-contents.showroom-con article").removeAttr("id"); } show($target); } return false; }; var callShowroomPage = function callShowroomPage() { $.ajax({ url: "./showroom/", dataType: "text" }).done(setupShowroom).fail(function () { window.location.href = "./showroom/#" + showroomUid; }); }; var setupShowroom = function setupShowroom(datas) { // Add Css var css = datas.split("/*!--GALAXY-SHOWROOM-CSS--*/")[1]; css = css.split("/*!--//GALAXY-SHOWROOM-CSS--*/")[0]; css = css.replace(/\.\/images\//g, "//images.samsung.com/in/smartphones/galaxy-z-fold4/showroom/images/"); css = css.replace(/\.\.\/common\/images\//g, "/samsung/resources/global/galaxy-z-fold4/common/images/"); $("", { attr: { type: "text/css" }, html: css, appendTo: "head" }); // Add Script var js = datas.split("/*!--GALAXY-SHOWROOM-JS--*/")[1]; js = js.split("/*!--//GALAXY-SHOWROOM-JS--*/")[0]; var newscript = document.createElement("script"); var insertScript = document.createTextNode(js); newscript.appendChild(insertScript); document.body.appendChild(newscript); // Add HTML Data var store = datas.split("")[1]; store = store.split("")[0]; $("", { attr: { tabindex: -1, "aria-hidden": true, class: "overview-container" }, css: { display: "none" }, appendTo: "body", html: contReplace(store) }); // Add Html var contents = datas.split("")[1]; contents = contents.split("")[0]; function contReplace(str) { var s = str || ""; s = s.replace(/\.\//g, "./showroom/"); s = s.replace(/\.\.\/common\/images\//g, "/samsung/resources/global/galaxy-z-fold4/common/images/"); s = s.replace(/\.\.\/showroom\/common\//g, "/samsung/resources/global/galaxy-z-fold4/common/"); s = s.replace(/:showroom:/g, ":highlights:popup^"); return s; } var $contents = $("", { html: contReplace(contents) }); var $articles = $contents.find("article"); var s = []; for (var i = 0, l = $articles.length, article; i < l; i++) { article = $articles[i]; s.push('"); } $("body").append(s.join("\n ")); showroom = new Showroom({ device: document.getElementById("contents").dataset.model, options: { tracker: false, progress: false, navigator: false, isShowroom: false } }); showroom.init(); $('.modal[role="dialog"]').find(".modal-contents.showroom-con").html($("#showroom-" + showroomUid).html()); $('.modal[role="dialog"]').find(".modal-contents.showroom-con article").removeAttr("id"); if ($modals.hasClass("show-end")) { var $loadingBar = $modals.find(".load-bar"); $loadingBar.get(0) && $loadingBar.remove(); showroom.renderFeature(showroomUid, showroomColor); } showroomDataInit = true; }; var btnShowSet; var btnShowSet2; var ieCloseBtnShow = function ieCloseBtnShow() { clearTimeout(btnShowSet); clearTimeout(btnShowSet2); if ($("html").hasClass("ie")) { if (!$(".modal_close").hasClass("close-show")) { $(".modal_close").addClass("close-show"); $(".modal_close a").focus(); } else { $(".modal_close").addClass("close-show-end"); $(".modal_close a").focus(); } } }; var setHashCheck = function setHashCheck() { var hash = location.href.split("#")[1]; if (!hash) { return; } var checkHash = function checkHash() { var target = this.dataset.target || this.getAttribute("href"); var $this = $(this); if (hash == this.dataset.hash) { isShow = true; if ($(this).hasClass("showroom-btn")) { showroomColor = ""; if (this.dataset.target == "see-in-360") { showroomColor = $(this).closest("article").find("input:radio:checked").attr("value") || "burgundy"; } showroomUid = target; callShowroomPage(); show($(".showroom_modal").clone()); } else { show(target); } if (!$this.data("hash-scroll-target")) { isHashCheck = $this.closest("section").offset().top; setTimeout(function () { GALAXY.setScrollTop($this.closest("section").offset().top); }, 100); } else { setTimeout(function () { var $scrollTarget = $("#" + $this.data("hash-scroll-target")); isHashCheck = $scrollTarget.get(0) ? $scrollTarget.offset().top : 0; $scrollTarget.get(0) && GALAXY.setScrollTop($scrollTarget.offset().top); }, 100); } } }; $(".o_modal_controller").each(checkHash); $(".showroom-btn").each(checkHash); }; var show = function show(target) { $("#wrap").css("opacity", 0.99); var $target = $(target); var $loadingBar = $target.find(".load-bar"); $loadingBar.get(0) && $loadingBar.find("span").text($loadingBar.data("load-txt")); // if ( !$target.length ) return false; isKeyDown = false; isModalShow = true; $modals.html($target.html()); $modalContent = $modals.find(".modal_contents-area"); !showroomUid && $modalContent.find("a, button").off(GALAXY.tracking).on("click", GALAXY.tracking); $modals.find(".modal_close > a, .modal_close > button, .modal_close-area").one("click.modalHide", hide).on("keydown.modalHide", hideKeyDown); if (!GALAXY.sizeMode) { var width = window.innerWidth; //document.documentElement.offsetWidth; GALAXY.sizeMode = width > 1440 ? 4 : width > 1023 ? 3 : width > 767 ? 2 : 1; } imageLoadCheck(); Accessibillity.on(); setTimeout(function () { $modalContent.addClass("modal_open"); shown(); }, 0); $modals.addClass("show"); saveScrollTop = GALAXY.scrollTop; GALAXY.noScroll.on(); $("#wrap").css({ position: "fixed", width: "100%", paddingRight: GALAXY.scrollBarWidth, left: 0, right: 0, top: -saveScrollTop, "z-index": -1 }); $(".overview-bg").css({ opacity: 0 }); if (!GALAXY.isGalaxy) $(".floating-navigation__wrap").css({ paddingRight: GALAXY.scrollBarWidth }); $(".footer").css({ "padding-top": saveScrollTop }); clearTimeout(focusSetTime2); focusSetTime2 = setTimeout(function () { $modals.find(".modal_close a").focus(); }, 1000); }; $modals.off("blur.modalClose").on("blur.modalClose", ".modal_close a", function () { $(this).removeClass("focus-visible"); }); var shown = function shown() { $modals.addClass("show-end"); $("body").off("keydown.closeModals").on("keydown.closeModals", function (e) { if ($modals.hasClass("show-end") && (e.key == "Escape" || e.keyCode == 27)) { isKeyDown = true; hide(); } }); if (showroomUid && showroomDataInit) { var $loadingBar = $modals.find(".load-bar"); $loadingBar.get(0) && $loadingBar.remove(); showroom.renderFeature(showroomUid, showroomColor); } }; var hide = function hide() { $("#wrap").css("opacity", ""); $modals.removeClass("show"); $window.off("resize.modals"); Accessibillity.off(); if ($("html").hasClass("ie")) $(".modal_close").removeClass("close-show close-show-end"); if (isHashCheck !== false) { GALAXY.setScrollTop(isHashCheck); } isHashCheck = false; // showroomUid && showroom.destroyFeature(); showroomUid = null; clearTimeout(focusSetTime1); $(".footer").css({ "padding-top": "" }); GALAXY.noScroll.off(); $("#wrap").css({ position: "", width: "", left: "", paddingRight: "", right: "", top: "", "z-index": "" }); $(".overview-bg").css({ opacity: "" }); if (!GALAXY.isGalaxy) $(".floating-navigation__wrap").css({ paddingRight: "" }); saveScrollTop && GALAXY.setScrollTop(saveScrollTop); saveScrollTop = 0; focusSetTime1 = setTimeout(function () { $ctrl && $ctrl.focus(); $ctrl = null; }, 500); isShow = false; if (typeof window.modalCloseCallback == "function") { window.modalCloseCallback(); } $modalContent = null; $modals.removeClass("show-end"); $("body").off("keydown.closeModals"); $modals.empty().addClass("modal-showroom"); isKeyDown = false; isModalShow = false; return false; }; var hideKeyDown = function hideKeyDown(e) { if (e.keyCode == 13 || e.keyCode == 32) { isKeyDown = true; } }; var Accessibillity = { on: function on() { $baseContentsArea.attr({ "aria-hidden": "true", tabindex: -1 }); $baseContentsClickable = $baseContentsArea.find("a,input,select,textarea,button,video,iframe, svg"); $baseContentsClickable.each(function () { var tabindex = $(this).attr("tabindex"); if (tabindex !== undefined && tabindex !== null) { $(this).data("prev-tabindex", tabindex); $(this).attr("aria-hidden", "true"); } $(this).attr("tabindex", "-1"); $(this).attr("aria-hidden", "true"); }); if ($("html").hasClass("dotcom")) { $("html").addClass("is-modal-opened"); } }, off: function off() { $baseContentsArea.removeAttr("aria-hidden tabindex"); $baseContentsClickable.each(function () { var tabindex = $(this).data("prev-tabindex"); if (tabindex !== undefined && tabindex !== null) { $(this).attr("tabindex", tabindex); $(this).removeAttr("aria-hidden"); } else { $(this).removeAttr("tabindex"); $(this).removeAttr("aria-hidden"); } }); if ($("html").hasClass("dotcom")) { $("html").removeClass("is-modal-opened"); $('#QSIFeedbackButton-btn').css('width', '37px'); } }, }; var imageLoadCheck = function imageLoadCheck() { var $images = $modals.find("img"), lens = $images.length, count = 0; var loadCheck = function loadCheck() { if (++count >= lens) { showImageLoadEnd(); } }; $images.each(function (i, image) { var $image = $(image); GALAXY.loadImage($image, loadCheck); this.src = GALAXY.getImageSources($image)[GALAXY.sizeMode]; }); if (!lens) { showImageLoadEnd(); } }; var showImageLoadEnd = function showImageLoadEnd() {}; var changeSizeMode = function changeSizeMode() { isModalShow && imageLoadCheck(); }; return { init: init, show: show, hide: hide, showEnd: showImageLoadEnd };}();GALAXY.load(function () { Modals.init();});var ecosystem = function ecosystem() { var $popupElem = $('.eco-popup'); var $openBtn = $('.btn-open'); var $closeBtn = $('.btn-close'); var $index = 0; var ecosystemElem = document.querySelector('.m_content-ecosystem'); var ecosystemBg = document.querySelector('.gradient-wrap'); var scrollValue = 0; var currentScroll = 0; var ratio = 0; var settingValue = 20; var heightRatio = 0.3; ecosystemBg.style.transform = 'translate3d(-50%,' + settingValue + '%,0)'; var ecoPopup = { open: function open(index) { ecoPopup.allClosed(); $popupElem.eq(index).stop().fadeIn(200); $popupElem.eq(index).find('.btn-close').focus(); }, closed: function closed(index) { $popupElem.eq(index).stop().fadeOut(200); $popupElem.eq(index).prev('.eco-item').find('.btn-open').focus(); }, focus: function focus() { $popupElem.stop().fadeOut(200); $openBtn.removeClass('open'); }, allClosed: function allClosed() { $popupElem.stop().fadeOut(200); }, exClosed: function exClosed(e) { if ($popupElem.has(e.target).length === 0 && $(e.target)[0].classList[0] != 'btn-open') { ecoPopup.allClosed(); $openBtn.removeClass('open'); } }, router: function router() { switch ($(this)[0].classList[0]) { case 'btn-open': $index = $openBtn.index(this); if ($(this).attr('class').split(" ").indexOf('open') != -1) { $(this).removeClass('open'); ecoPopup.closed($index); } else { $openBtn.removeClass('open'); $(this).addClass('open'); ecoPopup.open($index); checkViewPopup(ecosystemElem); } break; case 'btn-close': $index = $closeBtn.index(this); $openBtn.eq($index).removeClass('open'); ecoPopup.closed($index); break; } }, parallax: function parallax() { scrollValue = pageYOffset; currentScroll = Math.max(0, pageYOffset - (ecosystemElem.offsetTop - ecosystemElem.offsetHeight * heightRatio)); ratio = currentScroll / ecosystemElem.offsetHeight; trasformValue = settingValue - settingValue * ratio; if (scrollValue > ecosystemElem.offsetTop - ecosystemElem.offsetHeight * heightRatio && scrollValue < ecosystemElem.offsetTop - ecosystemElem.offsetHeight * heightRatio + ecosystemElem.offsetHeight) { ecosystemBg.style.transform = 'translate3d(-50%,' + trasformValue + '%,0)'; } else if (scrollValue < ecosystemElem.offsetTop - ecosystemElem.offsetHeight * heightRatio) { ecosystemBg.style.transform = 'translate3d(-50%,' + settingValue + '%,0)'; } else if (scrollValue > ecosystemElem.offsetTop - ecosystemElem.offsetHeight * heightRatio + ecosystemElem.offsetHeight) { ecosystemBg.style.transform = 'translate3d(-50%,0%,0)'; } } }; var addEvent = function addEvent() { $openBtn.on({ 'click.eco': ecoPopup.router, 'focus.eco': ecoPopup.focus }); $closeBtn.on('click.eco', ecoPopup.router); $(document).on({ 'click.eco': ecoPopup.exClosed, 'scroll.ecosystem': ecoPopup.parallax }); }; var checkViewPopup = function checkViewPopup(target) { var callback = function callback(entries, observer) { entries.forEach(function (entry) { if (!entry.isIntersecting) { $popupElem.stop().fadeOut(200); $openBtn.removeClass('open'); } }); }; var io = new IntersectionObserver(callback); io.observe(target); }; var init = function init() { addEvent(); }; init();};GALAXY.load(function () { ecosystem();});var excellenceMotion = function excellenceMotion() { var excellence = document.querySelector(".m_content-excellence"); var excellenceList = document.querySelector(".excellence-list"); var excellenceListUl = excellenceList.querySelector("ul"); var excellenceMobileMove = excellenceList.querySelector(".mobile-move"); var excellenceTitle = excellence.querySelector(".f_header-type1"); var eCard = excellenceList.querySelectorAll(".e-card"); var _this; var totalW = 0; var excellenceSticky; var cloneList; var arrowClick = false; var blankDiv; var $subNavElem = $('#subnav'); var $dotNav = $('.floating-navigation'); var $stickyInner = $('.m_content-excellence .sticky-inner'); var $sitckyHeader = $('.m_content-excellence .sticky-inner>.f_header-type1'); var $eCard = $('.e-card'); var $subNavHt; var $stickyInnerHt; var $stickyTop; var $totalHt; var $eCardHt; var init = function init() { _this = this; _this.resize(); stickyMotion(); slideMotion(); }; // excellence sticky var stickyMotion = function stickyMotion() { var titleL = 0; var totalH = 0; var titleW = 0; var progress = 0; var _init = function _init() { cloneList = excellenceListUl.cloneNode(true); cloneList.setAttribute("aria-hidden", "true"); cloneList.classList.add("clone-list"); excellenceList.appendChild(cloneList); blankDiv = document.createElement("div"); blankDiv.classList.add("blank-div"); excellenceList.appendChild(blankDiv); _resize(); if (document.documentElement.classList.contains("ie11")) { excellence.querySelector(".sticky-inner").style.marginTop = -totalH / 2 + "px"; } }; var _option = { align: "center", scroll: function scroll(percent) { _scroll(percent); }, resize: function resize() { _this.resize(); _resize(); _scroll(progress); } }; var _scroll = function _scroll(scroll) { var p = stickyPercent(scroll, 0, 0.9); var distance; if (!document.documentElement.classList.contains("rtl")) { distance = titleL - (totalW - titleW) * p; } else { distance = -titleL + (totalW - titleW) * p; } if (!document.documentElement.classList.contains("s1")) _this.move(distance); }; var _jump = function _jump(idx) { var percent = idx / eCard.length; var fakeDiv = (excellence.clientHeight - window.innerHeight) * percent; setTimeout(function () { window.scrollTo(0, excellence.offsetTop + fakeDiv); }, 300); }; var _keyup = function _keyup(el, idx) { if (!document.documentElement.classList.contains("s1")) { excellence.querySelector(".sticky-inner").scrollLeft = 0; _jump(idx); } }; var _resize = function _resize() { titleL = excellenceTitle.offsetLeft; titleW = excellenceTitle.clientWidth; totalH = excellenceTitle.clientHeight; if (!document.documentElement.classList.contains("dotcom")) { $subNavHt = $subNavElem.height(); } else { $subNavHt = $dotNav.height(); } $stickyInnerHt = $stickyInner.height(); $totalHt = $stickyInnerHt + 50; $stickyTop = $subNavHt; $eCardHt = $eCard.height(); if (innerHeight - $subNavHt > $totalHt) { $stickyInner.css('top', $stickyTop + 50 + 'px'); } else { $stickyInner.css('top', -totalH + $subNavHt + (innerHeight - $subNavHt - $eCardHt) / 2 + 'px'); } }; _init(); var selectPostion = function selectPostion() { if (innerHeight - $subNavHt > $totalHt) { Object.assign(_option, { align: 'top' }); } else { Object.assign(_option, { align: 'center' }); } excellenceSticky = new scrollSticky(excellence, _option); }; // excellenceSticky = new scrollSticky(excellence, _option); var positionCheck = function positionCheck() { isSticky = $('.m_content-excellence').find('.sticky-inner').css('position'); if (isSticky == 'static') { $('.m_content-excellence').addClass('_static'); } }; var fucusMove = function fucusMove() { var $excellence = $('.m_content-excellence'), $stickyInner = $excellence.find('.sticky-inner'), $listWrap = $excellence.find('.mobile-move'), $cardElem = $listWrap.find('.e-card'); var $innerTop, $calcValue, $offsetTop, $currentIndex = 0, $result; var focusMove = { focus: function focus() { if ($(this).index() >= $cardElem.length - 2) { $currentIndex = $cardElem.length - 1; } else { $currentIndex = $(this).index(); } $cardWidth = parseInt(($excellence.height() + $innerTop) * 0.9 / ($cardElem.length + 2)); $calcValue = $cardWidth * $currentIndex; $offsetTop = $excellence.offset().top - $innerTop; $result = $offsetTop + $calcValue; window.scrollTo(0, $result); } }; var defaultSet = function defaultSet() { $innerTop = $stickyInner.css('top').split('px')[0] * 1; }; var bindEvent = function bindEvent() { $cardElem.on('keyup.focusMove', focusMove.focus); }; var init = function init() { defaultSet(); bindEvent(); }; init(); }; GALAXY.load(function () { selectPostion(); positionCheck(); fucusMove(); }); }; // excellence slide var slideMotion = function slideMotion() { var arrowWrap = excellenceList.querySelector(".excellence-arrow-wrap"); var startP = window.innerWidth / 2 - eCard[0].clientWidth / 2; var endP = window.innerWidth / 2 - eCard[0].clientWidth / 2; var downStart = false; var totalIdx = 0; var slideMove = false; var _init = function _init() { _resize(); // _this.move(startP); var startEvent = ["mousedown", "touchstart"]; var moveEvent = ["mousemove", "touchmove"]; var endEvent = ["mouseup", "touchend"]; startEvent.forEach(function (__this) { excellenceListUl.addEventListener(__this, function (e) { _touch.start(e); }); }); moveEvent.forEach(function (__this) { document.addEventListener(__this, function (e) { _touch.move(e); }, { passive: false }); }); endEvent.forEach(function (__this) { document.addEventListener(__this, function (e) { _touch.end(e); }); }); arrowWrap.querySelector(".prev").addEventListener("click", function (e) { _prev(); }); arrowWrap.querySelector(".next").addEventListener("click", function (e) { _next(); }); window.addEventListener("resize", function (e) { _resize(); }); }; var _touch = { prevX: 0, prevY: 0, currentX: 0, moveX: startP, dragX: 0, endIdx: 0, start: function start(e) { if (!slideMove) { downStart = true; this.prevX = e.type != "touchstart" ? e.pageX : e.changedTouches[0].clientX; this.prevY = e.type != "touchstart" ? e.pageY : e.changedTouches[0].clientY; } }, move: function move(e) { if (downStart && !slideMove && document.documentElement.classList.contains("s1")) { this.currentX = e.type != "touchmove" ? e.pageX : e.changedTouches[0].clientX; this.currentY = e.type != "touchmove" ? e.pageY : e.changedTouches[0].clientY; if (!document.documentElement.classList.contains("rtl")) { this.dragX = Math.min(startP, this.moveX + (this.currentX - this.prevX)); this.dragX = Math.max(-totalW + window.innerWidth - endP, this.dragX); if (this.prevX - this.currentX > 0) { this.endIdx = Math.floor((eCard[0].clientWidth - this.dragX) / eCard[0].clientWidth); } else { this.endIdx = Math.floor((window.innerWidth / 4 - this.dragX) / eCard[0].clientWidth); } } else { this.dragX = Math.max(-startP, this.moveX + (this.currentX - this.prevX)); this.dragX = Math.min(totalW - window.innerWidth + endP, this.dragX); if (this.prevX - this.currentX < 0) { this.endIdx = Math.floor((eCard[0].clientWidth + this.dragX) / eCard[0].clientWidth); } else { this.endIdx = Math.floor((window.innerWidth / 4 + this.dragX) / eCard[0].clientWidth); } } if (this.currentX > this.currentY && Math.abs(this.prevY - this.currentY) <= 80) { e.preventDefault(); } e.preventDefault(); _this.move(this.dragX); } }, end: function end() { downStart = false; if (Math.abs(this.currentX) > 0) _jump(this.endIdx); this.prevX = 0; this.currentX = 0; } }; var cardAriaHidden = function cardAriaHidden(idx) { eCard.forEach(function (i, index) { if (idx !== index) { i.setAttribute("aria-hidden", true); i.setAttribute("tabindex", -1); i.querySelectorAll("a").forEach(function (j) { j.setAttribute("aria-hidden", true); j.setAttribute("tabindex", -1); }); } else { i.removeAttribute("aria-hidden"); i.removeAttribute("tabindex"); i.querySelectorAll("a").forEach(function (j) { j.removeAttribute("aria-hidden"); j.removeAttribute("tabindex"); }); } if (!document.documentElement.classList.contains("s1")) { i.removeAttribute("aria-hidden"); i.removeAttribute("tabindex"); i.querySelectorAll("a").forEach(function (j) { j.removeAttribute("aria-hidden"); j.removeAttribute("tabindex"); }); } }); }; var _jump = function _jump(idx) { if (!slideMove) { slideMove = true; var cardStart = eCard[idx].clientWidth * idx; var cardMargin; if (!document.documentElement.classList.contains("rtl")) { cardMargin = parseInt(window.getComputedStyle(eCard[eCard.length - 1]).getPropertyValue("margin-left"), 10) * idx; } else { cardMargin = parseInt(window.getComputedStyle(eCard[eCard.length - 1]).getPropertyValue("margin-right"), 10) * idx; } var cardCenter = window.innerWidth / 2 - eCard[idx].clientWidth / 2; var cardMove; var marginLeft = parseInt((innerWidth - $('.m_content-excellence .sticky-inner > .f_header-type1').width()) / 2); var cardPadding = $('.e-card').first().css('padding-left').split('px')[0]; if (!document.documentElement.classList.contains("rtl")) { if (!document.documentElement.classList.contains("s1")) { cardMove = -cardStart - cardMargin + cardCenter; } else { if (idx == '0') { cardMove = parseInt(marginLeft - cardPadding); } else { cardMove = -cardStart - cardMargin + cardCenter; } } } else { if (!document.documentElement.classList.contains("s1")) { cardMove = cardStart + cardMargin - cardCenter; } else { if (idx == '0') { cardMove = -parseInt(marginLeft - cardPadding); } else { cardMove = cardStart + cardMargin - cardCenter; } } } if (idx === 0) { arrowWrap.querySelector(".prev").setAttribute('aria-hidden', 'true'); arrowWrap.querySelector(".prev").setAttribute('tabIndex', '-1'); arrowWrap.querySelector(".prev").classList.add('hide'); if (arrowClick) { setTimeout(function () { arrowWrap.querySelector(".next").focus(); }, 300); } } else { arrowWrap.querySelector(".prev").setAttribute('aria-hidden', 'false'); arrowWrap.querySelector(".prev").removeAttribute('tabIndex'); arrowWrap.querySelector(".prev").classList.remove('hide'); } if (idx >= eCard.length - 1) { arrowWrap.querySelector(".next").setAttribute('aria-hidden', 'true'); arrowWrap.querySelector(".next").setAttribute('tabIndex', '-1'); arrowWrap.querySelector(".next").classList.add('hide'); if (arrowClick) { setTimeout(function () { arrowWrap.querySelector(".prev").focus(); }, 300); } } else { arrowWrap.querySelector(".next").setAttribute('aria-hidden', 'false'); arrowWrap.querySelector(".next").removeAttribute('tabIndex'); arrowWrap.querySelector(".next").classList.remove('hide'); } var moveElement = !document.documentElement.classList.contains("s1") ? excellenceListUl : excellenceMobileMove; TweenMax.fromTo(moveElement, 0.5, { x: _touch.dragX }, { x: cardMove, ease: Quint.easeOut, onComplete: function onComplete() { _touch.moveX = cardMove; _touch.dragX = cardMove; totalIdx = idx; slideMove = false; arrowClick = false; cardAriaHidden(idx); } }); } }; var _prev = function _prev() { arrowClick = true; totalIdx = Math.max(0, totalIdx - 1); _jump(totalIdx); }; var _next = function _next() { arrowClick = true; totalIdx = Math.min(eCard.length - 1, totalIdx + 1); _jump(totalIdx); }; var fakeDiv = document.createElement("div"); var _resize = function _resize() { startP = window.innerWidth / 2 - eCard[0].clientWidth / 2; endP = window.innerWidth / 2 - eCard[0].clientWidth / 2; if (document.documentElement.classList.contains("s1")) _jump(totalIdx); blankDiv.style.height = "var(--snbh)"; var _snbh = blankDiv.clientHeight; if (window.innerHeight - cloneList.clientHeight - _snbh < 0) { // static excellence.classList.add("static"); } else { // sticky excellence.classList.remove("static"); } }; GALAXY.load(function () { _init(); }); }; var move = function move(_move) { var moveElement = !document.documentElement.classList.contains("s1") ? excellenceListUl : excellenceMobileMove; moveElement.style.transform = "translate3d(" + _move + "px,0px,0px) rotate(0.001deg)"; }; var resize = function resize() { totalW = 0; eCard.forEach(function (_this) { var _marginLeft; if (!document.documentElement.classList.contains("rtl")) { _marginLeft = parseInt(window.getComputedStyle(_this).getPropertyValue("margin-left"), 10); } else { _marginLeft = parseInt(window.getComputedStyle(_this).getPropertyValue("margin-left"), 10); } totalW += _this.clientWidth + _marginLeft; }); excellenceListUl.style.width = totalW + "px"; }; return { init: init, move: move, resize: resize };};excellenceMotion() && excellenceMotion().init();var faqList = function () { var $section = $(".m_faq-banner"), $item_q, $item_a, $item_btns, $item_cont_btns; var omni = { open: ":expand:", close: ":collapse:" }; var asset = function asset() { $item_q = $section.find(".faq_item_q"); $item_a = $section.find(".faq_item_a"); $item_btns = $item_q.find("button"), $item_cont_btns = $item_a.find("a.o_btn-type1"); }; var bindEvent = function bindEvent() { $item_btns.off("click").on("click", showContent); $item_cont_btns.off("click.focusMove").on("click.focusMove", moveSection); }; var init = function init() { if (!$section.length) { return false; } asset(); bindEvent(); return this; }; var moveSection = function moveSection() { var targetId = $(this).attr("href"); var $target = $(targetId); var $title = 'H2|H3'.indexOf($target[0].tagName) > -1 ? $target : $target.find('h2,h3'); setTimeout(function () { if ($title.find('button').length) { $title.find('button').focus(); } else { $title.attr({ tabindex: 0 }).css({ outline: 0 }).focus().one('blur', function () { $(this).removeAttr('tabindex').css('outline', ''); }); } GALAXY.setScrollTop($target.offset().top); }, 100); return false; }; var showContent = function showContent() { var $item_btn = $(this); var curIndex = $item_btns.index(this); var $item = $item_btn.closest(".faq_item"); var omniture = this.dataset.omni; if (!$item.hasClass("is-open")) { $item.addClass("is-open"); $item_btn.attr({ "aria-expanded": "true", "ga-la": omniture.replace(omni.open, omni.close), "data-omni": omniture.replace(omni.open, omni.close) }); $item_a.eq(curIndex).stop().slideDown(300); } else { $item.removeClass("is-open"); $item_btn.attr({ "aria-expanded": "false", "ga-la": omniture.replace(omni.close, omni.open), "data-omni": omniture.replace(omni.close, omni.open) }); $item_a.eq(curIndex).stop().slideUp(250); } GALAXY.omniture(omniture); return false; }; init();}();// ykvar designMotion = function designMotion() { var $section = $('.m_feature-design'); if (!$section.length || $('html').hasClass('sL')) return false; var $videoFigure; var $imgContainer; var $vidContainer; var videoTypes; var videoPlayed; var loaded; var isMobileSize; var canPlay; var motionReady = true; var motionDuration = 0.8; var checkMobile = function checkMobile() { return $(window).width() < 768; }; var init = function init() { loaded = true; $vidContainer = $section.find(".motion-vid"); $imgContainer = $section.find(".motion-img"); $videoFigure = $vidContainer.find("figure"); videoTypes = ["webm", "mp4"]; createVideo($videoFigure); $videoFigure.video.muted = true; videoPlayed = false; isMobileSize = checkMobile(); var io1 = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) on(); }); }, { rootMargin: '0px 0px -10% 0px' }); io1.observe($videoFigure[0]); var io2 = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (!entry.isIntersecting) off(); }); }); io2.observe($section[0]); reset(); }; var on = function on() { if (motionReady) { motionReady = false; startMotion(); } }; var off = function off() { if (GALAXY.scrollTop < $section.offset().top) { if (!motionReady) { motionReady = true; resetMotion(); } } }; var createVideo = function createVideo($videoFigure) { var mobileTag = checkMobile() ? "_s" : ""; var source = $videoFigure.data("src"); var $videoTag; if (!$videoFigure.$video) { $videoTag = $(""); $videoTag.appendTo($videoFigure); } else { $videoTag = $videoFigure.find('video').html(""); } videoTypes.forEach(function (type) { $("").attr({ type: "video/".concat(type), src: "".concat(source + mobileTag, ".").concat(type) }).appendTo($videoTag); }); $videoTag[0].load(); $videoTag.one('canplay', function () { if ($videoTag[0].readyState > 2 && !canPlay) { canPlay = true; } }); $videoFigure.$video = $videoTag; $videoFigure.video = $videoTag[0]; }; var playVideo = function playVideo() { if (canPlay) { videoPlayed = true; $videoFigure.video.play(); } }; var pauseVideo = function pauseVideo() { if (canPlay) { videoPlayed = false; $videoFigure.video.pause(); $videoFigure.video.currentTime = 0; } }; var reset = function reset() { var sizeMobile = checkMobile(); if (sizeMobile && !isMobileSize) { isMobileSize = true; videoPlayed = false; createVideo($videoFigure); } else if (!sizeMobile && isMobileSize) { isMobileSize = false; videoPlayed = false; createVideo($videoFigure); } scroll(); }; var startMotion = function startMotion() { TweenMax.fromTo($imgContainer, motionDuration * 0.8, { opacity: 0 }, { opacity: 1, delay: motionDuration * 0.2, ease: Power2.easeOut }); TweenMax.fromTo($section.find('.motion-img.left figure'), motionDuration, { x: '50%', y: '-40%' }, { x: '0%', y: '0%', ease: Power2.easeOut, onComplete: function onComplete() { $vidContainer.addClass('show'); $imgContainer.addClass('hide'); playVideo(); } }); TweenMax.fromTo($section.find('.motion-img.right figure'), motionDuration, { x: '-50%', y: '40%' }, { x: '0%', y: '0%', ease: Power2.easeOut }); }; var resetMotion = function resetMotion() { $vidContainer.removeClass('show'); $imgContainer.removeClass('hide').__css({ opacity: 0 }); $section.find('.motion-img.left figure').__css({ x: '50%', y: '-40%' }); $section.find('.motion-img.right figure').__css({ x: '-50%', y: '40%' }); pauseVideo(); }; GALAXY.resize(function () { loaded && reset(); }); if (!loaded && window.pageYOffset > 10) init(); GALAXY.scroll(function () { if (!loaded && window.pageYOffset > 10) init(); });};var stickyStatic = function stickyStatic(section) { var sections = ['.m_feature-formfactor', '.m_feature-experience_120hz']; var minHeight = 360; var resizing; var decideMode = function decideMode() { sections.forEach(function (e, i) { var $section = $(e); if ($section.length) { if (GALAXY.areaHeight < minHeight) { $section.addClass('static-mode'); } else { $section.removeClass('static-mode'); } } }); }; decideMode(); GALAXY.resize(function () { clearTimeout(resizing); resizing = setTimeout(function () { decideMode(); }, 50); }, true);};var videoWrap = function videoWrap() { var io = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (!entry.isIntersecting) { $(entry.target).closest('article').trigger('invisible'); } }); }); var load = function load() { $('.m_video-wrap').each(function (i, wrap) { io.observe(wrap); }); }; GALAXY.load(function () { load(); });};var $colors = $(".m_feature-colors .color-item");var $colorImages = $(".m_feature-colors .colorset");new faveColorChip($colors, $colorImages);new scrollActive(".m_feature-multicamera .tag", 0.7);new videoWrap();GALAXY.load(function () { new stickyStatic(); new overview(".m_content-overview"); new designMotion();});// chloevar setStickyCopyHeight = function setStickyCopyHeight(_section, _at, _nextAt) { var $section = $('.m_content-' + _section); var $article = $section.find('.m_feature-' + _section + '_' + _at); var $nextArticle = $section.find('.m_feature-' + _section + '_' + _nextAt); var $copyWrap = $article.find('.copy-wrap'); var totalHeight = 0; if (!GALAXY.sizeMode) return false; if (GALAXY.sizeMode < 2 && !$('html').hasClass('ie')) { totalHeight = 0; $copyWrap.find('.sticky-height').each(function () { totalHeight = totalHeight + $(this).innerHeight(); }); $nextArticle.css('margin-top', -1 * totalHeight - 1); }};GALAXY.resize(function () { setStickyCopyHeight('experience', 'immersive-view', '120hz');});var immersiveSticky = function () { var $article = $(".m_feature-experience_immersive-view"); var isCheckIe = $('html').hasClass('ie'); var poniner = $article.offset().top; var minH = GALAXY.sizeMode > 2 ? 900 : GALAXY.sizeMode > 1 ? 900 : 500; var _resize = function _resize() { minH = GALAXY.sizeMode > 2 ? 900 : GALAXY.sizeMode > 1 ? 900 : 500; if (GALAXY.areaHeight < minH) { $article.removeClass('sticky-enter'); } else { $article.addClass('sticky-enter'); _init(); } }; var _init = function _init() { poniner = $article.offset().top; if (GALAXY.scrollTop > poniner - GALAXY.areaHeight / 2 + GALAXY.navHeight * 1.3) { $article.find('.content-wrap').addClass('enter-motion'); } else { $article.find('.content-wrap').removeClass('enter-motion'); } }; if (!isCheckIe) { GALAXY.load(_init); GALAXY.scroll(_resize); GALAXY.resize(_resize); }}();GALAXY.load(function () { var $experienceArticle = $('.m_feature-experience'); var $figure = $('.experience-video-wrap .experience-video'); $experienceArticle.off('visible invisible'); $experienceArticle.find('video').length && $experienceArticle.find('video').one('canplay', function () { $experienceArticle.trigger('videoOn'); }); var ob = new IntersectionObserver(function (entries, observer) { $.each(entries, function (i, entry) { if (entry.isIntersecting) { $experienceArticle.trigger('videoOn'); setTimeout(function () { $(window).trigger('scroll'); }, 50); } else { $experienceArticle.trigger('videoOff'); setTimeout(function () { $(window).trigger('scroll'); }, 50); } }); }); ob.observe($figure[0]);});//}).then(function(){GALAXY.initialize()})});

    "); return t.attr("data-swiper-slide-index") || t.attr("data-swiper-slide-index", e), i.cache && (this.virtual.cache[e] = t), t }, appendSlide: function (t) { if ("object" == typeof t && "length" in t) for (var e = 0; e < t.length; e += 1)t[e] && this.virtual.slides.push(t[e]); else this.virtual.slides.push(t); this.virtual.update(!0) }, prependSlide: function (t) { var s, a, e = this.activeIndex, i = e + 1, n = 1; if (Array.isArray(t)) { for (var r = 0; r < t.length; r += 1)t[r] && this.virtual.slides.unshift(t[r]); i = e + t.length, n = t.length } else this.virtual.slides.unshift(t); this.params.virtual.cache && (s = this.virtual.cache, a = {}, Object.keys(s).forEach(function (t) { var e = s[t], i = e.attr("data-swiper-slide-index"); i && e.attr("data-swiper-slide-index", parseInt(i, 10) + 1), a[parseInt(t, 10) + n] = e }), this.virtual.cache = a), this.virtual.update(!0), this.slideTo(i, 0) }, removeSlide: function (t) { if (null != t) { var e = this.activeIndex; if (Array.isArray(t)) for (var i = t.length - 1; 0 <= i; --i)this.virtual.slides.splice(t[i], 1), this.params.virtual.cache && delete this.virtual.cache[t[i]], t[i] < e && --e, e = Math.max(e, 0); else this.virtual.slides.splice(t, 1), this.params.virtual.cache && delete this.virtual.cache[t], t < e && --e, e = Math.max(e, 0); this.virtual.update(!0), this.slideTo(e, 0) } }, removeAllSlides: function () { this.virtual.slides = [], this.params.virtual.cache && (this.virtual.cache = {}), this.virtual.update(!0), this.slideTo(0, 0) } }, y = { name: "virtual", params: { virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0 } }, create: function () { U.extend(this, { virtual: { update: w.update.bind(this), appendSlide: w.appendSlide.bind(this), prependSlide: w.prependSlide.bind(this), removeSlide: w.removeSlide.bind(this), removeAllSlides: w.removeAllSlides.bind(this), renderSlide: w.renderSlide.bind(this), slides: this.params.virtual.slides, cache: {} } }) }, on: { beforeInit: function () { var t; this.params.virtual.enabled && (this.classNames.push(this.params.containerModifierClass + "virtual"), U.extend(this.params, t = { watchSlidesProgress: !0 }), U.extend(this.originalParams, t), this.params.initialSlide || this.virtual.update()) }, setTranslate: function () { this.params.virtual.enabled && this.virtual.update() } } }, K = { handle: function (t) { var e = this.rtlTranslate, i = (t = t.originalEvent ? t.originalEvent : t).keyCode || t.charCode; if (!this.allowSlideNext && (this.isHorizontal() && 39 === i || this.isVertical() && 40 === i || 34 === i)) return !1; if (!this.allowSlidePrev && (this.isHorizontal() && 37 === i || this.isVertical() && 38 === i || 33 === i)) return !1; if (!(t.shiftKey || t.altKey || t.ctrlKey || t.metaKey || c.activeElement && c.activeElement.nodeName && ("input" === c.activeElement.nodeName.toLowerCase() || "textarea" === c.activeElement.nodeName.toLowerCase()))) { if (this.params.keyboard.onlyInViewport && (33 === i || 34 === i || 37 === i || 39 === i || 38 === i || 40 === i)) { var s = !1; if (0 < this.$el.parents("." + this.params.slideClass).length && 0 === this.$el.parents("." + this.params.slideActiveClass).length) return; var a = X.innerWidth, n = X.innerHeight, r = this.$el.offset(); e && (r.left -= this.$el[0].scrollLeft); for (var o = [[r.left, r.top], [r.left + this.width, r.top], [r.left, r.top + this.height], [r.left + this.width, r.top + this.height]], l = 0; l < o.length; l += 1) { var h = o[l]; 0 <= h[0] && h[0] <= a && 0 <= h[1] && h[1] <= n && (s = !0) } if (!s) return } this.isHorizontal() ? (33 !== i && 34 !== i && 37 !== i && 39 !== i || (t.preventDefault ? t.preventDefault() : t.returnValue = !1), (34 !== i && 39 !== i || e) && (33 !== i && 37 !== i || !e) || this.slideNext(), (33 !== i && 37 !== i || e) && (34 !== i && 39 !== i || !e) || this.slidePrev()) : (33 !== i && 34 !== i && 38 !== i && 40 !== i || (t.preventDefault ? t.preventDefault() : t.returnValue = !1), 34 !== i && 40 !== i || this.slideNext(), 33 !== i && 38 !== i || this.slidePrev()), this.emit("keyPress", i) } }, enable: function () { this.keyboard.enabled || (S(c).on("keydown", this.keyboard.handle), this.keyboard.enabled = !0) }, disable: function () { this.keyboard.enabled && (S(c).off("keydown", this.keyboard.handle), this.keyboard.enabled = !1) } }, E = { name: "keyboard", params: { keyboard: { enabled: !1, onlyInViewport: !0 } }, create: function () { U.extend(this, { keyboard: { enabled: !1, enable: K.enable.bind(this), disable: K.disable.bind(this), handle: K.handle.bind(this) } }) }, on: { init: function () { this.params.keyboard.enabled && this.keyboard.enable() }, destroy: function () { this.keyboard.enabled && this.keyboard.disable() } } }; function C() { for (var i, t = [], e = arguments.length; e--;)t[e] = arguments[e]; i = (i = 1 === t.length && t[0].constructor && t[0].constructor === Object ? t[0] : (n = t[0], t[1])) || {}, i = U.extend({}, i), n && !i.el && (i.el = n), d.call(this, i), Object.keys(R).forEach(function (e) { Object.keys(R[e]).forEach(function (t) { C.prototype[t] || (C.prototype[t] = R[e][t]) }) }); var s, a, n, r = this, o = (void 0 === r.modules && (r.modules = {}), Object.keys(r.modules).forEach(function (t) { var e, t = r.modules[t]; t.params && (e = Object.keys(t.params)[0], "object" == typeof (t = t.params[e]) && null !== t && e in i && "enabled" in t && (!0 === i[e] && (i[e] = { enabled: !0 }), "object" != typeof i[e] || "enabled" in i[e] || (i[e].enabled = !0), i[e] || (i[e] = { enabled: !1 }))) }), U.extend({}, $)), l = (r.useModulesParams(o), r.params = U.extend({}, o, j, i), r.originalParams = U.extend({}, r.params), r.passedParams = U.extend({}, i), (r.$ = S)(r.params.el)); if (n = l[0]) return 1 < l.length ? (s = [], l.each(function (t, e) { e = U.extend({}, i, { el: e }); s.push(new C(e)) }), s) : (n.swiper = r, l.data("swiper", r), n && n.shadowRoot && n.shadowRoot.querySelector ? (a = S(n.shadowRoot.querySelector("." + r.params.wrapperClass))).children = function (t) { return l.children(t) } : a = l.children("." + r.params.wrapperClass), U.extend(r, { $el: l, el: n, $wrapperEl: a, wrapperEl: a[0], classNames: [], slides: S(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function () { return "horizontal" === r.params.direction }, isVertical: function () { return "vertical" === r.params.direction }, rtl: "rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction"), rtlTranslate: "horizontal" === r.params.direction && ("rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction")), wrongRTL: "-webkit-box" === a.css("display"), activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: r.params.allowSlideNext, allowSlidePrev: r.params.allowSlidePrev, touchEvents: (o = b.pointerEvents ? ["pointerdown", "pointermove", "pointerup"] : ["mousedown", "mousemove", "mouseup"], r.touchEventsTouch = { start: (n = ["touchstart", "touchmove", "touchend", "touchcancel"])[0], move: n[1], end: n[2], cancel: n[3] }, r.touchEventsDesktop = { start: o[0], move: o[1], end: o[2] }, b.touch || !r.params.simulateTouch ? r.touchEventsTouch : r.touchEventsDesktop), touchEventsData: { isTouched: void 0, isMoved: void 0, allowTouchCallbacks: void 0, touchStartTime: void 0, isScrolling: void 0, currentTranslate: void 0, startTranslate: void 0, allowThresholdMove: void 0, formElements: "input, select, option, textarea, button, video", lastClickTime: U.now(), clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, isTouchEvent: void 0, startMoving: void 0 }, allowClick: !0, allowTouchMove: r.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, imagesToLoad: [], imagesLoaded: 0 }), r.useModules(), r.params.init && r.init(), r) } var x = { lastScrollTime: U.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], event: function () { return -1 < X.navigator.userAgent.indexOf("firefox") ? "DOMMouseScroll" : ((e = "onwheel" in c) || ((t = c.createElement("div")).setAttribute("onwheel", "return;"), e = "function" == typeof t.onwheel), (e = !e && c.implementation && c.implementation.hasFeature && !0 !== c.implementation.hasFeature("", "") ? c.implementation.hasFeature("Events.wheel", "3.0") : e) ? "wheel" : "mousewheel"); var t, e }, normalize: function (t) { var e = 0, i = 0, s = 0, a = 0; return "detail" in t && (i = t.detail), "wheelDelta" in t && (i = -t.wheelDelta / 120), "wheelDeltaY" in t && (i = -t.wheelDeltaY / 120), "wheelDeltaX" in t && (e = -t.wheelDeltaX / 120), "axis" in t && t.axis === t.HORIZONTAL_AXIS && (e = i, i = 0), s = 10 * e, a = 10 * i, "deltaY" in t && (a = t.deltaY), "deltaX" in t && (s = t.deltaX), t.shiftKey && !s && (s = a, a = 0), (s || a) && t.deltaMode && (1 === t.deltaMode ? (s *= 40, a *= 40) : (s *= 800, a *= 800)), { spinX: e = s && !e ? s < 1 ? -1 : 1 : e, spinY: i = a && !i ? a < 1 ? -1 : 1 : i, pixelX: s, pixelY: a } }, handleMouseEnter: function () { this.mouseEntered = !0 }, handleMouseLeave: function () { this.mouseEntered = !1 }, handle: function (t) { var e = t, i = this, s = i.params.mousewheel; if (i.params.cssMode && e.preventDefault(), !i.mouseEntered && !s.releaseOnEdges) return !0; e.originalEvent && (e = e.originalEvent); var a = 0, n = i.rtlTranslate ? -1 : 1, r = x.normalize(e); if (s.forceToAxis) if (i.isHorizontal()) { if (!(Math.abs(r.pixelX) > Math.abs(r.pixelY))) return !0; a = r.pixelX * n } else { if (!(Math.abs(r.pixelY) > Math.abs(r.pixelX))) return !0; a = r.pixelY } else a = Math.abs(r.pixelX) > Math.abs(r.pixelY) ? -r.pixelX * n : -r.pixelY; if (0 === a) return !0; if (s.invert && (a = -a), i.params.freeMode) { var o = { time: U.now(), delta: Math.abs(a), direction: Math.sign(a) }, n = i.mousewheel.lastEventBeforeSnap, r = n && o.time < n.time + 500 && o.delta <= n.delta && o.direction === n.direction; if (!r) { i.mousewheel.lastEventBeforeSnap = void 0, i.params.loop && i.loopFix(); var l, h, n = i.getTranslate() + a * s.sensitivity, s = i.isBeginning, d = i.isEnd; if ((n = n >= i.minTranslate() ? i.minTranslate() : n) <= i.maxTranslate() && (n = i.maxTranslate()), i.setTransition(0), i.setTranslate(n), i.updateProgress(), i.updateActiveIndex(), i.updateSlidesClasses(), (!s && i.isBeginning || !d && i.isEnd) && i.updateSlidesClasses(), i.params.freeModeSticky && (clearTimeout(i.mousewheel.timeout), i.mousewheel.timeout = void 0, 15 <= (l = i.mousewheel.recentWheelEvents).length && l.shift(), s = l.length ? l[l.length - 1] : void 0, d = l[0], l.push(o), s && (o.delta > s.delta || o.direction !== s.direction) ? l.splice(0) : 15 <= l.length && o.time - d.time < 500 && 1 <= d.delta - o.delta && o.delta <= 6 && (h = 0 < a ? .8 : .2, i.mousewheel.lastEventBeforeSnap = o, l.splice(0), i.mousewheel.timeout = U.nextTick(function () { i.slideToClosest(i.params.speed, !0, void 0, h) }, 0)), i.mousewheel.timeout || (i.mousewheel.timeout = U.nextTick(function () { i.mousewheel.lastEventBeforeSnap = o, l.splice(0), i.slideToClosest(i.params.speed, !0, void 0, .5) }, 500))), r || i.emit("scroll", e), i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(), n === i.minTranslate() || n === i.maxTranslate()) return !0 } } else { s = { time: U.now(), delta: Math.abs(a), direction: Math.sign(a), raw: t }, d = i.mousewheel.recentWheelEvents, r = (2 <= d.length && d.shift(), d.length ? d[d.length - 1] : void 0); if (d.push(s), (!r || s.direction !== r.direction || s.delta > r.delta) && i.mousewheel.animateSlider(s), i.mousewheel.releaseScroll(s)) return !0 } return e.preventDefault ? e.preventDefault() : e.returnValue = !1, !1 }, animateSlider: function (t) { return 6 <= t.delta && U.now() - this.mousewheel.lastScrollTime < 60 || (t.direction < 0 ? this.isEnd && !this.params.loop || this.animating || (this.slideNext(), this.emit("scroll", t.raw)) : this.isBeginning && !this.params.loop || this.animating || (this.slidePrev(), this.emit("scroll", t.raw)), this.mousewheel.lastScrollTime = (new X.Date).getTime(), !1) }, releaseScroll: function (t) { var e = this.params.mousewheel; if (t.direction < 0) { if (this.isEnd && !this.params.loop && e.releaseOnEdges) return !0 } else if (this.isBeginning && !this.params.loop && e.releaseOnEdges) return !0; return !1 }, enable: function () { var t = x.event(); if (this.params.cssMode) return this.wrapperEl.removeEventListener(t, this.mousewheel.handle), !0; if (!t) return !1; if (this.mousewheel.enabled) return !1; var e = this.$el; return (e = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : e).on("mouseenter", this.mousewheel.handleMouseEnter), e.on("mouseleave", this.mousewheel.handleMouseLeave), e.on(t, this.mousewheel.handle), this.mousewheel.enabled = !0 }, disable: function () { var t = x.event(); if (this.params.cssMode) return this.wrapperEl.addEventListener(t, this.mousewheel.handle), !0; if (!t) return !1; if (!this.mousewheel.enabled) return !1; var e = this.$el; return (e = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : e).off(t, this.mousewheel.handle), !(this.mousewheel.enabled = !1) } }, L = { update: function () { var t, e, i = this.params.navigation; this.params.loop || (t = (e = this.navigation).$nextEl, (e = e.$prevEl) && 0 < e.length && (this.isBeginning ? e.addClass(i.disabledClass) : e.removeClass(i.disabledClass), e[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](i.lockClass)), t && 0 < t.length && (this.isEnd ? t.addClass(i.disabledClass) : t.removeClass(i.disabledClass), t[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](i.lockClass))) }, onPrevClick: function (t) { t.preventDefault(), this.isBeginning && !this.params.loop || this.slidePrev() }, onNextClick: function (t) { t.preventDefault(), this.isEnd && !this.params.loop || this.slideNext() }, init: function () { var t, e, i = this.params.navigation; (i.nextEl || i.prevEl) && (i.nextEl && (t = S(i.nextEl), this.params.uniqueNavElements && "string" == typeof i.nextEl && 1 < t.length && 1 === this.$el.find(i.nextEl).length && (t = this.$el.find(i.nextEl))), i.prevEl && (e = S(i.prevEl), this.params.uniqueNavElements && "string" == typeof i.prevEl && 1 < e.length && 1 === this.$el.find(i.prevEl).length && (e = this.$el.find(i.prevEl))), t && 0 < t.length && t.on("click", this.navigation.onNextClick), e && 0 < e.length && e.on("click", this.navigation.onPrevClick), U.extend(this.navigation, { $nextEl: t, nextEl: t && t[0], $prevEl: e, prevEl: e && e[0] })) }, destroy: function () { var t = this.navigation, e = t.$nextEl, t = t.$prevEl; e && e.length && (e.off("click", this.navigation.onNextClick), e.removeClass(this.params.navigation.disabledClass)), t && t.length && (t.off("click", this.navigation.onPrevClick), t.removeClass(this.params.navigation.disabledClass)) } }, A = { update: function () { var t = this.rtl, s = this.params.pagination; if (s.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) { var a, e = (this.virtual && this.params.virtual.enabled ? this.virtual : this).slides.length, i = this.pagination.$el, n = this.params.loop ? Math.ceil((e - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length; if (this.params.loop ? ((a = Math.ceil((this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup)) > e - 1 - 2 * this.loopedSlides && (a -= e - 2 * this.loopedSlides), n - 1 < a && (a -= n), a < 0 && "bullets" !== this.params.paginationType && (a = n + a)) : a = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0, "bullets" === s.type && this.pagination.bullets && 0 < this.pagination.bullets.length) { var r, o, l, h = this.pagination.bullets; if (s.dynamicBullets && (this.pagination.bulletSize = h.eq(0)[this.isHorizontal() ? "outerWidth" : "outerHeight"](!0), i.css(this.isHorizontal() ? "width" : "height", this.pagination.bulletSize * (s.dynamicMainBullets + 4) + "px"), 1 < s.dynamicMainBullets && void 0 !== this.previousIndex && (this.pagination.dynamicBulletIndex += a - this.previousIndex, this.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1 ? this.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1 : this.pagination.dynamicBulletIndex < 0 && (this.pagination.dynamicBulletIndex = 0)), r = a - this.pagination.dynamicBulletIndex, l = ((o = r + (Math.min(h.length, s.dynamicMainBullets) - 1)) + r) / 2), h.removeClass(s.bulletActiveClass + " " + s.bulletActiveClass + "-next " + s.bulletActiveClass + "-next-next " + s.bulletActiveClass + "-prev " + s.bulletActiveClass + "-prev-prev " + s.bulletActiveClass + "-main"), 1 < i.length) h.each(function (t, e) { var e = S(e), i = e.index(); i === a && e.addClass(s.bulletActiveClass), s.dynamicBullets && (r <= i && i <= o && e.addClass(s.bulletActiveClass + "-main"), i === r && e.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(s.bulletActiveClass + "-prev-prev"), i === o && e.next().addClass(s.bulletActiveClass + "-next").next().addClass(s.bulletActiveClass + "-next-next")) }); else { var e = h.eq(a), d = e.index(); if (e.addClass(s.bulletActiveClass), s.dynamicBullets) { for (var e = h.eq(r), c = h.eq(o), u = r; u <= o; u += 1)h.eq(u).addClass(s.bulletActiveClass + "-main"); if (this.params.loop) if (d >= h.length - s.dynamicMainBullets) { for (var p = s.dynamicMainBullets; 0 <= p; --p)h.eq(h.length - p).addClass(s.bulletActiveClass + "-main"); h.eq(h.length - s.dynamicMainBullets - 1).addClass(s.bulletActiveClass + "-prev") } else e.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(s.bulletActiveClass + "-prev-prev"), c.next().addClass(s.bulletActiveClass + "-next").next().addClass(s.bulletActiveClass + "-next-next"); else e.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(s.bulletActiveClass + "-prev-prev"), c.next().addClass(s.bulletActiveClass + "-next").next().addClass(s.bulletActiveClass + "-next-next") } } s.dynamicBullets && (d = Math.min(h.length, s.dynamicMainBullets + 4), e = (this.pagination.bulletSize * d - this.pagination.bulletSize) / 2 - l * this.pagination.bulletSize, c = t ? "right" : "left", h.css(this.isHorizontal() ? c : "top", e + "px")) } "fraction" === s.type && (i.find("." + s.currentClass).text(s.formatFractionCurrent(a + 1)), i.find("." + s.totalClass).text(s.formatFractionTotal(n))), "progressbar" === s.type && (d = s.progressbarOpposite ? this.isHorizontal() ? "vertical" : "horizontal" : this.isHorizontal() ? "horizontal" : "vertical", l = (a + 1) / n, c = t = 1, "horizontal" == d ? t = l : c = l, i.find("." + s.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + t + ") scaleY(" + c + ")").transition(this.params.speed)), "custom" === s.type && s.renderCustom ? (i.html(s.renderCustom(this, a + 1, n)), this.emit("paginationRender", this, i[0])) : this.emit("paginationUpdate", this, i[0]), i[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](s.lockClass) } }, render: function () { var t = this.params.pagination; if (t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) { var e = (this.virtual && this.params.virtual.enabled ? this.virtual : this).slides.length, i = this.pagination.$el, s = ""; if ("bullets" === t.type) { for (var a = this.params.loop ? Math.ceil((e - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length, n = 0; n < a; n += 1)t.renderBullet ? s += t.renderBullet.call(this, n, t.bulletClass) : s += "<" + t.bulletElement + ' class="' + t.bulletClass + '">' + t.bulletElement + ">"; i.html(s), this.pagination.bullets = i.find("." + t.bulletClass) } "fraction" === t.type && (s = t.renderFraction ? t.renderFraction.call(this, t.currentClass, t.totalClass) : ' / ', i.html(s)), "progressbar" === t.type && (s = t.renderProgressbar ? t.renderProgressbar.call(this, t.progressbarFillClass) : '', i.html(s)), "custom" !== t.type && this.emit("paginationRender", this.pagination.$el[0]) } }, init: function () { var t, e = this, i = e.params.pagination; i.el && 0 !== (t = S(i.el)).length && (e.params.uniqueNavElements && "string" == typeof i.el && 1 < t.length && 1 === e.$el.find(i.el).length && (t = e.$el.find(i.el)), "bullets" === i.type && i.clickable && t.addClass(i.clickableClass), t.addClass(i.modifierClass + i.type), "bullets" === i.type && i.dynamicBullets && (t.addClass("" + i.modifierClass + i.type + "-dynamic"), e.pagination.dynamicBulletIndex = 0, i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1)), "progressbar" === i.type && i.progressbarOpposite && t.addClass(i.progressbarOppositeClass), i.clickable && t.on("click", "." + i.bulletClass, function (t) { t.preventDefault(); t = S(this).index() * e.params.slidesPerGroup; e.params.loop && (t += e.loopedSlides), e.slideTo(t) }), U.extend(e.pagination, { $el: t, el: t[0] })) }, destroy: function () { var t, e = this.params.pagination; e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length && ((t = this.pagination.$el).removeClass(e.hiddenClass), t.removeClass(e.modifierClass + e.type), this.pagination.bullets && this.pagination.bullets.removeClass(e.bulletActiveClass), e.clickable && t.off("click", "." + e.bulletClass)) } }, k = { setTranslate: function () { var t, e, i, s, a, n, r, o; this.params.scrollbar.el && this.scrollbar.el && (n = this.scrollbar, t = this.rtlTranslate, o = this.progress, e = n.dragSize, i = n.trackSize, s = n.$dragEl, a = n.$el, n = this.params.scrollbar, o = (i - (r = e)) * o, t ? 0 < (o = -o) ? (r = e - o, o = 0) : i < -o + e && (r = i + o) : o < 0 ? (r = e + o, o = 0) : i < o + e && (r = i - o), this.isHorizontal() ? (s.transform("translate3d(" + o + "px, 0, 0)"), s[0].style.width = r + "px") : (s.transform("translate3d(0px, " + o + "px, 0)"), s[0].style.height = r + "px"), n.hide && (clearTimeout(this.scrollbar.timeout), a[0].style.opacity = 1, this.scrollbar.timeout = setTimeout(function () { a[0].style.opacity = 0, a.transition(400) }, 1e3))) }, setTransition: function (t) { this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(t) }, updateSize: function () { var t, e, i, s, a, n, r; this.params.scrollbar.el && this.scrollbar.el && (e = (t = this.scrollbar).$dragEl, i = t.$el, e[0].style.width = "", e[0].style.height = "", s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight, n = (a = this.size / this.virtualSize) * (s / this.size), r = "auto" === this.params.scrollbar.dragSize ? s * a : parseInt(this.params.scrollbar.dragSize, 10), this.isHorizontal() ? e[0].style.width = r + "px" : e[0].style.height = r + "px", i[0].style.display = 1 <= a ? "none" : "", this.params.scrollbar.hide && (i[0].style.opacity = 0), U.extend(t, { trackSize: s, divider: a, moveDivider: n, dragSize: r }), t.$el[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](this.params.scrollbar.lockClass)) }, getPointerPosition: function (t) { return this.isHorizontal() ? ("touchstart" === t.type || "touchmove" === t.type ? t.targetTouches[0] : t).clientX : ("touchstart" === t.type || "touchmove" === t.type ? t.targetTouches[0] : t).clientY }, setDragPosition: function (t) { var e = this.scrollbar, i = this.rtlTranslate, s = e.$el, a = e.dragSize, n = e.trackSize, r = e.dragStartPos, e = (e.getPointerPosition(t) - s.offset()[this.isHorizontal() ? "left" : "top"] - (null !== r ? r : a / 2)) / (n - a), t = (e = Math.max(Math.min(e, 1), 0), i && (e = 1 - e), this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * e); this.updateProgress(t), this.setTranslate(t), this.updateActiveIndex(), this.updateSlidesClasses() }, onDragStart: function (t) { var e = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el, n = i.$dragEl; this.scrollbar.isTouched = !0, this.scrollbar.dragStartPos = t.target === n[0] || t.target === n ? i.getPointerPosition(t) - t.target.getBoundingClientRect()[this.isHorizontal() ? "left" : "top"] : null, t.preventDefault(), t.stopPropagation(), s.transition(100), n.transition(100), i.setDragPosition(t), clearTimeout(this.scrollbar.dragTimeout), a.transition(0), e.hide && a.css("opacity", 1), this.params.cssMode && this.$wrapperEl.css("scroll-snap-type", "none"), this.emit("scrollbarDragStart", t) }, onDragMove: function (t) { var e = this.scrollbar, i = this.$wrapperEl, s = e.$el, a = e.$dragEl; this.scrollbar.isTouched && (t.preventDefault ? t.preventDefault() : t.returnValue = !1, e.setDragPosition(t), i.transition(0), s.transition(0), a.transition(0), this.emit("scrollbarDragMove", t)) }, onDragEnd: function (t) { var e = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el; this.scrollbar.isTouched && (this.scrollbar.isTouched = !1, this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")), e.hide && (clearTimeout(this.scrollbar.dragTimeout), this.scrollbar.dragTimeout = U.nextTick(function () { a.css("opacity", 0), a.transition(400) }, 1e3)), this.emit("scrollbarDragEnd", t), e.snapOnRelease && this.slideToClosest()) }, enableDraggable: function () { var t, e, i, s, a; this.params.scrollbar.el && (i = this.scrollbar, t = this.touchEventsTouch, e = this.touchEventsDesktop, a = this.params, i = i.$el[0], s = !(!b.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1 }, a = !(!b.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1 }, b.touch ? (i.addEventListener(t.start, this.scrollbar.onDragStart, s), i.addEventListener(t.move, this.scrollbar.onDragMove, s), i.addEventListener(t.end, this.scrollbar.onDragEnd, a)) : (i.addEventListener(e.start, this.scrollbar.onDragStart, s), c.addEventListener(e.move, this.scrollbar.onDragMove, s), c.addEventListener(e.end, this.scrollbar.onDragEnd, a))) }, disableDraggable: function () { var t, e, i, s, a; this.params.scrollbar.el && (i = this.scrollbar, t = this.touchEventsTouch, e = this.touchEventsDesktop, a = this.params, i = i.$el[0], s = !(!b.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1 }, a = !(!b.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1 }, b.touch ? (i.removeEventListener(t.start, this.scrollbar.onDragStart, s), i.removeEventListener(t.move, this.scrollbar.onDragMove, s), i.removeEventListener(t.end, this.scrollbar.onDragEnd, a)) : (i.removeEventListener(e.start, this.scrollbar.onDragStart, s), c.removeEventListener(e.move, this.scrollbar.onDragMove, s), c.removeEventListener(e.end, this.scrollbar.onDragEnd, a))) }, init: function () { var t, e, i, s; this.params.scrollbar.el && (t = this.scrollbar, s = this.$el, i = S((e = this.params.scrollbar).el), 0 === (s = (i = this.params.uniqueNavElements && "string" == typeof e.el && 1 < i.length && 1 === s.find(e.el).length ? s.find(e.el) : i).find("." + this.params.scrollbar.dragClass)).length && (s = S('

    '), i.append(s)), U.extend(t, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }), e.draggable && t.enableDraggable()) }, destroy: function () { this.scrollbar.disableDraggable() } }, Q = { setTransform: function (t, e) { var i = this.rtl, t = S(t), i = i ? -1 : 1, s = t.attr("data-swiper-parallax") || "0", a = t.attr("data-swiper-parallax-x"), n = t.attr("data-swiper-parallax-y"), r = t.attr("data-swiper-parallax-scale"), o = t.attr("data-swiper-parallax-opacity"); a || n ? (a = a || "0", n = n || "0") : this.isHorizontal() ? (a = s, n = "0") : (n = s, a = "0"), a = 0 <= a.indexOf("%") ? parseInt(a, 10) * e * i + "%" : a * e * i + "px", n = 0 <= n.indexOf("%") ? parseInt(n, 10) * e + "%" : n * e + "px", null != o && (s = o - (o - 1) * (1 - Math.abs(e)), t[0].style.opacity = s), null == r ? t.transform("translate3d(" + a + ", " + n + ", 0px)") : (i = r - (r - 1) * (1 - Math.abs(e)), t.transform("translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")")) }, setTranslate: function () { var s = this, t = s.$el, e = s.slides, a = s.progress, n = s.snapGrid; t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (t, e) { s.parallax.setTransform(e, a) }), e.each(function (t, e) { var i = e.progress; 1 < s.params.slidesPerGroup && "auto" !== s.params.slidesPerView && (i += Math.ceil(t / 2) - a * (n.length - 1)), i = Math.min(Math.max(i, -1), 1), S(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (t, e) { s.parallax.setTransform(e, i) }) }) }, setTransition: function (s) { void 0 === s && (s = this.params.speed), this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (t, e) { var e = S(e), i = parseInt(e.attr("data-swiper-parallax-duration"), 10) || s; 0 === s && (i = 0), e.transition(i) }) } }, J = { getDistanceBetweenTouches: function (t) { if (t.targetTouches.length < 2) return 1; var e = t.targetTouches[0].pageX, i = t.targetTouches[0].pageY, s = t.targetTouches[1].pageX, t = t.targetTouches[1].pageY; return Math.sqrt(Math.pow(s - e, 2) + Math.pow(t - i, 2)) }, onGestureStart: function (t) { var e = this.params.zoom, i = this.zoom, s = i.gesture; if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !b.gestures) { if ("touchstart" !== t.type || "touchstart" === t.type && t.targetTouches.length < 2) return; i.fakeGestureTouched = !0, s.scaleStart = J.getDistanceBetweenTouches(t) } s.$slideEl && s.$slideEl.length || (s.$slideEl = S(t.target).closest(".swiper-slide"), 0 === s.$slideEl.length && (s.$slideEl = this.slides.eq(this.activeIndex)), s.$imageEl = s.$slideEl.find("img, svg, canvas"), s.$imageWrapEl = s.$imageEl.parent("." + e.containerClass), s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || e.maxRatio, 0 !== s.$imageWrapEl.length) ? (s.$imageEl.transition(0), this.zoom.isScaling = !0) : s.$imageEl = void 0 }, onGestureChange: function (t) { var e = this.params.zoom, i = this.zoom, s = i.gesture; if (!b.gestures) { if ("touchmove" !== t.type || "touchmove" === t.type && t.targetTouches.length < 2) return; i.fakeGestureMoved = !0, s.scaleMove = J.getDistanceBetweenTouches(t) } s.$imageEl && 0 !== s.$imageEl.length && (i.scale = b.gestures ? t.scale * i.currentScale : s.scaleMove / s.scaleStart * i.currentScale, i.scale > s.maxRatio && (i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, .5)), i.scale < e.minRatio && (i.scale = e.minRatio + 1 - Math.pow(e.minRatio - i.scale + 1, .5)), s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")")) }, onGestureEnd: function (t) { var e = this.params.zoom, i = this.zoom, s = i.gesture; if (!b.gestures) { if (!i.fakeGestureTouched || !i.fakeGestureMoved) return; if ("touchend" !== t.type || "touchend" === t.type && t.changedTouches.length < 2 && !o.android) return; i.fakeGestureTouched = !1, i.fakeGestureMoved = !1 } s.$imageEl && 0 !== s.$imageEl.length && (i.scale = Math.max(Math.min(i.scale, s.maxRatio), e.minRatio), s.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale(" + i.scale + ")"), i.currentScale = i.scale, i.isScaling = !1, 1 === i.scale && (s.$slideEl = void 0)) }, onTouchStart: function (t) { var e = this.zoom, i = e.gesture, e = e.image; i.$imageEl && 0 !== i.$imageEl.length && !e.isTouched && (o.android && t.preventDefault(), e.isTouched = !0, e.touchesStart.x = ("touchstart" === t.type ? t.targetTouches[0] : t).pageX, e.touchesStart.y = ("touchstart" === t.type ? t.targetTouches[0] : t).pageY) }, onTouchMove: function (t) { var e = this.zoom, i = e.gesture, s = e.image, a = e.velocity; if (i.$imageEl && 0 !== i.$imageEl.length && (this.allowClick = !1, s.isTouched && i.$slideEl)) { s.isMoved || (s.width = i.$imageEl[0].offsetWidth, s.height = i.$imageEl[0].offsetHeight, s.startX = U.getTranslate(i.$imageWrapEl[0], "x") || 0, s.startY = U.getTranslate(i.$imageWrapEl[0], "y") || 0, i.slideWidth = i.$slideEl[0].offsetWidth, i.slideHeight = i.$slideEl[0].offsetHeight, i.$imageWrapEl.transition(0), this.rtl && (s.startX = -s.startX, s.startY = -s.startY)); var n = s.width * e.scale, r = s.height * e.scale; if (!(n < i.slideWidth && r < i.slideHeight)) { if (s.minX = Math.min(i.slideWidth / 2 - n / 2, 0), s.maxX = -s.minX, s.minY = Math.min(i.slideHeight / 2 - r / 2, 0), s.maxY = -s.minY, s.touchesCurrent.x = ("touchmove" === t.type ? t.targetTouches[0] : t).pageX, s.touchesCurrent.y = ("touchmove" === t.type ? t.targetTouches[0] : t).pageY, !s.isMoved && !e.isScaling) { if (this.isHorizontal() && (Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x || Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x)) return void (s.isTouched = !1); if (!this.isHorizontal() && (Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y || Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y)) return void (s.isTouched = !1) } t.preventDefault(), t.stopPropagation(), s.isMoved = !0, s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX, s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY, s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)), s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)), s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, .8)), a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x), a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y), a.prevTime || (a.prevTime = Date.now()), a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2, a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2, Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0), Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0), a.prevPositionX = s.touchesCurrent.x, a.prevPositionY = s.touchesCurrent.y, a.prevTime = Date.now(), i.$imageWrapEl.transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0)") } } }, onTouchEnd: function () { var t = this.zoom, e = t.gesture, i = t.image, s = t.velocity; if (e.$imageEl && 0 !== e.$imageEl.length) { if (!i.isTouched || !i.isMoved) return i.isTouched = !1, void (i.isMoved = !1); i.isTouched = !1, i.isMoved = !1; var a = 300, n = 300, r = s.x * a, r = i.currentX + r, o = s.y * n, o = i.currentY + o, s = (0 !== s.x && (a = Math.abs((r - i.currentX) / s.x)), 0 !== s.y && (n = Math.abs((o - i.currentY) / s.y)), Math.max(a, n)), a = (i.currentX = r, i.currentY = o, i.width * t.scale), n = i.height * t.scale; i.minX = Math.min(e.slideWidth / 2 - a / 2, 0), i.maxX = -i.minX, i.minY = Math.min(e.slideHeight / 2 - n / 2, 0), i.maxY = -i.minY, i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX), i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY), e.$imageWrapEl.transition(s).transform("translate3d(" + i.currentX + "px, " + i.currentY + "px,0)") } }, onTransitionEnd: function () { var t = this.zoom, e = t.gesture; e.$slideEl && this.previousIndex !== this.activeIndex && (e.$imageEl.transform("translate3d(0,0,0) scale(1)"), e.$imageWrapEl.transform("translate3d(0,0,0)"), t.scale = 1, t.currentScale = 1, e.$slideEl = void 0, e.$imageEl = void 0, e.$imageWrapEl = void 0) }, toggle: function (t) { var e = this.zoom; e.scale && 1 !== e.scale ? e.out() : e.in(t) }, in: function (t) { var e, i, s, a, n = this.zoom, r = this.params.zoom, o = n.gesture, l = n.image; o.$slideEl || (o.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex), o.$imageEl = o.$slideEl.find("img, svg, canvas"), o.$imageWrapEl = o.$imageEl.parent("." + r.containerClass)), o.$imageEl && 0 !== o.$imageEl.length && (o.$slideEl.addClass("" + r.zoomedSlideClass), l = void 0 === l.touchesStart.x && t ? (e = ("touchend" === t.type ? t.changedTouches[0] : t).pageX, ("touchend" === t.type ? t.changedTouches[0] : t).pageY) : (e = l.touchesStart.x, l.touchesStart.y), n.scale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio, n.currentScale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio, t ? (r = o.$slideEl[0].offsetWidth, t = o.$slideEl[0].offsetHeight, e = o.$slideEl.offset().left + r / 2 - e, l = o.$slideEl.offset().top + t / 2 - l, s = o.$imageEl[0].offsetWidth, a = o.$imageEl[0].offsetHeight, s = s * n.scale, a = a * n.scale, s = -(r = Math.min(r / 2 - s / 2, 0)), a = -(t = Math.min(t / 2 - a / 2, 0)), s < (i = (i = e * n.scale) < r ? r : i) && (i = s), a < (s = (s = l * n.scale) < t ? t : s) && (s = a)) : s = i = 0, o.$imageWrapEl.transition(300).transform("translate3d(" + i + "px, " + s + "px,0)"), o.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + n.scale + ")")) }, out: function () { var t = this.zoom, e = this.params.zoom, i = t.gesture; i.$slideEl || (i.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex), i.$imageEl = i.$slideEl.find("img, svg, canvas"), i.$imageWrapEl = i.$imageEl.parent("." + e.containerClass)), i.$imageEl && 0 !== i.$imageEl.length && (t.scale = 1, t.currentScale = 1, i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"), i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"), i.$slideEl.removeClass("" + e.zoomedSlideClass), i.$slideEl = void 0) }, enable: function () { var t, e, i = this.zoom; i.enabled || (i.enabled = !0, t = !("touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners) && { passive: !0, capture: !1 }, e = !b.passiveListener || { passive: !1, capture: !0 }, b.gestures ? (this.$wrapperEl.on("gesturestart", ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.on("gesturechange", ".swiper-slide", i.onGestureChange, t), this.$wrapperEl.on("gestureend", ".swiper-slide", i.onGestureEnd, t)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.on(this.touchEvents.start, ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.on(this.touchEvents.move, ".swiper-slide", i.onGestureChange, e), this.$wrapperEl.on(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, t), this.touchEvents.cancel && this.$wrapperEl.on(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, t)), this.$wrapperEl.on(this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, e)) }, disable: function () { var t, e, i = this.zoom; i.enabled && (this.zoom.enabled = !1, t = !("touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners) && { passive: !0, capture: !1 }, e = !b.passiveListener || { passive: !1, capture: !0 }, b.gestures ? (this.$wrapperEl.off("gesturestart", ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.off("gesturechange", ".swiper-slide", i.onGestureChange, t), this.$wrapperEl.off("gestureend", ".swiper-slide", i.onGestureEnd, t)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.off(this.touchEvents.start, ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.off(this.touchEvents.move, ".swiper-slide", i.onGestureChange, e), this.$wrapperEl.off(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, t), this.touchEvents.cancel && this.$wrapperEl.off(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, t)), this.$wrapperEl.off(this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, e)) } }, Z = { loadInSlide: function (t, o) { void 0 === o && (o = !0); var l, h = this, d = h.params.lazy; void 0 !== t && 0 !== h.slides.length && (t = (l = h.virtual && h.params.virtual.enabled ? h.$wrapperEl.children("." + h.params.slideClass + '[data-swiper-slide-index="' + t + '"]') : h.slides.eq(t)).find("." + d.elementClass + ":not(." + d.loadedClass + "):not(." + d.loadingClass + ")"), 0 !== (t = !l.hasClass(d.elementClass) || l.hasClass(d.loadedClass) || l.hasClass(d.loadingClass) ? t : t.add(l[0])).length && t.each(function (t, e) { var i = S(e), s = (i.addClass(d.loadingClass), i.attr("data-background")), a = i.attr("data-src"), n = i.attr("data-srcset"), r = i.attr("data-sizes"); h.loadImage(i[0], a || s, n, r, !1, function () { var t, e; null == h || !h || h && !h.params || h.destroyed || (s ? (i.css("background-image", 'url("' + s + '")'), i.removeAttr("data-background")) : (n && (i.attr("srcset", n), i.removeAttr("data-srcset")), r && (i.attr("sizes", r), i.removeAttr("data-sizes")), a && (i.attr("src", a), i.removeAttr("data-src"))), i.addClass(d.loadedClass).removeClass(d.loadingClass), l.find("." + d.preloaderClass).remove(), h.params.loop && o && (t = l.attr("data-swiper-slide-index"), l.hasClass(h.params.slideDuplicateClass) ? (e = h.$wrapperEl.children('[data-swiper-slide-index="' + t + '"]:not(.' + h.params.slideDuplicateClass + ")"), h.lazy.loadInSlide(e.index(), !1)) : (e = h.$wrapperEl.children("." + h.params.slideDuplicateClass + '[data-swiper-slide-index="' + t + '"]'), h.lazy.loadInSlide(e.index(), !1))), h.emit("lazyImageReady", l[0], i[0])) }), h.emit("lazyImageLoad", l[0], i[0]) })) }, load: function () { var i = this, e = i.$wrapperEl, s = i.params, a = i.slides, t = i.activeIndex, n = i.virtual && s.virtual.enabled, r = s.lazy, o = s.slidesPerView; function l(t) { if (n) { if (e.children("." + s.slideClass + '[data-swiper-slide-index="' + t + '"]').length) return 1 } else if (a[t]) return 1 } function h(t) { return n ? S(t).attr("data-swiper-slide-index") : S(t).index() } if ("auto" === o && (o = 0), i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0), i.params.watchSlidesVisibility) e.children("." + s.slideVisibleClass).each(function (t, e) { e = n ? S(e).attr("data-swiper-slide-index") : S(e).index(); i.lazy.loadInSlide(e) }); else if (1 < o) for (var d = t; d < t + o; d += 1)l(d) && i.lazy.loadInSlide(d); else i.lazy.loadInSlide(t); if (r.loadPrevNext) if (1 < o || r.loadPrevNextAmount && 1 < r.loadPrevNextAmount) { for (var r = r.loadPrevNextAmount, c = o, u = Math.min(t + c + Math.max(r, c), a.length), c = Math.max(t - Math.max(c, r), 0), p = t + o; p < u; p += 1)l(p) && i.lazy.loadInSlide(p); for (var m = c; m < t; m += 1)l(m) && i.lazy.loadInSlide(m) } else { r = e.children("." + s.slideNextClass), c = (0 < r.length && i.lazy.loadInSlide(h(r)), e.children("." + s.slidePrevClass)); 0 < c.length && i.lazy.loadInSlide(h(c)) } } }, z = { LinearSpline: function (t, e) { var i, s, a, n, r; return this.x = t, this.y = e, this.lastIndex = t.length - 1, this.interpolate = function (t) { return t ? (r = function (t, e) { for (s = -1, i = t.length; 1 < i - s;)t[a = i + s >> 1] <= e ? s = a : i = a; return i }(this.x, t), n = r - 1, (t - this.x[n]) * (this.y[r] - this.y[n]) / (this.x[r] - this.x[n]) + this.y[n]) : 0 }, this }, getInterpolateFunction: function (t) { this.controller.spline || (this.controller.spline = this.params.loop ? new z.LinearSpline(this.slidesGrid, t.slidesGrid) : new z.LinearSpline(this.snapGrid, t.snapGrid)) }, setTranslate: function (t, e) { var i, s, a = this, n = a.controller.control; function r(t) { var e = a.rtlTranslate ? -a.translate : a.translate; "slide" === a.params.controller.by && (a.controller.getInterpolateFunction(t), s = -a.controller.spline.interpolate(-e)), s && "container" !== a.params.controller.by || (i = (t.maxTranslate() - t.minTranslate()) / (a.maxTranslate() - a.minTranslate()), s = (e - a.minTranslate()) * i + t.minTranslate()), a.params.controller.inverse && (s = t.maxTranslate() - s), t.updateProgress(s), t.setTranslate(s, a), t.updateActiveIndex(), t.updateSlidesClasses() } if (Array.isArray(n)) for (var o = 0; o < n.length; o += 1)n[o] !== e && n[o] instanceof p && r(n[o]); else n instanceof p && e !== n && r(n) }, setTransition: function (e, t) { var i, s = this, a = s.controller.control; function n(t) { t.setTransition(e, s), 0 !== e && (t.transitionStart(), t.params.autoHeight && U.nextTick(function () { t.updateAutoHeight() }), t.$wrapperEl.transitionEnd(function () { a && (t.params.loop && "slide" === s.params.controller.by && t.loopFix(), t.transitionEnd()) })) } if (Array.isArray(a)) for (i = 0; i < a.length; i += 1)a[i] !== t && a[i] instanceof p && n(a[i]); else a instanceof p && t !== a && n(a) } }, tt = { makeElFocusable: function (t) { return t.attr("tabIndex", "0"), t }, addElRole: function (t, e) { return t.attr("role", e), t }, addElLabel: function (t, e) { return t.attr("aria-label", e), t }, disableEl: function (t) { return t.attr("aria-disabled", !0), t }, enableEl: function (t) { return t.attr("aria-disabled", !1), t }, onEnterKey: function (t) { var e = this.params.a11y; 13 === t.keyCode && (t = S(t.target), this.navigation && this.navigation.$nextEl && t.is(this.navigation.$nextEl) && (this.isEnd && !this.params.loop || this.slideNext(), this.isEnd ? this.a11y.notify(e.lastSlideMessage) : this.a11y.notify(e.nextSlideMessage)), this.navigation && this.navigation.$prevEl && t.is(this.navigation.$prevEl) && (this.isBeginning && !this.params.loop || this.slidePrev(), this.isBeginning ? this.a11y.notify(e.firstSlideMessage) : this.a11y.notify(e.prevSlideMessage)), this.pagination && t.is("." + this.params.pagination.bulletClass) && t[0].click()) }, notify: function (t) { var e = this.a11y.liveRegion; 0 !== e.length && (e.html(""), e.html(t)) }, updateNavigation: function () { var t, e; !this.params.loop && this.navigation && (t = (e = this.navigation).$nextEl, (e = e.$prevEl) && 0 < e.length && (this.isBeginning ? this.a11y.disableEl(e) : this.a11y.enableEl(e)), t && 0 < t.length && (this.isEnd ? this.a11y.disableEl(t) : this.a11y.enableEl(t))) }, updatePagination: function () { var i = this, s = i.params.a11y; i.pagination && i.params.pagination.clickable && i.pagination.bullets && i.pagination.bullets.length && i.pagination.bullets.each(function (t, e) { e = S(e); i.a11y.makeElFocusable(e), i.a11y.addElRole(e, "button"), i.a11y.addElLabel(e, s.paginationBulletMessage.replace(/{{index}}/, e.index() + 1)) }) }, init: function () { this.$el.append(this.a11y.liveRegion); var t, e, i = this.params.a11y; this.navigation && this.navigation.$nextEl && (t = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (e = this.navigation.$prevEl), t && (this.a11y.makeElFocusable(t), this.a11y.addElRole(t, "button"), this.a11y.addElLabel(t, i.nextSlideMessage), t.on("keydown", this.a11y.onEnterKey)), e && (this.a11y.makeElFocusable(e), this.a11y.addElRole(e, "button"), this.a11y.addElLabel(e, i.prevSlideMessage), e.on("keydown", this.a11y.onEnterKey)), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.on("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey) }, destroy: function () { var t, e; this.a11y.liveRegion && 0 < this.a11y.liveRegion.length && this.a11y.liveRegion.remove(), this.navigation && this.navigation.$nextEl && (t = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (e = this.navigation.$prevEl), t && t.off("keydown", this.a11y.onEnterKey), e && e.off("keydown", this.a11y.onEnterKey), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.off("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey) } }, I = { init: function () { if (this.params.history) { if (!X.history || !X.history.pushState) return this.params.history.enabled = !1, void (this.params.hashNavigation.enabled = !0); var t = this.history; t.initialized = !0, t.paths = I.getPathValues(), (t.paths.key || t.paths.value) && (t.scrollToSlide(0, t.paths.value, this.params.runCallbacksOnInit), this.params.history.replaceState || X.addEventListener("popstate", this.history.setHistoryPopState)) } }, destroy: function () { this.params.history.replaceState || X.removeEventListener("popstate", this.history.setHistoryPopState) }, setHistoryPopState: function () { this.history.paths = I.getPathValues(), this.history.scrollToSlide(this.params.speed, this.history.paths.value, !1) }, getPathValues: function () { var t = X.location.pathname.slice(1).split("/").filter(function (t) { return "" !== t }), e = t.length; return { key: t[e - 2], value: t[e - 1] } }, setHistory: function (t, e) { this.history.initialized && this.params.history.enabled && (e = this.slides.eq(e), e = I.slugify(e.attr("data-history")), X.location.pathname.includes(t) || (e = t + "/" + e), (t = X.history.state) && t.value === e || (this.params.history.replaceState ? X.history.replaceState({ value: e }, null, e) : X.history.pushState({ value: e }, null, e))) }, slugify: function (t) { return t.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "") }, scrollToSlide: function (t, e, i) { if (e) for (var s = 0, a = this.slides.length; s < a; s += 1) { var n = this.slides.eq(s); I.slugify(n.attr("data-history")) !== e || n.hasClass(this.params.slideDuplicateClass) || (n = n.index(), this.slideTo(n, t, i)) } else this.slideTo(0, t, i) } }, P = { onHashCange: function () { var t = c.location.hash.replace("#", ""); t !== this.slides.eq(this.activeIndex).attr("data-hash") && void 0 !== (t = this.$wrapperEl.children("." + this.params.slideClass + '[data-hash="' + t + '"]').index()) && this.slideTo(t) }, setHash: function () { var t; this.hashNavigation.initialized && this.params.hashNavigation.enabled && (this.params.hashNavigation.replaceState && X.history && X.history.replaceState ? X.history.replaceState(null, null, "#" + this.slides.eq(this.activeIndex).attr("data-hash") || "") : (t = (t = this.slides.eq(this.activeIndex)).attr("data-hash") || t.attr("data-history"), c.location.hash = t || "")) }, init: function () { if (!(!this.params.hashNavigation.enabled || this.params.history && this.params.history.enabled)) { this.hashNavigation.initialized = !0; var t = c.location.hash.replace("#", ""); if (t) for (var e = 0, i = this.slides.length; e < i; e += 1) { var s = this.slides.eq(e); (s.attr("data-hash") || s.attr("data-history")) !== t || s.hasClass(this.params.slideDuplicateClass) || (s = s.index(), this.slideTo(s, 0, this.params.runCallbacksOnInit, !0)) } this.params.hashNavigation.watchState && S(X).on("hashchange", this.hashNavigation.onHashCange) } }, destroy: function () { this.params.hashNavigation.watchState && S(X).off("hashchange", this.hashNavigation.onHashCange) } }, H = { run: function () { var t = this, e = t.slides.eq(t.activeIndex), i = t.params.autoplay.delay; e.attr("data-swiper-autoplay") && (i = e.attr("data-swiper-autoplay") || t.params.autoplay.delay), clearTimeout(t.autoplay.timeout), t.autoplay.timeout = U.nextTick(function () { t.params.autoplay.reverseDirection ? t.params.loop ? (t.loopFix(), t.slidePrev(t.params.speed, !0, !0), t.emit("autoplay")) : t.isBeginning ? t.params.autoplay.stopOnLastSlide ? t.autoplay.stop() : (t.slideTo(t.slides.length - 1, t.params.speed, !0, !0), t.emit("autoplay")) : (t.slidePrev(t.params.speed, !0, !0), t.emit("autoplay")) : t.params.loop ? (t.loopFix(), t.slideNext(t.params.speed, !0, !0), t.emit("autoplay")) : t.isEnd ? t.params.autoplay.stopOnLastSlide ? t.autoplay.stop() : (t.slideTo(0, t.params.speed, !0, !0), t.emit("autoplay")) : (t.slideNext(t.params.speed, !0, !0), t.emit("autoplay")), t.params.cssMode && t.autoplay.running && t.autoplay.run() }, i) }, start: function () { return void 0 === this.autoplay.timeout && !this.autoplay.running && (this.autoplay.running = !0, this.emit("autoplayStart"), this.autoplay.run(), !0) }, stop: function () { return !!this.autoplay.running && void 0 !== this.autoplay.timeout && (this.autoplay.timeout && (clearTimeout(this.autoplay.timeout), this.autoplay.timeout = void 0), this.autoplay.running = !1, this.emit("autoplayStop"), !0) }, pause: function (t) { !this.autoplay.running || this.autoplay.paused || (this.autoplay.timeout && clearTimeout(this.autoplay.timeout), this.autoplay.paused = !0, 0 !== t && this.params.autoplay.waitForTransition ? (this.$wrapperEl[0].addEventListener("transitionend", this.autoplay.onTransitionEnd), this.$wrapperEl[0].addEventListener("webkitTransitionEnd", this.autoplay.onTransitionEnd)) : (this.autoplay.paused = !1, this.autoplay.run())) } }, et = { setTranslate: function () { for (var t = this.slides, e = 0; e < t.length; e += 1) { var i = this.slides.eq(e), s = -i[0].swiperSlideOffset, a = (this.params.virtualTranslate || (s -= this.translate), 0), n = (this.isHorizontal() || (a = s, s = 0), this.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0)); i.css({ opacity: n }).transform("translate3d(" + s + "px, " + a + "px, 0px)") } }, setTransition: function (t) { var i, s = this, e = s.slides, a = s.$wrapperEl; e.transition(t), s.params.virtualTranslate && 0 !== t && (i = !1, e.transitionEnd(function () { if (!i && s && !s.destroyed) { i = !0, s.animating = !1; for (var t = ["webkitTransitionEnd", "transitionend"], e = 0; e < t.length; e += 1)a.trigger(t[e]) } })) } }, it = { setTranslate: function () { var t, e = this.$el, i = this.$wrapperEl, s = this.slides, a = this.width, n = this.height, r = this.rtlTranslate, o = this.size, l = this.params.cubeEffect, h = this.isHorizontal(), d = this.virtual && this.params.virtual.enabled, c = 0; l.shadow && (h ? (0 === (t = i.find(".swiper-cube-shadow")).length && (t = S('

    '), i.append(t)), t.css({ height: a + "px" })) : 0 === (t = e.find(".swiper-cube-shadow")).length && (t = S('

    '), e.append(t))); for (var u, p = 0; p < s.length; p += 1) { var m = s.eq(p), v = p, f = 90 * (v = d ? parseInt(m.attr("data-swiper-slide-index"), 10) : v), g = Math.floor(f / 360), w = (r && (f = -f, g = Math.floor(-f / 360)), Math.max(Math.min(m[0].progress, 1), -1)), y = 0, b = 0, E = 0, g = (v % 4 == 0 ? (y = 4 * -g * o, E = 0) : (v - 1) % 4 == 0 ? (y = 0, E = 4 * -g * o) : (v - 2) % 4 == 0 ? (y = o + 4 * g * o, E = o) : (v - 3) % 4 == 0 && (y = -o, E = 3 * o + 4 * o * g), r && (y = -y), h || (b = y, y = 0), "rotateX(" + (h ? 0 : -f) + "deg) rotateY(" + (h ? f : 0) + "deg) translate3d(" + y + "px, " + b + "px, " + E + "px)"); w <= 1 && -1 < w && (c = r ? 90 * -v - 90 * w : 90 * v + 90 * w), m.transform(g), l.slideShadows && (f = h ? m.find(".swiper-slide-shadow-left") : m.find(".swiper-slide-shadow-top"), y = h ? m.find(".swiper-slide-shadow-right") : m.find(".swiper-slide-shadow-bottom"), 0 === f.length && (f = S('

    '), m.append(f)), 0 === y.length && (y = S('

    '), m.append(y)), f.length && (f[0].style.opacity = Math.max(-w, 0)), y.length && (y[0].style.opacity = Math.max(w, 0))) } i.css({ "-webkit-transform-origin": "50% 50% -" + o / 2 + "px", "-moz-transform-origin": "50% 50% -" + o / 2 + "px", "-ms-transform-origin": "50% 50% -" + o / 2 + "px", "transform-origin": "50% 50% -" + o / 2 + "px" }), l.shadow && (h ? t.transform("translate3d(0px, " + (a / 2 + l.shadowOffset) + "px, " + -a / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + l.shadowScale + ")") : (e = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90), a = 1.5 - (Math.sin(2 * e * Math.PI / 360) / 2 + Math.cos(2 * e * Math.PI / 360) / 2), e = l.shadowScale, a = l.shadowScale / a, u = l.shadowOffset, t.transform("scale3d(" + e + ", 1, " + a + ") translate3d(0px, " + (n / 2 + u) + "px, " + -n / 2 / a + "px) rotateX(-90deg)"))), i.transform("translate3d(0px,0," + (T.isSafari || T.isUiWebView ? -o / 2 : 0) + "px) rotateX(" + (this.isHorizontal() ? 0 : c) + "deg) rotateY(" + (this.isHorizontal() ? -c : 0) + "deg)") }, setTransition: function (t) { var e = this.$el; this.slides.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t), this.params.cubeEffect.shadow && !this.isHorizontal() && e.find(".swiper-cube-shadow").transition(t) } }, st = { setTranslate: function () { for (var t = this.slides, e = this.rtlTranslate, i = 0; i < t.length; i += 1) { var s, a, n = t.eq(i), r = n[0].progress, o = -180 * (r = this.params.flipEffect.limitRotation ? Math.max(Math.min(n[0].progress, 1), -1) : r), l = 0, h = -n[0].swiperSlideOffset, d = 0; this.isHorizontal() ? e && (o = -o) : (d = h, l = -o, o = h = 0), n[0].style.zIndex = -Math.abs(Math.round(r)) + t.length, this.params.flipEffect.slideShadows && (s = this.isHorizontal() ? n.find(".swiper-slide-shadow-left") : n.find(".swiper-slide-shadow-top"), a = this.isHorizontal() ? n.find(".swiper-slide-shadow-right") : n.find(".swiper-slide-shadow-bottom"), 0 === s.length && (s = S('

    '), n.append(s)), 0 === a.length && (a = S('

    '), n.append(a)), s.length && (s[0].style.opacity = Math.max(-r, 0)), a.length && (a[0].style.opacity = Math.max(r, 0))), n.transform("translate3d(" + h + "px, " + d + "px, 0px) rotateX(" + l + "deg) rotateY(" + o + "deg)") } }, setTransition: function (t) { var i, s = this, e = s.slides, a = s.activeIndex, n = s.$wrapperEl; e.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t), s.params.virtualTranslate && 0 !== t && (i = !1, e.eq(a).transitionEnd(function () { if (!i && s && !s.destroyed) { i = !0, s.animating = !1; for (var t = ["webkitTransitionEnd", "transitionend"], e = 0; e < t.length; e += 1)n.trigger(t[e]) } })) } }, at = { setTranslate: function () { for (var t = this.width, e = this.height, i = this.slides, s = this.$wrapperEl, a = this.slidesSizesGrid, n = this.params.coverflowEffect, r = this.isHorizontal(), o = this.translate, l = r ? t / 2 - o : e / 2 - o, h = r ? n.rotate : -n.rotate, d = n.depth, c = 0, u = i.length; c < u; c += 1) { var p = i.eq(c), m = a[c], m = (l - p[0].swiperSlideOffset - m / 2) / m * n.modifier, v = r ? h * m : 0, f = r ? 0 : h * m, g = -d * Math.abs(m), w = r ? 0 : n.stretch * m, y = r ? n.stretch * m : 0, y = (Math.abs(y) < .001 && (y = 0), Math.abs(w) < .001 && (w = 0), Math.abs(g) < .001 && (g = 0), Math.abs(v) < .001 && (v = 0), "translate3d(" + y + "px," + w + "px," + g + "px) rotateX(" + (f = Math.abs(f) < .001 ? 0 : f) + "deg) rotateY(" + v + "deg)"); p.transform(y), p[0].style.zIndex = 1 - Math.abs(Math.round(m)), n.slideShadows && (w = r ? p.find(".swiper-slide-shadow-left") : p.find(".swiper-slide-shadow-top"), g = r ? p.find(".swiper-slide-shadow-right") : p.find(".swiper-slide-shadow-bottom"), 0 === w.length && (w = S('

    '), p.append(w)), 0 === g.length && (g = S('

    '), p.append(g)), w.length && (w[0].style.opacity = 0 < m ? m : 0), g.length && (g[0].style.opacity = 0 < -m ? -m : 0)) } (b.pointerEvents || b.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = l + "px 50%") }, setTransition: function (t) { this.slides.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t) } }, nt = { init: function () { var t = this.params.thumbs, e = this.constructor; t.swiper instanceof e ? (this.thumbs.swiper = t.swiper, U.extend(this.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), U.extend(this.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1 })) : U.isObject(t.swiper) && (this.thumbs.swiper = new e(U.extend({}, t.swiper, { watchSlidesVisibility: !0, watchSlidesProgress: !0, slideToClickedSlide: !1 })), this.thumbs.swiperCreated = !0), this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass), this.thumbs.swiper.on("tap", this.thumbs.onThumbClick) }, onThumbClick: function () { var t, e, i, s = this.thumbs.swiper; s && (t = s.clickedIndex, (i = s.clickedSlide) && S(i).hasClass(this.params.thumbs.slideThumbActiveClass) || null == t || (i = s.params.loop ? parseInt(S(s.clickedSlide).attr("data-swiper-slide-index"), 10) : t, this.params.loop && (s = this.activeIndex, this.slides.eq(s).hasClass(this.params.slideDuplicateClass) && (this.loopFix(), this._clientLeft = this.$wrapperEl[0].clientLeft, s = this.activeIndex), t = this.slides.eq(s).prevAll('[data-swiper-slide-index="' + i + '"]').eq(0).index(), e = this.slides.eq(s).nextAll('[data-swiper-slide-index="' + i + '"]').eq(0).index(), i = void 0 === t || void 0 !== e && e - s < s - t ? e : t), this.slideTo(i))) }, update: function (t) { var e = this.thumbs.swiper; if (e) { var i, s, a, n = "auto" === e.params.slidesPerView ? e.slidesPerViewDynamic() : e.params.slidesPerView, r = (this.realIndex !== e.realIndex && (i = e.activeIndex, a = e.params.loop ? (e.slides.eq(i).hasClass(e.params.slideDuplicateClass) && (e.loopFix(), e._clientLeft = e.$wrapperEl[0].clientLeft, i = e.activeIndex), s = e.slides.eq(i).prevAll('[data-swiper-slide-index="' + this.realIndex + '"]').eq(0).index(), a = e.slides.eq(i).nextAll('[data-swiper-slide-index="' + this.realIndex + '"]').eq(0).index(), void 0 === s ? a : void 0 === a ? s : a - i == i - s ? i : a - i < i - s ? a : s) : this.realIndex, e.visibleSlidesIndexes && e.visibleSlidesIndexes.indexOf(a) < 0 && (e.params.centeredSlides ? a = i < a ? a - Math.floor(n / 2) + 1 : a + Math.floor(n / 2) - 1 : i < a && (a = a - n + 1), e.slideTo(a, t ? 0 : void 0))), 1), o = this.params.thumbs.slideThumbActiveClass; if (1 < this.params.slidesPerView && !this.params.centeredSlides && (r = this.params.slidesPerView), this.params.thumbs.multipleActiveThumbs || (r = 1), r = Math.floor(r), e.slides.removeClass(o), e.params.loop || e.params.virtual && e.params.virtual.enabled) for (var l = 0; l < r; l += 1)e.$wrapperEl.children('[data-swiper-slide-index="' + (this.realIndex + l) + '"]').addClass(o); else for (var h = 0; h < r; h += 1)e.slides.eq(this.realIndex + h).addClass(o) } } }, M = [m, Y, G, v, g, y, E, { name: "mousewheel", params: { mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarged: "container" } }, create: function () { U.extend(this, { mousewheel: { enabled: !1, enable: x.enable.bind(this), disable: x.disable.bind(this), handle: x.handle.bind(this), handleMouseEnter: x.handleMouseEnter.bind(this), handleMouseLeave: x.handleMouseLeave.bind(this), animateSlider: x.animateSlider.bind(this), releaseScroll: x.releaseScroll.bind(this), lastScrollTime: U.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [] } }) }, on: { init: function () { !this.params.mousewheel.enabled && this.params.cssMode && this.mousewheel.disable(), this.params.mousewheel.enabled && this.mousewheel.enable() }, destroy: function () { this.params.cssMode && this.mousewheel.enable(), this.mousewheel.enabled && this.mousewheel.disable() } } }, { name: "navigation", params: { navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock" } }, create: function () { U.extend(this, { navigation: { init: L.init.bind(this), update: L.update.bind(this), destroy: L.destroy.bind(this), onNextClick: L.onNextClick.bind(this), onPrevClick: L.onPrevClick.bind(this) } }) }, on: { init: function () { this.navigation.init(), this.navigation.update() }, toEdge: function () { this.navigation.update() }, fromEdge: function () { this.navigation.update() }, destroy: function () { this.navigation.destroy() }, click: function (t) { var e, i = this.navigation, s = i.$nextEl, i = i.$prevEl; !this.params.navigation.hideOnClick || S(t.target).is(i) || S(t.target).is(s) || (s ? e = s.hasClass(this.params.navigation.hiddenClass) : i && (e = i.hasClass(this.params.navigation.hiddenClass)), !0 === e ? this.emit("navigationShow", this) : this.emit("navigationHide", this), s && s.toggleClass(this.params.navigation.hiddenClass), i && i.toggleClass(this.params.navigation.hiddenClass)) } } }, { name: "pagination", params: { pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: function (t) { return t }, formatFractionTotal: function (t) { return t }, bulletClass: "swiper-pagination-bullet", bulletActiveClass: "swiper-pagination-bullet-active", modifierClass: "swiper-pagination-", currentClass: "swiper-pagination-current", totalClass: "swiper-pagination-total", hiddenClass: "swiper-pagination-hidden", progressbarFillClass: "swiper-pagination-progressbar-fill", progressbarOppositeClass: "swiper-pagination-progressbar-opposite", clickableClass: "swiper-pagination-clickable", lockClass: "swiper-pagination-lock" } }, create: function () { U.extend(this, { pagination: { init: A.init.bind(this), render: A.render.bind(this), update: A.update.bind(this), destroy: A.destroy.bind(this), dynamicBulletIndex: 0 } }) }, on: { init: function () { this.pagination.init(), this.pagination.render(), this.pagination.update() }, activeIndexChange: function () { !this.params.loop && void 0 !== this.snapIndex || this.pagination.update() }, snapIndexChange: function () { this.params.loop || this.pagination.update() }, slidesLengthChange: function () { this.params.loop && (this.pagination.render(), this.pagination.update()) }, snapGridLengthChange: function () { this.params.loop || (this.pagination.render(), this.pagination.update()) }, destroy: function () { this.pagination.destroy() }, click: function (t) { this.params.pagination.el && this.params.pagination.hideOnClick && 0 < this.pagination.$el.length && !S(t.target).hasClass(this.params.pagination.bulletClass) && (!0 === this.pagination.$el.hasClass(this.params.pagination.hiddenClass) ? this.emit("paginationShow", this) : this.emit("paginationHide", this), this.pagination.$el.toggleClass(this.params.pagination.hiddenClass)) } } }, { name: "scrollbar", params: { scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag" } }, create: function () { U.extend(this, { scrollbar: { init: k.init.bind(this), destroy: k.destroy.bind(this), updateSize: k.updateSize.bind(this), setTranslate: k.setTranslate.bind(this), setTransition: k.setTransition.bind(this), enableDraggable: k.enableDraggable.bind(this), disableDraggable: k.disableDraggable.bind(this), setDragPosition: k.setDragPosition.bind(this), getPointerPosition: k.getPointerPosition.bind(this), onDragStart: k.onDragStart.bind(this), onDragMove: k.onDragMove.bind(this), onDragEnd: k.onDragEnd.bind(this), isTouched: !1, timeout: null, dragTimeout: null } }) }, on: { init: function () { this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate() }, update: function () { this.scrollbar.updateSize() }, resize: function () { this.scrollbar.updateSize() }, observerUpdate: function () { this.scrollbar.updateSize() }, setTranslate: function () { this.scrollbar.setTranslate() }, setTransition: function (t) { this.scrollbar.setTransition(t) }, destroy: function () { this.scrollbar.destroy() } } }, { name: "parallax", params: { parallax: { enabled: !1 } }, create: function () { U.extend(this, { parallax: { setTransform: Q.setTransform.bind(this), setTranslate: Q.setTranslate.bind(this), setTransition: Q.setTransition.bind(this) } }) }, on: { beforeInit: function () { this.params.parallax.enabled && (this.params.watchSlidesProgress = !0, this.originalParams.watchSlidesProgress = !0) }, init: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTranslate: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTransition: function (t) { this.params.parallax.enabled && this.parallax.setTransition(t) } } }, { name: "zoom", params: { zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed" } }, create: function () { var s = this, e = { enabled: !1, scale: 1, currentScale: 1, isScaling: !1, gesture: { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3 }, image: { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {} }, velocity: { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0 } }, a = ("onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach(function (t) { e[t] = J[t].bind(s) }), U.extend(s, { zoom: e }), 1); Object.defineProperty(s.zoom, "scale", { get: function () { return a }, set: function (t) { var e, i; a !== t && (e = s.zoom.gesture.$imageEl ? s.zoom.gesture.$imageEl[0] : void 0, i = s.zoom.gesture.$slideEl ? s.zoom.gesture.$slideEl[0] : void 0, s.emit("zoomChange", t, e, i)), a = t } }) }, on: { init: function () { this.params.zoom.enabled && this.zoom.enable() }, destroy: function () { this.zoom.disable() }, touchStart: function (t) { this.zoom.enabled && this.zoom.onTouchStart(t) }, touchEnd: function (t) { this.zoom.enabled && this.zoom.onTouchEnd(t) }, doubleTap: function (t) { this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(t) }, transitionEnd: function () { this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd() }, slideChange: function () { this.zoom.enabled && this.params.zoom.enabled && this.params.cssMode && this.zoom.onTransitionEnd() } } }, { name: "lazy", params: { lazy: { enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader" } }, create: function () { U.extend(this, { lazy: { initialImageLoaded: !1, load: Z.load.bind(this), loadInSlide: Z.loadInSlide.bind(this) } }) }, on: { beforeInit: function () { this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1) }, init: function () { this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load() }, scroll: function () { this.params.freeMode && !this.params.freeModeSticky && this.lazy.load() }, resize: function () { this.params.lazy.enabled && this.lazy.load() }, scrollbarDragMove: function () { this.params.lazy.enabled && this.lazy.load() }, transitionStart: function () { this.params.lazy.enabled && (this.params.lazy.loadOnTransitionStart || !this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded) && this.lazy.load() }, transitionEnd: function () { this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load() }, slideChange: function () { this.params.lazy.enabled && this.params.cssMode && this.lazy.load() } } }, { name: "controller", params: { controller: { control: void 0, inverse: !1, by: "slide" } }, create: function () { U.extend(this, { controller: { control: this.params.controller.control, getInterpolateFunction: z.getInterpolateFunction.bind(this), setTranslate: z.setTranslate.bind(this), setTransition: z.setTransition.bind(this) } }) }, on: { update: function () { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, resize: function () { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, observerUpdate: function () { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, setTranslate: function (t, e) { this.controller.control && this.controller.setTranslate(t, e) }, setTransition: function (t, e) { this.controller.control && this.controller.setTransition(t, e) } } }, { name: "a11y", params: { a11y: { enabled: !0, notificationClass: "swiper-notification", prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide", paginationBulletMessage: "Go to slide {{index}}" } }, create: function () { var e = this; U.extend(e, { a11y: { liveRegion: S('') } }), Object.keys(tt).forEach(function (t) { e.a11y[t] = tt[t].bind(e) }) }, on: { init: function () { this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation()) }, toEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, fromEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, paginationUpdate: function () { this.params.a11y.enabled && this.a11y.updatePagination() }, destroy: function () { this.params.a11y.enabled && this.a11y.destroy() } } }, { name: "history", params: { history: { enabled: !1, replaceState: !1, key: "slides" } }, create: function () { U.extend(this, { history: { init: I.init.bind(this), setHistory: I.setHistory.bind(this), setHistoryPopState: I.setHistoryPopState.bind(this), scrollToSlide: I.scrollToSlide.bind(this), destroy: I.destroy.bind(this) } }) }, on: { init: function () { this.params.history.enabled && this.history.init() }, destroy: function () { this.params.history.enabled && this.history.destroy() }, transitionEnd: function () { this.history.initialized && this.history.setHistory(this.params.history.key, this.activeIndex) }, slideChange: function () { this.history.initialized && this.params.cssMode && this.history.setHistory(this.params.history.key, this.activeIndex) } } }, { name: "hash-navigation", params: { hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 } }, create: function () { U.extend(this, { hashNavigation: { initialized: !1, init: P.init.bind(this), destroy: P.destroy.bind(this), setHash: P.setHash.bind(this), onHashCange: P.onHashCange.bind(this) } }) }, on: { init: function () { this.params.hashNavigation.enabled && this.hashNavigation.init() }, destroy: function () { this.params.hashNavigation.enabled && this.hashNavigation.destroy() }, transitionEnd: function () { this.hashNavigation.initialized && this.hashNavigation.setHash() }, slideChange: function () { this.hashNavigation.initialized && this.params.cssMode && this.hashNavigation.setHash() } } }, { name: "autoplay", params: { autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1 } }, create: function () { var e = this; U.extend(e, { autoplay: { running: !1, paused: !1, run: H.run.bind(e), start: H.start.bind(e), stop: H.stop.bind(e), pause: H.pause.bind(e), onVisibilityChange: function () { "hidden" === document.visibilityState && e.autoplay.running && e.autoplay.pause(), "visible" === document.visibilityState && e.autoplay.paused && (e.autoplay.run(), e.autoplay.paused = !1) }, onTransitionEnd: function (t) { e && !e.destroyed && e.$wrapperEl && t.target === this && (e.$wrapperEl[0].removeEventListener("transitionend", e.autoplay.onTransitionEnd), e.$wrapperEl[0].removeEventListener("webkitTransitionEnd", e.autoplay.onTransitionEnd), e.autoplay.paused = !1, e.autoplay.running ? e.autoplay.run() : e.autoplay.stop()) } } }) }, on: { init: function () { this.params.autoplay.enabled && (this.autoplay.start(), document.addEventListener("visibilitychange", this.autoplay.onVisibilityChange)) }, beforeTransitionStart: function (t, e) { this.autoplay.running && (e || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(t) : this.autoplay.stop()) }, sliderFirstMove: function () { this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause()) }, touchEnd: function () { this.params.cssMode && this.autoplay.paused && !this.params.autoplay.disableOnInteraction && this.autoplay.run() }, destroy: function () { this.autoplay.running && this.autoplay.stop(), document.removeEventListener("visibilitychange", this.autoplay.onVisibilityChange) } } }, { name: "effect-fade", params: { fadeEffect: { crossFade: !1 } }, create: function () { U.extend(this, { fadeEffect: { setTranslate: et.setTranslate.bind(this), setTransition: et.setTransition.bind(this) } }) }, on: { beforeInit: function () { var t; "fade" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "fade"), U.extend(this.params, t = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), U.extend(this.originalParams, t)) }, setTranslate: function () { "fade" === this.params.effect && this.fadeEffect.setTranslate() }, setTransition: function (t) { "fade" === this.params.effect && this.fadeEffect.setTransition(t) } } }, { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: .94 } }, create: function () { U.extend(this, { cubeEffect: { setTranslate: it.setTranslate.bind(this), setTransition: it.setTransition.bind(this) } }) }, on: { beforeInit: function () { var t; "cube" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "cube"), this.classNames.push(this.params.containerModifierClass + "3d"), U.extend(this.params, t = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0 }), U.extend(this.originalParams, t)) }, setTranslate: function () { "cube" === this.params.effect && this.cubeEffect.setTranslate() }, setTransition: function (t) { "cube" === this.params.effect && this.cubeEffect.setTransition(t) } } }, { name: "effect-flip", params: { flipEffect: { slideShadows: !0, limitRotation: !0 } }, create: function () { U.extend(this, { flipEffect: { setTranslate: st.setTranslate.bind(this), setTransition: st.setTransition.bind(this) } }) }, on: { beforeInit: function () { var t; "flip" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "flip"), this.classNames.push(this.params.containerModifierClass + "3d"), U.extend(this.params, t = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), U.extend(this.originalParams, t)) }, setTranslate: function () { "flip" === this.params.effect && this.flipEffect.setTranslate() }, setTransition: function (t) { "flip" === this.params.effect && this.flipEffect.setTransition(t) } } }, { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0 } }, create: function () { U.extend(this, { coverflowEffect: { setTranslate: at.setTranslate.bind(this), setTransition: at.setTransition.bind(this) } }) }, on: { beforeInit: function () { "coverflow" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "coverflow"), this.classNames.push(this.params.containerModifierClass + "3d"), this.params.watchSlidesProgress = !0, this.originalParams.watchSlidesProgress = !0) }, setTranslate: function () { "coverflow" === this.params.effect && this.coverflowEffect.setTranslate() }, setTransition: function (t) { "coverflow" === this.params.effect && this.coverflowEffect.setTransition(t) } } }, { name: "thumbs", params: { thumbs: { multipleActiveThumbs: !0, swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs" } }, create: function () { U.extend(this, { thumbs: { swiper: null, init: nt.init.bind(this), update: nt.update.bind(this), onThumbClick: nt.onThumbClick.bind(this) } }) }, on: { beforeInit: function () { var t = this.params.thumbs; t && t.swiper && (this.thumbs.init(), this.thumbs.update(!0)) }, slideChange: function () { this.thumbs.swiper && this.thumbs.update() }, update: function () { this.thumbs.swiper && this.thumbs.update() }, resize: function () { this.thumbs.swiper && this.thumbs.update() }, observerUpdate: function () { this.thumbs.swiper && this.thumbs.update() }, setTransition: function (t) { var e = this.thumbs.swiper; e && e.setTransition(t) }, beforeDestroy: function () { var t = this.thumbs.swiper; t && this.thumbs.swiperCreated && t && t.destroy() } } }]; return void 0 === p.use && (p.use = p.Class.use, p.installModule = p.Class.installModule), p.use(M), p }); var ANIUTIL = function () { function e(t) { function e(t) { this.opts = t, this.resizeTiming = t.resizeTiming || 100, this.setElement(), this.setVideoStyle(), this.bindEvent() } var i = e.prototype; i.setElement = function () { void 0 !== this.opts.wrapElement && (this.wrapElement = this.opts.wrapElement.jquery ? this.opts.wrapElement[0] : this.opts.wrapElement), void 0 !== this.opts.targetVideo && (this.targetVideo = this.opts.targetVideo.jquery ? this.opts.targetVideo[0] : this.opts.targetVideo) }, i.setVideoStyle = function () { this.wrapElement.style.overflow = "hidden", this.targetVideo.style.position = "absolute", this.targetVideo.style.top = "50%", this.targetVideo.style.left = "50%", this.targetVideo.style.transform = "translate(-50%, -50%)" }, i.bindEvent = function () { var t = this; window.addEventListener("load", function () { t.setVideoSize() }), window.addEventListener("resize", function () { t.setVideoSize() }) }, i.getVideoInfo = function () { this.wrapWidth = this.wrapElement.clientWidth, this.wrapHeight = this.wrapElement.clientHeight, this.videoWidth = this.targetVideo.clientWidth, this.videoHeight = this.targetVideo.clientHeight, this.wrapRatio = this.wrapHeight / this.wrapWidth, this.videoRatio = this.videoHeight / this.videoWidth }, i.setVideoSize = function () { var t = this; clearTimeout(null), setTimeout(function () { t.getVideoInfo(), t.wrapRatio < t.videoRatio ? (t.targetVideo.style.width = "100%", t.targetVideo.style.height = "auto") : (t.targetVideo.style.width = "auto", t.targetVideo.style.height = "100%") }, this.resizeTiming) }, new e(t) } function i(t) { var e, i, s = null, a = null, n = t ? t + 200 : 200, r = function () { null == s ? (i = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, e = document.body.clientHeight, i = window.pageYOffset + i.clientHeight, s = i / e) : e = document.body.clientHeight }, o = function () { clearTimeout(a), a = setTimeout(function () { window.scrollTo(0, e * s - window.innerHeight), s = null }, n) }; window.addEventListener("resize", function () { r(), o() }) } function s() { return !(-1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh")) && (!!("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) || void 0) } return { calRange: function (t) { return 0 < (t = { targetValue: (t = t).targetValue, progress: t.progress, startPoint: t.startPoint || 0, endPoint: t.endPoint || 100 }).startPoint && (t.endPoint = 0 < t.endPoint - t.startPoint ? t.endPoint - t.startPoint : t.endPoint), e = (e = (e = t.targetValue * (t.progress - t.startPoint) / t.endPoint) > t.targetValue ? t.targetValue : e) < 0 ? 0 : e; var e }, videoObjectFit: function (t) { e(t) }, addClass: function (t) { for (var e = t, i = e.classList.length, s = 0; s < i; s++)e.targetElement.classList.add(e.classList[s]) }, removeClass: function (t) { for (var e = t, i = e.classList.length, s = 0; s < i; s++)e.targetElement.classList.remove(e.classList[s]) }, scrollController: function (t) { var i, s = (s = t) || {}, e = navigator.userAgent.toLowerCase(), a = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, n = s.speed || 120, r = 0 <= s.duration ? s.duration : 1, o = a.scrollTop, l = a === document.body && document.documentElement ? document.documentElement : a, h = !1, d = null, t = function () { "Netscape" == navigator.appName && -1 != navigator.userAgent.search("Trident") || -1 != e.indexOf("msie") ? document.addEventListener("mousewheel", function (t) { "hidden" != document.documentElement.style.overflow && u.scrollEvent(t) }, { passive: !1 }) : document.addEventListener("wheel", function (t) { u.hasScrollBox(t.target) || u.scrollEvent(t) }, { passive: !1 }) }, c = function () { window.addEventListener("scroll", function () { "hidden" == document.documentElement.style.overflow || h || (o = a.scrollTop) }) }, u = { scrollEvent: function (t) { t.preventDefault(); var e = document.body.getAttribute("data-scroll-speed"), t = this.normalizeWheelDelta(t), e = s.currDelta && e ? e : e || n ? n : 120; o += -t * e, i = Math.max(0, Math.min(o, a.scrollHeight - l.clientHeight)), this.update() }, normalizeWheelDelta: function (t) { return t.detail ? t.wheelDelta ? t.wheelDelta / t.detail / 40 * (0 < t.detail ? 1 : -1) : -t.detail / 3 : t.wheelDelta / 120 }, update: function () { var t = i - a.scrollTop, t = Math.ceil(a.scrollTop + t) <= 0 ? 0 : i < o ? i : Math.ceil(a.scrollTop + t); h = !0, TweenMax.to(a, r, { ease: "power1.out", scrollTop: t, onComplete: function () { clearTimeout(d), d = null, d = setTimeout(function () { h = !1, o = a.scrollTop }, 500) } }), o <= 0 ? o = 0 : i <= o && (o = i) }, hasScrollBox: function (t) { for (; t && t !== document.body && t !== document;) { var e = window.getComputedStyle(t).overflow; if (e && (-1 < e.indexOf("auto") || -1 < e.indexOf("scroll"))) return !0; t = t.parentNode } return !1 } }; window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame, -1 == e.indexOf("chrome") && -1 != e.indexOf("safari") || (t(), c()) }, resizeScrollOffset: function (t) { i(t) }, checkTouchDevice: s, checkFold: function () { var t, e = screen.width / screen.height, i = s() && .7137 < e && e < .8 && "width=768" == document.getElementsByName("viewport")[0].content, e = s() && .8 < e && e < .95 && "width=768" == document.getElementsByName("viewport")[0].content; return i ? t = "isFold" : e && (t = "isFoldLatest"), t }, deviceConsole: function (t, e) { var i, s; document.querySelector(".console-layer") || ((i = document.createElement("div")).classList.add("console-layer"), i.setAttribute("style", "position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; background: #fff;"), document.querySelector("body").append(i)), "multi" == e ? (i = document.querySelector(".console-layer"), (s = document.createElement("div")).classList.add("console-value"), s.setAttribute("style", "border: 1px #ddd solid; float: left; padding: 10px;"), i.append(s)) : s = (document.querySelector(".console-value") || ((s = document.createElement("div")).classList.add("console-value"), s.setAttribute("style", "border: 1px #ddd solid; float: left; padding: 10px;"), i.append(s)), document.querySelector(".console-value")), s.innerHTML = t }, percentToPixel: function (t) { return t.targetValue * (t.progress / 100) }, responsiveHandler: function (s) { var a, t, n, r, e = window.resolutionStatus = null, s = (window.innerWidth, { resolution: s.resolution, statusName: s.statusName || [], callback: s.callback || [], activeTiming: s.activeTiming || 100 }), i = function () { r = window.innerWidth; for (var t = 0; t < s.resolution.length; t++) { var e = s.resolution[t], i = s.resolution[t + 1] || 0; r <= e && i < r && a != s.statusName[t] || r <= e && i < r && n != t ? (document.documentElement.classList.remove(a), a = s.statusName[t] || t, n = t, document.documentElement.classList.add(a)) : (r >= s.resolution[0] && a != s.statusName[0] || r >= s.resolution[0] && !n) && (document.documentElement.classList.remove(a), a = s.statusName[0] || t, n = t, document.documentElement.classList.add(a)) } }, o = function () { clearTimeout(e), console.log(s.activeTiming), t != n && s.callback[n] && (e = setTimeout(function () { s.callback[n](), e = null, t = n }, s.activeTiming)) }; return function () { return window.addEventListener("DOMContentLoaded", function () { i(), t = n }), window.addEventListener("resize", function () { i(), o() }), this }() } } }(); window.WATCH6 = window.WATCH6 || {}; const UTILS = function () { return { isIosDevice: ((s = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), s), checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom")), checkOS: (s = (s = navigator.appVersion.match(/(mac|win|linux)/i)) ? s[1].toLowerCase() : "", void document.documentElement.classList.add(s)), isFireFox: void (/firefox/i.test(navigator.userAgent) && document.documentElement.classList.add("firefox")), isWebkit: void (/applewebkit/i.test(navigator.userAgent) && document.documentElement.classList.add("webkit")), isChrome: void (/chrome/i.test(navigator.userAgent) && document.documentElement.classList.add("chrome")), isOpera: void (/opera/i.test(navigator.userAgent) && document.documentElement.classList.add("opera")), isIos: void (/ip(ad|hone|od)/i.test(navigator.userAgent) && document.documentElement.classList.add("ios")), isCrIos: void (/crios/i.test(navigator.userAgent) && document.documentElement.classList.add("crios")), isAndroid: void (/android/i.test(navigator.userAgent) && document.documentElement.classList.add("android")), isSafari: (s = /applewebkit/i.test(navigator.userAgent), i = /chrome/i.test(navigator.userAgent), void (s && !i && document.documentElement.classList.add("safari"))), isHuawei: void (/HUAWEICLT/i.test(navigator.userAgent) && document.documentElement.classList.add("huawei")), isUCBrowser: void (/UCBrowser/i.test(navigator.userAgent) && document.documentElement.classList.add("ucbrowser")), winSize: (s = "Netscape" === navigator.appName, i = -1 !== navigator.appVersion.indexOf("Mac"), t = -1 !== navigator.userAgent.indexOf("Safari"), e = -1 !== navigator.userAgent.indexOf("Chrome"), s && !i && t && !e ? function () { return { w: $(win).width(), h: $(win).height() } } : function () { return { w: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, h: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight } }), requestAFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) { return window.setTimeout(t, 1e3 / 60) }, cancelAFrame: window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function (t) { window.clearTimeout(t) }, isObject: function (t) { return "object" == typeof t && null !== t && t.constructor && t.constructor === Object }, def: function () { for (var t = [], e = arguments.length; e--;)t[e] = arguments[e]; for (var i = Object(t[0]), s = 1; s < t.length; s += 1) { var a = t[s]; if (null != a) for (var n = Object.keys(Object(a)), r = 0, o = n.length; r < o; r += 1) { var l = n[r], h = Object.getOwnPropertyDescriptor(a, l); void 0 !== h && h.enumerable && (this.isObject(i[l]) && this.isObject(a[l]) ? this.def(i[l], a[l]) : !this.isObject(i[l]) && this.isObject(a[l]) ? (i[l] = {}, this.def(i[l], a[l])) : i[l] = a[l]) } } return i }, convertArray: function (t) { return Array.prototype.slice.call(t) }, getOffset: function (t) { return { top: t.getBoundingClientRect().top + window.pageYOffset, bottom: t.getBoundingClientRect().bottom + window.pageYOffset } }, getScroll: function () { var t = window.pageYOffset; return { top: t, bottom: t + window.innerHeight } }, getViewPort: function () { var t = window, e = "inner"; return "innerWidth" in window || (e = "client", t = document.documentElement || document.body), { width: t[e + "Width"], height: t[e + "Height"] } }, getCurrentDevice: function () { var t = UTILS.getViewPort().width; return 1024 <= t ? "desktop" : t < 1024 && 768 <= t ? "tablet" : "mobile" }, isInVerticalViewPort: function (t) { t = t.getBoundingClientRect(); return t.top - 200 <= UTILS.getViewPort().height && 0 <= t.bottom }, isInHorizontalViewPort: function (t) { t = t.getBoundingClientRect(); return t.left - 200 <= UTILS.getViewPort().width && 0 <= t.right + 200 }, isVerticalVisible: function (t) { return UTILS.isInVerticalViewPort(t) && !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length) }, isHorizontalVisible: function (t) { return UTILS.isInHorizontalViewPort(t) && !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length) }, setCookie: function (t, e, i) { var s = new Date; s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3), document.cookie = t + "=" + e + "; exprires=" + s.toUTCString() + "; path=/" }, getCookie: function (t) { t = document.cookie.match("(^|;) ?" + t + "=([^;]*)(;|$)"); return t ? t[2] : null }, triggerEvent: function (t, e, i, s, a) { var n, i = i || null, s = s || !1, a = a || !0; null == i ? (n = document.createEvent("HTMLEvents")).initEvent(e, s, a) : (n = document.createEvent("CustomEvent")).initCustomEvent(e, s, a, i), t.dispatchEvent(n) }, visibleScroll: function () { document.documentElement.classList.contains("isTouchDevice") || !0 === this.scrollFlag && (this.scrollFlag = !1, document.body.style.position = "", document.body.style.width = "", document.body.style.top = "", document.body.style.boxSizing = "", document.body.style.paddingRight = "", document.documentElement.style.overflow = "", null !== this.popupEl && (this.popupEl.style.paddingRight = "", this.popupEl = null), window.scrollTo(0, this.currentPos)) }, hiddenScroll: function (t) { var e; document.documentElement.classList.contains("isTouchDevice") || (this.popupEl = t || null, this.scrollFlag = !0, this.currentPos = window.pageYOffset || document.documentElement.scrollTop, t = window.innerWidth - document.documentElement.clientWidth, e = 0 < this.currentPos ? "-" + this.currentPos + "px" : 0, document.body.style.position = "fixed", document.body.style.width = "100%", document.body.style.top = e, document.body.style.boxSizing = "border-box", document.body.style.paddingRight = t + "px", document.documentElement.style.overflow = "hidden", null !== this.popupEl && (this.popupEl.style.paddingRight = t + "px")) }, closest: function (t, e) { do { if (t == document.documentElement) return null; if (t.matches ? t.matches(e) : t.msMatchesSelector(e)) return t } while (null !== (t = t.parentElement || t.parentNode) || 1 === t.nodeType); return null }, onPopupAccessibility: function (t) { t.setAttribute("aria-hidden", !0), t.setAttribute("tabindex", -1); for (var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++) { var s = e[i].getAttribute("aria-hidden"), a = e[i].getAttribute("tabindex"); null != s && null == e[i].getAttribute("data-prev-aria-hidden") && e[i].setAttribute("data-prev-aria-hidden", s), null != a && null == e[i].getAttribute("data-prev-tabindex") && e[i].setAttribute("data-prev-tabindex", a), e[i].setAttribute("tabindex", -1), e[i].setAttribute("aria-hidden", !0) } }, offPopupAccessibility: function (t) { t.removeAttribute("aria-hidden"), t.removeAttribute("tabindex"); for (var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++) { var s = e[i].getAttribute("data-prev-aria-hidden"), a = e[i].getAttribute("data-prev-tabindex"); null != s ? e[i].setAttribute("aria-hidden", s) : e[i].removeAttribute("aria-hidden"), null != a ? e[i].setAttribute("tabindex", a) : e[i].removeAttribute("tabindex"), e[i].removeAttribute("data-prev-aria-hidden"), e[i].removeAttribute("data-prev-tabindex") } }, onAccessibility: function (t) { if (!document.documentElement.classList.contains("is-layer-popup-opened")) { t.setAttribute("aria-hidden", !0), t.setAttribute("tabindex", -1); for (var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++)e[i].setAttribute("tabindex", -1), e[i].setAttribute("aria-hidden", !0) } }, offAccessibility: function (t) { if (!document.documentElement.classList.contains("is-layer-popup-opened")) { t.removeAttribute("aria-hidden"), t.removeAttribute("tabindex"); for (var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++)e[i].removeAttribute("tabindex"), e[i].removeAttribute("aria-hidden") } }, extend: function (e, i) { return Object.keys(i).forEach(function (t) { e[t] = i[t] }), e }, getHeight: function (t) { var e, i, s; return t ? (e = (i = window.getComputedStyle(t)).display, i = parseInt(i.maxHeight), s = 0, "none" != e && 0 != i ? t.offsetHeight : (t.style.position = "absolute", t.style.visibility = "hidden", t.style.display = "block", s = t.offsetHeight, t.style.display = "", t.style.position = "", t.style.visibility = "", s)) : 0 }, setLastActiveItem: function (t) { this.lastActiveItem = t || null }, getLastActiveItem: function () { return null != this.lastActiveItem ? this.lastActiveItem : null }, isRTL: function () { return document.documentElement.classList.contains("rtl") }, checkRegion: function () { for (var t = document.getElementsByTagName("meta"), e = "", i = 0; i < t.length; i++)if ("sitecode" == t[i].getAttribute("name")) return e = t[i].getAttribute("content"); if ("" == e) return -1 < document.location.pathname.indexOf("global") ? "global" : "jp" }, isLowNetwork: function () { var t = "___GALAXY_SPEED"; return null != UTILS.getCookie(t) && null != UTILS.getCookie(t) && ("L" == UTILS.getCookie(t) || "H" != UTILS.getCookie(t) && void 0) }, getQueryString: function (t) { var e = (s = location.href).indexOf("?") + 1, i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length; if (0 == e) return ""; for (var s = (s = s.substring(e, i)).split("&"), a = "", n = 0; n < s.length; n++) { var r = s[n].split("="); if (2 != r.length) break; r[0] == t && (a = r[1]); break } return a }, customParallax: function (t) { var e = t.mode || "center", i = t.delay || 0, s = t.ease || "Power0.easeNone", a = t.transZ || 0, n = t.duration || .3, r = t.distance || 0, o = t.correction || 0, l = t.windowCorrection ? window.innerHeight * t.windowCorrection : 0, h = t.direction || 1, d = t.activeElement, c = t.targetElement || d, u = t.wrapperElement || d, t = t.unit || "px", p = window.pageYOffset, m = window.pageYOffset + window.innerHeight, d = d.getBoundingClientRect(), v = p + u.getBoundingClientRect().top, u = v + u.getBoundingClientRect().height, f = window.innerHeight + d.height + 2 * l, g = "center" == e ? d.top - (window.innerHeight - d.height) / 2 : d.top - window.innerHeight; "px" == t && (r = d.height * r / 100), v <= m + l && p - l <= u && TweenMax.to(c, n, { y: o + g * ("center" == e ? 2 * r : r) / f * h + t, z: a, ease: s, delay: i }) }, getNavHeight: function () { var t, e, i = 0, s = document.querySelector(".pd-g-header-navigation") || document.querySelector("#subnav") || document.querySelector(".sticky-menu") || document.querySelector(".pd-g-floating-nav"); return i = s ? s.classList.contains("pd-g-header-navigation") ? (e = (t = s.querySelector(".pd-header-navigation")).querySelector(".pd-header-navigation__menu-wrap"), t.clientHeight + e.clientHeight) : s.clientHeight : i }, isBrokenFixed: function () { var t = window.innerWidth, e = window.innerHeight, i = !1; return document.documentElement.classList.remove("is-broken-fixed"), 1440 <= t && e <= 540 || t <= 810 && e / t < .5277 || t / window.outerWidth < .4 || e < UTILS.MIN_VIEW_HEIGHT ? (document.documentElement.classList.add("is-broken-fixed"), i = !0) : document.documentElement.classList.remove("is-broken-fixed"), i }, isFullAnimationBrokenFixed: () => { var t = window.innerWidth, e = window.innerHeight, i = !!UTILS.isTouchDevice && window.matchMedia("(orientation: landscape)").matches; let s = !1; return !!UTILS.isTouchDevice && !window.matchMedia("(orientation: landscape)").matches && e / t < 1.5 || i || e < 700 ? (document.documentElement.classList.add("is-animation-broken-fixed"), s = !0) : document.documentElement.classList.remove("is-animation-broken-fixed"), s }, isTouchDevice: ((s = "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), s), isIEorEdge: function () { var t, e = navigator.userAgent.toLowerCase(); if ("Microsoft Internet Explorer" == navigator.appName) t = "msie "; else if (-1 < e.search("trident")) t = "trident/.*rv:"; else { if (!(-1 < e.search("edge/"))) return -1; t = "edge/" } return null != new RegExp(t + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(e) ? (document.documentElement.classList.add("isIEorEdge"), parseFloat(RegExp.$1 + RegExp.$2)) : -1 }(), page: { scrollLock: { className: "is-no-scroll", barWidth: function () { return window.innerWidth - document.documentElement.clientWidth }, el: $("html"), run: function (t) { document.documentElement.style.paddingRight = t + "px" }, off: function () { this.barWidth(); this.el.removeClass(this.className), this.el.removeClass("hive-layer-scroll-lock"), this.run(0) }, on: function () { var t = this.barWidth(); this.el.addClass(this.className), this.run(t) } } }, MIN_VIEW_HEIGHT: 400, RESPONSIVE: { PC: { NAME: "pc", WIDTH: 1440 }, TABLET: { NAME: "tablet", WIDTH: 1024 }, MOBILE: { NAME: "mobile", WIDTH: 767 } } }; var t, e, i, s }(); WATCH6.UTILS = UTILS; var SCROLLER = function () { function e(t) { this.initialize = !0, this.opts = t, this.correction = t.correction || 0, this.removeCorrection = t.removeCorrection || 0, this.trackHeight = t.trackHeight || 0, this.activeClass = t.activeClass, this.activeCallbackClass = t.activeCallbackClass || "callback-active", this.useStrictMode = null == t.useStrictMode || t.useStrictMode, this.useFixed = t.useFixed || !1, this.useFixedStyle = null == t.useFixedStyle || t.useFixedStyle, this.useSticky = t.useSticky || !1, this.useStickyStyle = null == t.useStickyStyle || t.useStickyStyle, this.useViewportOver = t.useViewportOver || !0, this.activeVisibility = t.activeVisibility || "before", this.activeType = t.activeType ? this.opts.activeType : "reverse", this.autoHeight = null == t.autoHeight || t.autoHeight, this.offsetY = t.offsetY || 0, this.resize = null == t.resize || t.resize, this.resizeTiming = null != t.resizeTiming && t.resizeTiming, this.windowHeight = window.innerHeight, this.oldPregress = 0, this.oldWinScrollTop = 0, this.elementInformation = {}, this.isFixedArea = !1, this.checkTouchDevice = !1, this.elementEventList.setElement.call(this), this.bindEvent() } var t = e.prototype; return t.bindEvent = function () { var t = this, e = null; this.elementHandler(), this.resize && (this.addEventList = function () { t.resizeTiming ? (clearTimeout(e), e = setTimeout(function () { t.windowHeight = window.innerHeight, t.elementHandler() }, t.resizeTiming)) : (t.windowHeight = window.innerHeight, t.elementHandler()) }, window.addEventListener("resize", this.addEventList)), this.opts.IEScroll && this.utilList.IEScrollHandler.call(this) }, t.elementHandler = function () { return this.elementEventList.setTrackStyle.call(this), this.getFixedState(), 1 < this.trackHeight && this.elementEventList.setTrackHeigh.call(this), !this.useSticky && this.useFixed && this.useFixedStyle && this.elementEventList.setFixedStyle.call(this), this.useSticky && !this.useFixed && this.useStickyStyle && this.elementEventList.setStickyStyle.call(this), this }, t.utilList = { checkTouchDevice: function () { return -1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh") ? this.checkTouchDevice = !1 : "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch ? this.checkTouchDevice = !0 : void 0 }, IEScrollHandler: function () { navigator.userAgent.match(/Trident\/7\./) && (this.body.addEventListener("mousewheel", function (t) { t.preventDefault(); var t = t.wheelDelta, e = window.pageYOffset; window.scrollTo(0, e - t) }), this.body.addEventListener("keydown", function (t) { var e = window.pageYOffset; switch (t.which) { case 38: t.preventDefault(), window.scrollTo(0, e - 40); break; case 40: t.preventDefault(), window.scrollTo(0, e + 40); break; default: return } })) }, getScroll: function () { var t = window.pageYOffset; return { top: t, bottom: t + this.windowHeight } }, getOffset: function (t) { return { top: t.getBoundingClientRect().top + window.pageYOffset, bottom: t.getBoundingClientRect().bottom + window.pageYOffset } }, getUserAgent: function () { return navigator.userAgent } }, t.elementEventList = { setElement: function () { this.body = document.querySelector("body"), void 0 !== this.opts.trackElement && (this.trackElement = this.opts.trackElement.jquery ? this.opts.trackElement[0] : this.opts.trackElement), void 0 !== this.opts.fixedElement && (this.fixedElement = this.opts.fixedElement.jquery ? this.opts.fixedElement[0] : this.opts.fixedElement), void 0 !== this.opts.activeElement && (this.activeElement = this.opts.activeElement.jquery ? this.opts.activeElement[0] : this.opts.activeElement) }, setTrackHeigh: function () { var t, e; this.trackHeight <= 1 || (this.trackElement.style.height = "", t = 0 == this.trackElement.clientHeight, e = this.windowHeight * this.trackHeight, t && (this.trackElement.style.height = this.windowHeight + "px"), this.trackElement.style.height = e + "px") }, setTrackStyle: function () { this.trackElement && this.useFixed && "static" == window.getComputedStyle(this.trackElement).position && (this.trackElement.style.position = "relative") }, setFixedStyle: function () { this.isFixedArea || (this.fixedElement.style.height = "", this.fixedElement.style.top = "", this.fixedElement.style.position = "absolute"), 0 == this.fixedElement.clientWidth && (this.fixedElement.style.width = "100%"), this.autoHeight && ("string" == typeof this.offsetY ? (this.fixedElement.style.height = "calc(" + this.windowHeight + "px - " + this.offsetY + ")", this.fixedElement.style.top = this.offsetY) : (this.fixedElement.style.height = this.windowHeight - this.offsetY + "px", this.fixedElement.style.top = this.offsetY + "px")) }, setStickyStyle: function () { this.isFixedArea || (this.fixedElement.style.position = "sticky"), 0 == this.fixedElement.clientWidth && (this.fixedElement.style.width = "100%") }, setFixedElement: function () { this.diffHeight = this.windowHeight - this.fixedElement.clientHeight, this.trackTopOffset = this.utilList.getOffset.call(this, this.trackElement).top, this.trackBottomOffset = this.utilList.getOffset.call(this, this.trackElement).bottom, this.winScrollTop <= this.trackTopOffset ? (this.fixedElement.style.position = "absolute", "string" == typeof this.offsetY ? this.fixedElement.style.top = this.offsetY : this.fixedElement.style.top = this.offsetY + "px", this.fixedElement.style.bottom = "") : this.winScrollBottom >= this.trackBottomOffset ? (this.fixedElement.style.position = "absolute", this.fixedElement.style.top = this.trackElement.clientHeight - this.fixedElement.clientHeight + "px") : this.isFixedArea || (this.fixedElement.style.position = "fixed", this.fixedElement.style.top = "0") } }, t.getWheelDirection = function () { this.winScrollTop >= this.oldWinScrollTop ? this.wheelDirection = "down" : this.wheelDirection = "up", this.oldWinScrollTop = this.winScrollTop }, t.getProgress = function () { var t = this.utilList.getOffset.call(this, this.trackElement).top - this.windowHeight * this.correction, e = this.useFixed || this.useSticky ? Math.abs(this.trackElement.clientHeight - this.windowHeight) : this.useViewportOver ? this.trackElement.clientHeight + this.windowHeight : this.trackElement.clientHeight, i = this.winScrollTop - t, t = this.winScrollBottom - t, i = this.useFixed || this.useSticky ? i / e * 100 : t / e * 100; return this.useStrictMode ? this.progress = Math.floor(i) < 0 ? 0 : 100 < Math.floor(i) ? 100 : Math.floor(i) : this.progress = i, this.getWheelDirection(), this.progress }, t.getFixedState = function () { 0 < this.progress && this.progress < 100 ? this.isFixedArea = !0 : this.isFixedArea = !1 }, t.trackAnimation = function (t) { this.initialize && (this.winScrollTop = this.utilList.getScroll.call(this).top - this.windowHeight * this.correction, this.winScrollBottom = this.utilList.getScroll.call(this).bottom, this.useFixed && !this.useSticky && this.elementEventList.setFixedElement.call(this), this.getProgress(), this.getFixedState(), t && (this.oldPregress !== this.progress && t.call(this), this.oldPregress = this.progress)) }, t.activeAnimation = function () { if (this.initialize) { this.winScrollTop = this.utilList.getScroll.call(this).top, this.winScrollBottom = this.utilList.getScroll.call(this).bottom, this.trackElementHeight = this.trackElement.clientHeight, this.correctionValue = this.trackElementHeight * this.correction, this.removeCorrectionValue = this.trackElementHeight * this.removeCorrection, this.elementOffsetTop = this.utilList.getOffset.call(this, this.trackElement).top, this.elementOffsetBottom = this.utilList.getOffset.call(this, this.trackElement).bottom, this.downScrollTop = this.winScrollTop - this.correctionValue, this.downScrollBottom = this.winScrollBottom - this.correctionValue, this.upScrollTop = this.winScrollTop + this.correctionValue, this.upScrollBottom = this.winScrollBottom + this.correctionValue; function t() { l(), r() } function e() { h(), o() } var i = this, s = this.activeVisibility, a = this.activeType, n = this.windowHeight / 2, r = function () { if (i.activeClass) if ("object" == typeof i.activeClass) for (var t = i.activeClass.length, e = 0; e < t; e++)i.activeElement.classList.contains(i.activeClass[e]) || i.activeElement.classList.add(i.activeClass[e]); else i.activeElement.classList.contains(i.activeClass) || i.activeElement.classList.add(i.activeClass) }, o = function () { if ("object" == typeof i.activeClass) for (var t = i.activeClass.length, e = 0; e < t; e++)i.activeElement.classList.contains(i.activeClass[e]) && i.activeElement.classList.remove(i.activeClass[e]); else i.activeElement.classList.contains(i.activeClass) && i.activeElement.classList.remove(i.activeClass); i.activeElement.classList.contains(i.activeCallbackClass) && i.activeElement.classList.remove(i.activeCallbackClass) }, l = function () { i.activeElement.classList.contains(i.activeCallbackClass) || i.opts.activeCallback && (i.opts.activeCallback.call(i), i.activeElement.classList.add(i.activeCallbackClass)) }, h = function () { i.activeElement.classList.contains(i.activeCallbackClass) && i.opts.endCallback && i.opts.endCallback.call(i) }; switch (this.getWheelDirection(), s) { case "before": ("down" == this.wheelDirection && this.downScrollBottom >= this.elementOffsetTop && this.downScrollTop <= this.elementOffsetTop || "up" == this.wheelDirection && this.upScrollTop <= this.elementOffsetBottom && this.upScrollBottom >= this.elementOffsetBottom || "oneWay" == this.activeType && this.downScrollBottom >= this.elementOffsetTop) && (t(), this.activeStatus = !0); break; case "visible": ("down" == this.wheelDirection && this.downScrollBottom >= this.elementOffsetTop + n && this.downScrollTop <= this.elementOffsetTop || "up" == this.wheelDirection && this.upScrollTop <= this.elementOffsetBottom - n && this.upScrollBottom >= this.elementOffsetBottom || "oneWay" == this.activeType && this.downScrollBottom >= this.elementOffsetTop + n) && (t(), this.activeStatus = !0) }switch (a) { case "reverse": "visible" == s ? (this.activeStatus && "down" == this.wheelDirection && this.winScrollTop > this.elementOffsetBottom || this.activeStatus && "up" == this.wheelDirection && this.winScrollBottom < this.elementOffsetTop) && (e(), this.activeStatus = !1) : (this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop || this.activeStatus && this.winScrollTop > this.elementOffsetBottom && this.winScrollBottom > this.elementOffsetBottom) && (e(), this.activeStatus = !1); break; case "oneWay": "visible" == s ? this.activeStatus && this.winScrollBottom < this.elementOffsetTop + n && (e(), this.activeStatus = !1) : this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop && (e(), this.activeStatus = !1) } } }, t.getElementInformation = function () { return this.trackElement && (this.elementInformation.trackElement = { element: this.trackElement, width: this.trackElement.clientWidth, height: this.trackElement.clientHeight, topOffset: this.utilList.getOffset.call(this, this.trackElement).top, bottomOffset: this.utilList.getOffset.call(this, this.trackElement).bottom }), this.activeElement && (this.elementInformation.activeElement = { element: this.activeElement, width: this.activeElement.clientWidth, height: this.activeElement.clientHeight, topOffset: this.utilList.getOffset.call(this, this.activeElement).top, bottomOffset: this.utilList.getOffset.call(this, this.activeElement).bottom }), this.elementInformation }, t.destroy = function (t) { this.trackElement && (this.trackElement.style.position = "", this.trackElement.style.height = ""), this.fixedElement && (this.fixedElement.style.position = "", this.fixedElement.style.top = "", this.fixedElement.style.height = ""), this.trackElement = "", this.fixedElement = "", this.activeElement = "", this.correction = "", this.trackHeight = "", this.activeCallbackClass = "", this.useFixed = "", this.activeVisibility = "", this.activeType = "", this.offsetY = "", this.resize = "", this.windowHeight = "", this.elementInformation = "", window.removeEventListener("load", this.addEventList), window.removeEventListener("resize", this.addEventList), this.initialize = !1 }, function (t) { return new e(t) } }(); !function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const u = WATCH6.UTILS; WATCH6.ImageLoader = class { constructor(t = container, e) { e = { el: t, lazyClass: ".js-img-src", lazyCompleteClass: "load-complete", startLazyClass: e.startLazyClass || ".js-start-img-src", endLazyClass: e.endLazyClass || ".js-end-img-src", responsiveClass: e.responsiveClass || ".js-res-img", loadOption: e.loadOption, visiblePoint: e.visiblePoint || 0, useDefaultImg: e.useDefaultImg, resizeStart: null }; this.opts = e, this.classes = e.classes, this.el = document.querySelector(t), this.init() } init() { this.initOpts(), this.getLazyImage(), this.getResponsiveImage(), this.bindEvents() } initOpts() { this.targetAttr = this.opts.loadOption[0].attribute, this.responsiveCheck = this.opts.loadOption, this.dynamicCallCount = 0, this.dynamicLoadedComplate = !1, this.opts.useDefaultImg && this.setDefaultImage() } getLazyImage() { const t = Array.from(this.el.querySelectorAll(this.opts.lazyClass)); var e = Array.from(this.el.querySelectorAll(this.opts.startLazyClass)), e = t.concat(e); this.lazyImages = e, this.lazyLength = e.length } getResponsiveImage() { var t = this.el.querySelectorAll(this.opts.responsiveClass); this.responsiveImages = t, this.responsiveLength = t.length } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener("resize", this.onResizeHandler.bind(this)) } onLoadHandler() { this.responsiveHandler(), this.lazyEvent() } onResizeHandler() { clearTimeout(this.opts.resizeStart), this.opts.resizeStart = setTimeout(() => { this.responsiveHandler(), this.lazyEvent() }, 80) } lazyEvent() { this.setLazyImage(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener("scroll", this.lazyEvent.bind(this)) } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let s = 0; s < a; s++) { let t = s + 1, e = t == a ? 0 : this.opts.loadOption[t].resolution, i = !1; (i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > e) && this.opts.loadOption[s].attribute !== this.oldAttr && (this.targetAttr = this.opts.loadOption[s].attribute, this.oldAttr = this.targetAttr, this.attrIndex = s, this.dynamicCallCount = 0, this.setResponsiveImage()) } } setResponsiveImage(i) { if (i) for (let e = 0; e < i.length; e++) { var s = i[e]; let t = i[e].getAttribute(this.targetAttr); t = t || this.findImageHandler(s), i[e].classList.contains(this.opts.lazyCompleteClass) || (i[e].setAttribute("src", t), i[e].classList.add(this.opts.lazyCompleteClass)) } else for (let i = 0; i < this.responsiveLength; i++) { let t = this.responsiveImages[i], e = t.getAttribute(this.targetAttr); e = e || this.findImageHandler(t), t.classList.contains(this.opts.lazyCompleteClass) && t.setAttribute("src", e) } } checkCompleteImage() { var t = this.el.querySelectorAll("." + this.opts.lazyCompleteClass); this.lazyCompleteLength = t.length } setDefaultImage() { for (var t = 0; t < this.lazyLength; t++)this.lazyImages[t].setAttribute("src", "data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQFAAAAACwAAAAAAQABAAACAkQBADs=") } setLazyImage() { this.windowHeight = window.innerHeight; for (let d = 0; d < this.lazyLength; d++) { let e = this.lazyImages[d], t = this.windowHeight * this.opts.visiblePoint, i = u.getScroll.call(this).top - t, s = u.getScroll.call(this).bottom + t, a = u.getOffset.call(this, e).top, n = u.getOffset.call(this, e).bottom, r = this.opts.lazyClass.split("."), o = r[r.length - 1], l = this.opts.startLazyClass.split("."), h = l[l.length - 1]; if ((a < s && i <= a || i < n && n < s || i < a && n < s || a < i && s < n) && null != e.offsetParent) { let t = e.getAttribute(this.targetAttr); var c; t = t || this.findImageHandler(e), e.classList.contains(this.opts.lazyCompleteClass) || (e.setAttribute("src", t), c = () => { 1 == this.opts.startLazyClass.split(" ").length && e.classList.remove(h), 1 == this.opts.lazyClass.split(" ").length && e.classList.remove(o), this.checkCompleteImage(), e.removeEventListener("load", c) }, e.addEventListener("load", c), e.classList.add(this.opts.lazyCompleteClass)) } } } findRemainingImageAttr(t) { for (var e = this.opts.loadOption.length, i = 0; i < e; i++) { var s = t.getAttribute(this.opts.loadOption[i].attribute); if (s) return s } } findNextImageAttr(e) { for (let t = this.attrIndex; 0 <= t; t--) { var i = e.getAttribute(this.opts.loadOption[t].attribute); if (i) return i; if (0 == t && null == i) return this.findRemainingImageAttr(e) } } findImageHandler(t) { return 0 !== this.attrIndex ? this.findNextImageAttr(t) : this.findRemainingImageAttr(t) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const t = WATCH6.UTILS, e = t.RESPONSIVE; WATCH6.VideoLoader = class { constructor(t = container, e) { e = { el: t, lazyClass: e.lazyClass || ".js-video-src", responsiveClass: e.responsiveClass || ".js-res-video", imageLazyCompleteClass: "load-complete", imageEndLazyClass: e.imageEndLazyClass || ".js-end-img-src", notLoadElement: e.notLoadElement || [], loadOption: e.loadOption, visiblePoint: e.visiblePoint || 0, resizeStart: null, classes: { loaded: "loaded", ended: "ended" } }; this.opts = e, this.classes = e.classes, this.el = document.querySelector(t), this.init() } init() { this.initOpts(), this.getLazyVideo(), this.getResponsiveVideo(), this.bindEvents() } initOpts() { this.getCurrentDevice(); var t = "mobile" !== this.currentDevice ? 0 : 1; this.prevVideoSrc = "", this.targetAttr = this.opts.loadOption[t].attribute, this.responsiveCheck = this.opts.loadOption, this.videoCallStack = [] } getLazyVideo() { let t = Array.from(this.el.querySelectorAll(this.opts.lazyClass)).filter(e => { e.isVideoInit = !1; { let t = 0; if (t < this.opts.notLoadElement.length) return !e.closest(this.opts.notLoadElement[t]) } }); t = t.filter(t => { if (t.querySelector("video")) return t }), this.lazyVideos = t, this.lazyLength = t.length } getResponsiveVideo() { var t = Array.from(this.el.querySelectorAll(this.opts.responsiveClass)).filter(e => { { let t = 0; if (t < this.opts.notLoadElement.length) return !e.closest(this.opts.notLoadElement[t]) } }); this.responsiveVideos = t, this.responsiveLength = t.length } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener("resize", this.onResizeHandler.bind(this)) } getCurrentDevice() { this.winWidth = t.winSize().w, this.winWidth >= e.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.prevDevice = this.currentDevice } onLoadHandler() { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent() } onResizeHandler() { clearTimeout(this.opts.resizeStart), this.opts.resizeStart = setTimeout(() => { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent() }, 80) } lazyEvent() { this.setLazyVideo(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener("scroll", this.lazyEvent.bind(this)) } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let s = 0; s < a; s++) { let t = s + 1, e = t == a ? 0 : this.opts.loadOption[t].resolution, i = !1; (i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > e) && this.opts.loadOption[s].attribute !== this.oldAttr && (this.targetAttr = this.opts.loadOption[s].attribute, this.oldAttr = this.targetAttr, this.attrIndex = s, this.setResponsiveVideo()) } } setResponsiveVideo() { for (let t = 0; t < this.responsiveLength; t++) { const i = this.responsiveVideos[t], s = i.querySelector("video"), a = i.getAttribute(this.targetAttr); i.classList.contains(this.classes.loaded) && i.isVideoInit && s.querySelectorAll("source").forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = a + ".webm"), -1 < e.indexOf("mp4") && (t.src = a + ".mp4"), s.load(), s.addEventListener("canplaythrough", () => { window.setTimeout(() => { i.classList.add(this.classes.loaded) }, 500), this.checkCompleteVideo(), this.getEndImage(i) }, { once: !0 }) }) } } setLazyVideo() { for (let t = 0; t < this.lazyLength; t++) { var e = window.pageYOffset, i = e + window.innerHeight; const n = this.lazyVideos[t]; var s = n.getBoundingClientRect(), a = e + s.top, s = e + s.bottom; i > a - window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && e < s + window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && !n.isVideoInit && this.videoCallStack.indexOf(t) < 0 && (this.videoCallStack.push(t), this.setVideoSrc()) } } setVideoSrc() { var t = this.videoCallStack[0]; const e = this.lazyVideos[t], i = e.querySelector("video"), s = e.getAttribute(this.targetAttr); t = this.opts.lazyClass.split("."); const a = t[t.length - 1]; t = s; this.prevVideoSrc !== t && (i.querySelectorAll("source").forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = s + ".webm"), -1 < e.indexOf("mp4") && (t.src = s + ".mp4") }), i.load(), i.addEventListener("canplaythrough", () => { window.setTimeout(() => { e.classList.add(this.classes.loaded) }, 500), 1 == this.opts.lazyClass.split(" ").length && e.classList.remove(a), this.checkCompleteVideo(), this.getEndImage(e), this.videoCallStack.splice(0, 1), 0 < this.videoCallStack.length && this.setVideoSrc() }, { once: !0 }), e.isVideoInit = !0), this.prevVideoSrc = t } getEndImage(t) { var e = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const i = t.querySelector(this.opts.imageEndLazyClass); t = this.opts.imageEndLazyClass.split("."); const s = t[t.length - 1]; i && !i.classList.contains(this.opts.imageLazyCompleteClass) && (i.src = i.getAttribute(e), i.addEventListener("load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && i.classList.remove(s), i.classList.add(this.opts.imageLazyCompleteClass) }, { once: !0 })) } checkCompleteVideo() { var t = Array.from(this.el.querySelectorAll("." + this.classes.loaded)).filter(e => { { let t = 0; if (t < this.opts.notLoadElement.length) return !e.closest(this.opts.notLoadElement[t]) } }); this.lazyCompleteLength = t.length } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const d = WATCH6.UTILS, t = d.RESPONSIVE; WATCH6.VideoPlayer = class { constructor(t, e) { t = { sectionElement: e.sectionElement, videoParentElement: null, videoElement: t, videoController: ".video__controller", hiddenElement: ".blind", endImage: ".video__end-frame img", videoLazyClass: ".js-video-src", lazyCompleteClass: "load-complete", imageEndLazyClass: ".js-end-img-src", visiblePoint: e.visiblePoint || 0, classes: { loaded: "loaded", ended: "ended", paused: "paused", playing: "playing", isPaused: "is-paused" }, resizeStart: null, on: { updateController: null, updatePlayState: null } }; this.opts = d.def(t, e || {}), this.classes = t.classes, this.init() } init() { this.setElements(), this.initOpts(), null !== this.video && (this.video.paused || this.video.pause(), this.videoElement.playState = !1, this.updateController(), this.bindEvents()) } setElements() { this.videoElement = this.opts.videoElement, this.video = this.videoElement.querySelector("video"), null !== this.video && (null !== this.opts.videoParentElement ? this.videoParentElement = this.video.closest(this.opts.videoParentElement) : this.videoParentElement = this.videoElement, this.videoController = this.videoParentElement.querySelector(this.opts.videoController)) } initOpts() { this.getCurrentDevice(), this.autoPlay = !!this.videoElement.dataset.autoPlay && JSON.parse(this.videoElement.dataset.autoPlay), this.videoElement.playState = !1, this.videoElement.autoPlayState = !1, this.useController = !!this.videoController } getCurrentDevice() { this.winWidth = d.winSize().w, this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.prevDevice = this.currentDevice } getEndImage() { var t = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const e = this.videoElement.querySelector(this.opts.imageEndLazyClass); var i = this.opts.imageEndLazyClass.split("."); const s = i[i.length - 1]; e && (e.src = e.getAttribute(t), e.addEventListener("load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && e.classList.remove(s), e.classList.add(this.opts.lazyCompleteClass) }, { once: !0 })) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)), this.video.addEventListener("canplaythrough", this.onCanplayThrough.bind(this), { once: !0 }), this.useController && this.videoController.addEventListener("click", this.onClickController.bind(this)) } onChange(t) { if (t === this.videoElement) { t = "mobile" !== this.currentDevice ? "data-media-pc" : "data-media-mo"; const i = this.videoElement.getAttribute(t); t = i; this.prevVideoSrc !== t && (this.videoElement.playState = !1, this.video.querySelectorAll("source").forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = i + ".webm"), -1 < e.indexOf("mp4") && (t.src = i + ".mp4"), this.video.load() }), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.video.addEventListener("canplaythrough", () => { d.isLowNetwork() || this.onPlay(), this.getEndImage() }, { once: !0 })), this.prevVideoSrc = t } } onLoad(t) { if (t === this.videoElement) { t = "mobile" !== this.currentDevice ? "data-media-pc" : "data-media-mo"; const i = this.videoElement.getAttribute(t); this.videoElement.playState = !1, this.video.querySelectorAll("source").forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = i + ".webm"), -1 < e.indexOf("mp4") && (t.src = i + ".mp4"), this.video.load() }), this.video.addEventListener("canplaythrough", () => { d.isLowNetwork() || this.onPlay(), this.getEndImage() }, { once: !0 }) } } onPlay(t) { var e = () => { 0 < this.video.readyState && !this.videoElement.playState && (this.video.currentTime === this.video.duration && (this.video.currentTime = 0), this.autoPlay && (this.videoElement.autoPlayState = !0), this.videoElement.playState = !0, this.videoElement.classList.contains(this.classes.paused) ? this.videoElement.classList.add(this.classes.playing) : window.setTimeout(() => { this.videoElement.classList.add(this.classes.playing) }, 350), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.paused), window.setTimeout(() => { this.video.play(), this.updateController(), this.outCallback("updatePlayState", !0) }, 350), this.video.addEventListener("ended", this.updatePlayEnded.bind(this), { once: !0 })) }; t && t !== this.videoElement || e() } onPause() { this.video.paused || this.video.pause(), this.videoElement.playState = !1, this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.add(this.classes.paused), this.updateController() } onEnded() { 3 < this.video.readyState && (this.video.ended || this.video.pause(), this.video.currentTime = this.video.duration, this.videoElement.playState = !1, this.videoElement.classList.add(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController()) } onReset(t) { var e = () => { this.video.pause(), this.video.currentTime = 0, this.videoElement.playState = !1, this.autoPlay && (this.videoElement.autoPlayState = !1), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController() }; t && t !== this.videoElement || e() } onCanplayThrough() { var t = this.opts.videoLazyClass.split("."), t = t[t.length - 1]; this.useController && window.setTimeout(() => { this.videoController.style.display = "block" }, 500), this.videoElement.classList.add(this.classes.loaded), 1 == this.opts.videoLazyClass.split(" ").length && this.videoElement.classList.remove(t), this.isCanplay = !0, this.onScrollHandler(), this.isCanplay = !1 } onClickController(t) { t.preventDefault(), this.videoElement.playState ? this.onPause() : this.onPlay() } updatePlayEnded() { this.onPause() } updateController() { var t; this.useController && (this.videoElement.playState ? this.videoController.classList.add(this.classes.isPaused) : this.videoController.classList.remove(this.classes.isPaused), t = { el: this.videoController, playState: this.videoElement.playState }, this.outCallback("updateController", t)) } onScrollHandler() { if (!this.videoElement.closest(".cm-layer")) { var t = window.scrollY, e = t > this.lastScrollY ? "down" : "up", i = d.getHeight(this.videoElement), i = (d.winSize().h, .5 * i), s = d.getScroll().top, a = d.getScroll().bottom, n = d.getOffset(this.videoElement).top, r = d.getOffset(this.videoElement).bottom - i; const h = this.videoElement.classList.contains(this.classes.playing) && this.videoElement.playState; var o = this.videoElement.classList.contains(this.classes.paused) && !this.videoElement.playState, l = this.videoElement.classList.contains(this.classes.ended) && !this.videoElement.playState; if (r + i < s) this.autoPlay && (this.videoElement.autoPlayState ? (h || o) && this.onEnded() : this.videoElement.classList.add(this.classes.ended)); else if (a < n) this.autoPlay && this.videoElement.autoPlayState && (h || o || l) && this.onReset(); else if (r < a && s < n) { const h = this.isCanplay || "down" == e; !h || !this.autoPlay || this.videoElement.playState || this.videoElement.autoPlayState || d.isLowNetwork() || this.onPlay() } this.lastScrollY = t } } onResponsiveChange() { window.setTimeout(() => { this.isCanplay = !0, this.onReset(), this.onScrollHandler(), this.isCanplay = !1 }, 20) } onResizeHandler() { d.winSize().w !== this.winWidth && (this.winWidth = d.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)) } resizeAnimateFunc() { this.setLayout(), this.resizeRequestFrame = d.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, d.cancelAFrame.call(window, this.resizeRequestFrame) } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } outCallback(t, e) { t = this.opts.on[t]; null != t && t(e) } } }(), function () { "use strict"; t = !(r = {}), l = e = null, s = function () { a(), n(), UTILS.isLowNetwork() && document.documentElement.classList.add("low_network"), document.documentElement.classList.add("load"), window.removeEventListener("load", s) }, a = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(r.resizeTimeout), r.resizeTimeout = setTimeout(function () { UTILS.isBrokenFixed() }, 100), t != e && (document.documentElement.classList.add(t), document.documentElement.classList.remove(e), e = t) }, n = function () { for (var t = window.pageYOffset, e = t + window.innerHeight, i = 0; i < r.allClickables.length; i++) { var s = r.allClickables[i], a = t + s.getBoundingClientRect().top, n = t + UTILS.getNavHeight(); n <= a && a <= e ? s.isVisible = !0 : (a < n || e < a) && (s.isVisible = !1) } }, o = function (t) { t.preventDefault(), t.stopPropagation(); var e = this, i = parseFloat(this.innerText), s = document.querySelectorAll("#desc-section li"), i = document.querySelectorAll("#desc-section li")[i - 1], a = i.querySelector("span"), n = a.innerText, r = (a.innerHTML = '' + n + "", l = t.currentTarget, function () { d.call(e), a.removeEventListener("focusin", r) }), o = function () { a.innerHTML = n, a.removeAttribute("tabindex"), a.removeEventListener("focusout", o) }; t.currentTarget.closest(".cm-layer") && (t = t.currentTarget.closest(".cm-layer"), $(t).trigger("closeLayer", !1)), a.addEventListener("focusin", r), a.addEventListener("focusout", o), i.querySelector("a").focus(), s.forEach(t => t.classList.remove("is-active")), i.classList.add("is-active") }, h = function (t) { var t = t.target.closest("li"), e = t.getAttribute("data-sup"), i = document.querySelectorAll(".click_sup"); for (let t = 0; t < i.length; t++)i[t].innerText === e && (d.call(this), l.focus()); var s = l.closest(".cm-layer"); if (s) { var a = s.id; const n = s.parentNode, r = n.querySelector(`[data-layer-target="#${a}"]`); l.innerText === e && r.focus() } t.classList.remove("is-active") }, d = function (t) { var s; !document.documentElement.classList.contains("ios") && t && null == t.relatedTarget || ((s = this).isClicked || this.isVisible || i(this) || setTimeout(function () { var t = window.pageYOffset, e = s.getBoundingClientRect(), i = (window.innerHeight - UTILS.getNavHeight()) / 2, t = t - UTILS.getNavHeight() + e.top + e.height / 2; window.scrollTo(0, t - i) }, 10), this.isClicked = !1) }, i = function (t) { var t = t.parentNode, e = t.getAttribute("id"); return "contents" != e && t != document.body && (!("subnav" != e && !t.classList.contains("sc-s22ultra-popup")) || i(t)) }, c = function () { this.isClicked = !0 }; var r, t, e, l, s, a, n, o, h, d, i, c, u = { init: function () { r.resizeTimeout = null, r.supClicker = document.querySelectorAll("a.click_sup"), r.supTopBtn = document.querySelectorAll("button.click_disclaimer"), r.contents = document.getElementById("contents") || document.getElementById("content"), r.allClickables = r.contents.querySelectorAll("a, button, input, select"); var t = 0; for (window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", n), t = 0; t < r.allClickables.length; t++) { var e = r.allClickables[t]; e.isClicked = !1, e.isVisible = !1, e.addEventListener("focusin", d), e.addEventListener("mousedown", c) } for (t = 0; t < r.supClicker.length; t++)r.supClicker[t].addEventListener("click", o); for (t = 0; t < r.supTopBtn.length; t++)r.supTopBtn[t].addEventListener("click", h); var i = document.documentElement.classList; "global" == UTILS.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController({ speed: 120, duration: .5 }) } }; window.initialize = u }(), function (t) { t.TrapFocus = function () { "use strict"; var t, g = void 0, e = window, i = e.document, w = e.jQuery, s = null, a = e.WATCH6.UTILS; function n(t, e) { if (!(this instanceof n)) return new n(t, e); var i = { obj: t, prevStep: null, isDestroy: false, IgnoreUtilFocusChanges: false, ariaAttr: { hidden: "aria-hidden", disabled: "aria-disabled", modal: "aria-modal" }, ariaNotHidden: (() => { return e && e.ariaNotHidden ? e.ariaNotHidden : [] })(), classAttr: { clone: "trapfocus" }, elAttr: { tabIndex: "tabindex", role: "role" }, customEvent: ".TrapFocus" + (new Date).getTime() + Math.random() }; this.opts = a.def(i, e || {}); if (!(this.obj = w(this.opts.obj)).length) return; if (s != null) s.destroy(); s = this; this.init() } return n.prototype = { init: function () { this.initLayout(); this.buildAria(); this.bindEvents(true); this.loadComponent(); this.obj.data("TrapFocus", this) }, initLayout: function () { var t = this.opts.ariaAttr; var e = this.opts.elAttr; this.obj.attr(t.modal, "true"); this.obj.attr(e.role, "dialog") }, buildAria: function () { var v = this.opts.ariaAttr; var f = this.opts.elAttr; var t = "head, script, noscript, link, style, meta"; var e = this.opts.ariaNotHidden.length > 0 ? `, ${this.opts.ariaNotHidden.join(",")}` : ""; a.def(this, { aria: { notHidden: Array(t + e), focusType: ["A", "BUTTON", "INPUT", "SELECT", "TEXTAREA"], dataAttr: { ariaHidden: "trapfocusariahidden", ariaDisabled: "trapfocusariadisabled", tabIndex: "trapfocustabindex", role: "trapfocusrole" }, destroy: w.proxy(function () { var a = this.aria.dataAttr; var n = this.aria.hiddenEls; var s = this.aria.focusEls; var r = this.aria.tabindexEls; for (var t = 0, e = n.length; t < e; t++)(function (t) { var e = n.eq(t), i = e.data(a.ariaHidden), s = e.data(a.role); if (i != g) { e.attr(v.hidden, i); e.removeData(a.ariaHidden) } else e.removeAttr(v.hidden); if (s != g) { e.attr(f.role, s); e.removeData(a.role) } else e.removeAttr(f.role) })(t); for (var i = 0, o = s.length; i < o; i++)(function (t) { var e = s.eq(t), i = e.data(a.ariaDisabled); e.removeAttr(f.tabIndex); if (i != g) { e.attr(v.disabled, i); e.removeData(a.ariaDisabled) } else e.removeAttr(v.disabled) })(i); for (var l = 0, h = r.length; l < h; l++)(function (t) { var e = r.eq(t), i = e.data(a.tabIndex); if (i != g) { e.attr(f.tabIndex, i); e.removeData(a.tabIndex) } else e.removeAttr(f.tabIndex) })(l); var d = document.getElementById("teconsent"); if (d) { var c = d.querySelector("a"); if (c && c.getAttribute("tabindex") === "-1") { c.setAttribute("tabindex", "0"); c.removeAttribute("aria-disabled") } } }, this), build: w.proxy(function () { var i = this; var t = this.aria.focusType; var a = this.aria.dataAttr; var s = this.obj.parents(); var n = this.obj.siblings().not(i.aria.notHidden.join(",")); var r = w("

    "); var o = w(""); for (var e = 0, l = s.length; e < l; e++)(function (t) { var e = s.eq(t); n = n.add(e.siblings().not(i.aria.notHidden.join(","))) })(e); r = r.add(n); o = o.add(n); this.obj.removeAttr(v.hidden); for (var h = 0, d = n.length; h < d; h++)(function (t) { var e = n.eq(t), i = e.attr(v.hidden), s = e.attr(f.role); if (i != g) e.data(a.ariaHidden, i); if (s != g) e.data(a.role, s); e.attr(v.hidden, "true"); e.attr(f.role, "none presentation") })(h); r = r.add(n.find(t.join(",").toLowerCase())); for (var c = 0, u = r.length; c < u; c++)(function (t) { var e = r.eq(t), i = e.attr(v.disabled); if (i != g) e.data(a.ariaDisabled, i); e.attr(v.disabled, "true"); setTimeout(() => { e.attr(f.tabIndex, -1) }) })(c); o = o.add(n.find("[" + f.tabIndex + "]")); for (var p = 0, m = o.length; p < m; p++)(function (t) { var e = o.eq(t), i = e.attr(f.tabIndex); if (i != g) e.data(a.tabIndex, i); e.attr(f.tabIndex, -1) })(p); this.aria.hiddenEls = n; this.aria.focusEls = r; this.aria.tabindexEls = o }, this) } }) }, changeEvents: function (t) { var e = [], i = t.split(" "); for (var s in i) e.push(i[s] + this.opts.customEvent); return e.join(" ") }, bindEvents: function (t) { if (t) w(i).on(this.changeEvents("focusin"), w.proxy(this.trapFocus, this)); else w(i).off(this.changeEvents("focusin")) }, focusFirstDescendant: function (t) { for (var e = 0; e < t.childNodes.length; e++) { var i = t.childNodes[e]; if (this.attemptFocus(i) || this.focusFirstDescendant(i)) return true } return false }, focusLastDescendant: function (t) { for (var e = t.childNodes.length - 1; e >= 0; e--) { var i = t.childNodes[e]; if (this.attemptFocus(i) || this.focusLastDescendant(i)) return true } return false }, isFocusable: function (t) { if (t.tabIndex > 0 || t.tabIndex === 0 && t.getAttribute("tabIndex") !== null) return true; if (t.disabled) return false; switch (t.nodeName) { case "A": return !!t.href && t.rel != "ignore"; case "INPUT": return t.type != "hidden" && t.type != "file"; case "BUTTON": case "SELECT": case "TEXTAREA": case "VIDEO": case "SOURCE": case "IFRAME": return true; default: return false } }, attemptFocus: function (t) { if (this.opts.isDestroy) return; if (!this.isFocusable(t)) return false; this.opts.IgnoreUtilFocusChanges = true; try { t.focus() } catch (t) { } this.opts.IgnoreUtilFocusChanges = false; return document.activeElement === t }, trapFocus: function (t) { if (this.opts.isDestroy) return; if (this.opts.IgnoreUtilFocusChanges) return; var e = document; this.dynamicComponentFocus() }, loadComponent: function () { this.dynamicComponentFocus(); setTimeout(() => { this.dynamicComponentFocus() }, 3e3); this.focusFirstDescendant(this.obj[0]); this.lastFocus = document.activeElement; this.aria.build() }, dynamicComponentFocus: function () { const o = this.opts.ariaAttr; const l = this.opts.elAttr; setTimeout(() => { var t = document.getElementById("QSIFeedbackButton-btn"); var e = document.getElementById("QSIFeedbackButton-close-btn"); var i = document.getElementById("nebula_div_btn"); var s = document.getElementById("spr-live-chat-app"); var a = document.getElementById("teconsent"); if (t) { var n = t.parentElement; t.setAttribute(o.disabled, "true"); t.setAttribute(l.tabIndex, "-1"); n.setAttribute(o.disabled, "true"); n.setAttribute(o.hidden, "true"); n.setAttribute(l.tabIndex, "-1"); n.setAttribute(l.role, "none presentation") } if (i) { var r = i.parentElement; i.setAttribute(o.disabled, "true"); i.setAttribute(l.tabIndex, "0"); r.setAttribute(o.disabled, "true"); r.setAttribute(o.hidden, "true"); r.setAttribute(l.tabIndex, "-1"); r.setAttribute(l.role, "none presentation") } if (s) { s.setAttribute(o.disabled, "true"); s.setAttribute(o.hidden, "true"); s.setAttribute(l.tabIndex, "-1"); s.setAttribute(l.role, "none presentation") } if (a && a.hasAttribute("aria-label")) setTimeout(() => { var t = a.querySelector("a"); t.setAttribute(l.tabIndex, "-1"); t.setAttribute(o.disabled, "true"); t.setAttribute(o.hidden, "true") }) }) }, destroy: function () { s = null; this.opts.isDestroy = true; var t = this.opts.ariaAttr; var e = this.opts.elAttr; this.bindEvents(false); this.aria.destroy(); this.obj.removeAttr(t.modal) } }, n }() }(window), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const n = WATCH6.UTILS, t = n.RESPONSIVE; WATCH6.HeightMatch = class { constructor(t = container, e) { var i = { container: t || ".heightmatch-wrap", childElement: ">li", notCompareElement: null, pushElement: null, matchElement: ".heightmatch-cont", column: 3, pushObjs: null, useDestroyHeight: !0, destroyType: !1, resizeStart: null, breakpoints: {}, matchBefore: null, matchAfter: null, loadAfter: null }; this.opts = n.def(i, e || {}), this.classes = i.classes, this.obj = $(document.querySelector(t)), this.init() } init() { null !== this.obj && (this.setElements(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.outCallback("loadAfter"), this.bindEvents()) } setElements() { this.objChild = this.obj.find(this.opts.childElement), (this.opts.pushObjs = null) == this.opts.pushElement ? this.opts.pushObjs = this.objChild.not(this.opts.notCompareElement) : this.opts.pushObjs = this.objChild.not(this.opts.notCompareElement).find(this.opts.pushElement) } setOpts() { this.currentDevice = !1, this.prevDevice = null; var t, e, i = n.winSize().w, s = this.opts.breakpoints, a = []; for (e in s) t = i <= e ? (a.push(e), Math.min.apply(null, a)) : null; this.breakOpts = n.def({}, this.opts), null != t && (this.breakOpts = n.def(this.breakOpts, s[t])) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)) } onResizeHandler() { n.winSize().w !== this.winWidth && (this.winWidth = n.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.outCallback("matchBefore"), this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)) } resizeAnimateFunc() { this.setLayout(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.resizeRequestFrame = n.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, this.setOpts(), this.setRows(), this.buildHeightControl(), this.outCallback("matchAfter"), n.cancelAFrame.call(window, this.resizeRequestFrame) } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice, this.prevDevice, this.prevDevice = this.currentDevice } setRows() { this.rowNum = Math.ceil(this.objChild.length / this.breakOpts.column) } buildHeightControl() { this.breakOpts.column <= 1 ? null !== this.opts.pushObjs && this.opts.pushObjs.css("height", "") : this.buildHeight() } buildHeight() { this.heightArray = []; for (var t = 0; t < this.rowNum; t++)this.heightArray[t] = []; for (var t = 0, e = this.objChild.length; t < e; t++) { var i = parseInt(t / this.breakOpts.column, 10), s = this.objChild.eq(t).not(this.opts.notCompareElement).find(this.opts.matchElement), s = s.is(":visible") ? Math.ceil(s.outerHeight()) : 0; this.heightArray[i].push(s) } for (t = 0; t < this.rowNum; t++)this.heightArray[t] = Math.max.apply(null, this.heightArray[t]); this.setHeightLayout() } setHeightLayout() { for (var t = 0, e = this.objChild.length; t < e; t++) { var i = parseInt(t / this.breakOpts.column, 10); (null == this.opts.pushElement ? this.objChild.eq(t).not(this.opts.notCompareElement) : this.objChild.eq(t).not(this.opts.notCompareElement).find(this.opts.pushElement)).height(this.heightArray[i]) } } destroy() { this.opts.useDestroyHeight && null !== this.opts.pushObjs && this.opts.pushObjs.css("height", ""), this.opts.destroyType = !0, this.bindEvents(!1) } reInit() { this.setElements(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.onResizeHandler(), this.opts.destroyType && (this.opts.destroyType = !1, this.bindEvents(!0)) } outCallback(t) { t = this.opts[t]; null != t && t() } } }(), function (t) { t.HiveLayer = function () { "use strict"; var t, o = window, l = o.jQuery, e = o.document, h = o.WATCH6.UTILS, d = []; function s(t, e) { if (!(this instanceof s)) return new s(t, e); var i = { effect: "fade", layerWrapElements: t, layerBody: ".cm-layer__body", layerElements: ".cm-layer__wrapper", openerElements: ".js-layer-opener", closerElements: ".js-layer-closer", dimmedElements: ".cm-layer__dimmed", classAttr: { htmlToggle: "is-layer-open", isAsync: "is-async" }, focusOutObj: { CSS: { overflow: "hidden", position: "absolute", left: 0, top: 0, "z-index": -1, width: 1, height: 1, "font-size": "1px", "line-height": 0 } }, customEvent: ".HiveLayer" + (new Date).getTime() + Math.random(), openerTarget: null, useOutside: false, useEscape: true, useCloseFocus: true, useScrollLock: true, useTrapFocus: true, flip: { CLASS: "hive-layer-flip", direction: "horizontal", rotateStart: 90, rotateEnd: 0 }, customToggle: false, dimmedDuration: 250, fps: 120, easing: "swing", duration: 250, on: { buildTools: null, layerMove: null, layerOpenBefore: null, layerOpenAfter: null, layerCloseBefore: null, layerCloseAfter: null }, ariaNotHidden: [] }; if (!(this.layerWrap = i.layerWrapElements).length) return; this.layerWrap = l(i.layerWrapElements); this.opts = h.def(i, e || {}); this.init() } return s.prototype = { init: function () { this.initOpts(); this.setElements(); this.initLayout(); this.buildTween(); this.buildTrapFocus(); this.bindEvents(true); this.layerWrap.data("HiveLayer", this) }, initOpts: function () { this.layerWrapInstance = "#" + this.layerWrap.attr("id"); if (!this.opts.isSupportTransition && this.opts.effect === "flip") this.opts.effect = "default"; if (this.opts.effect == "custom") { this.opts.effect = "default"; this.opts.customToggle = true } }, setElements: function () { this.layerBody = this.layerWrap.find(this.opts.layerBody); this.layerObj = this.layerWrap.find(this.opts.layerElements); this.closerObj = this.layerWrap.find(this.opts.closerElements); this.dimmedObj = this.layerWrap.find(this.opts.dimmedElements) }, initLayout: function () { if (this.opts.effect === "slide") { this.dimmedObj.hide(); this.layerObj.hide() } else if (this.opts.effect === "flip") { var t = this.opts.flip.direction; if (t !== "vertical") this.opts.flip.cssD = "rotateY"; else this.opts.flip.cssD = "rotateX"; this.dimmedObj.hide(); this.layerObj.hide(); this.layerWrap.addClass(this.opts.flip.CLASS) } }, buildTween: function () { h.def(this, { tweens: { instance: [], kill: l.proxy(function () { for (var t = 0, e = this.tweens.instance.length; t < e; t++)this.tweens.instance[t].kill(); this.tweens.instance = [] }, this) } }) }, buildTrapFocus: function () { if (!this.opts.useTrapFocus) return; h.def(this, { trapfocus: { instance: null, destroy: l.proxy(function () { if (this.trapfocus.instance == null) return; this.trapfocus.instance.destroy(); this.trapfocus.instance = null }, this), build: l.proxy(function () { if (this.trapfocus.instance !== null) return; this.trapfocus.instance = new TrapFocus(this.layerObj, { ariaNotHidden: this.opts.ariaNotHidden }) }, this) } }) }, bindEvents: function (t) { if (t) { l(e).on("click clickCustom", this.opts.openerElements + '[data-layer-target="' + this.layerWrapInstance + '"]', l.proxy(this.onLayerOpen, this)); this.layerWrap.on("openLayer", l.proxy(this.onLayerOpen, this)); this.closerObj.on("mousedown click clickCustom", l.proxy(this.onLayerClose, this)); this.layerWrap.on("layerSetOptions", l.proxy(this.setOptions, this)); if (this.opts.useEscape) this.layerObj.on("keydown", l.proxy(this.onEscapeClose, this)) } else { l(e).off("click clickCustom"); this.layerWrap.off("openLayer"); this.closerObj.off("mousedown click clickCustom"); this.layerWrap.off("layerSetOptions"); if (this.opts.useEscape) this.layerObj.off("keydown") } }, bindOutsideEvents: function (t) { if (!this.opts.useOutside) return; if (t) this.layerObj.on("clickoutside touchendoutside", l.proxy(this.onLayerOutsideFunc, this)); else this.layerObj.off("clickoutside touchendoutside") }, bindCloseEvents: function (t) { if (t) this.layerWrap.on("closeLayer", l.proxy(this.closeLayer, this)); else this.layerWrap.off("closeLayer") }, setOptions: function (t, e) { h.def(this.opts, e || {}); if (e.customToggle) this.opts.effect = "default" }, setScrollLock: function (t) { if (!this.opts.useScrollLock) return; if (t) h.page.scrollLock.on(); else h.page.scrollLock.off(); l("html").toggleClass(this.opts.classAttr.htmlToggle, t) }, onLayerOpen: function (t) { t.preventDefault(); setTimeout(() => { this.dimmedObj.on("mousedown click clickCustom", l.proxy(this.onLayerClose, this)) }, 500); if (t.type === "click" || t.type === "clickCustom") this.opts.openerTarget = l(t.currentTarget); if (t.type === "click") if (this.opts.openerTarget.hasClass(this.opts.classAttr.isAsync)) return; this.layerViewType = "open"; d.push({ POPUPWRAP: this.layerWrap }); if (document.querySelector("html.load div#header")) { document.querySelector("html.load div#header").style.opacity = 0; document.querySelector("html.load div#header").style.pointerEvents = "none" } this.setScrollLock(true); this.bindCloseEvents(true); if (this.opts.effect === "default") if (!this.opts.customToggle) { this.layerWrap.css({ opacity: 0, display: "block" }); this.outCallback("layerOpenBefore"); this.outCallback("buildTools"); this.layerWrap.css("opacity", ""); this.openAfterBugFunc() } else this.outCallback("layerOpenBefore"); else if (this.opts.effect === "fade") { this.layerWrap.css({ opacity: 0, display: "block" }); this.outCallback("layerOpenBefore"); TweenLite.set(this.layerBody, { opacity: 0, scale: 1, overflow: "hidden" }); this.outCallback("buildTools"); var e = TweenLite.to(this.layerWrap, this.opts.duration / 1e3, { opacity: 1, onComplete: l.proxy(function () { var t = TweenLite.to(this.layerBody, .25, { ease: Expo.easeOut, opacity: 1, scale: 1, onComplete: l.proxy(function () { this.layerBody.css({ overflow: "", transform: "" }); this.openAfterBugFunc() }, this) }); this.tweens.instance.push(t) }, this) }); this.tweens.instance.push(e) } else if (this.opts.effect === "slide") { var i = 1; TweenLite.set(this.dimmedObj, { display: "block", opacity: 0 }); TweenLite.set(this.layerWrap, { display: "block" }); TweenLite.set(this.layerBody, { overflow: "hidden" }); TweenLite.set(this.layerObj, { display: "", y: -h.winSize().h }); TweenLite.set(this.layerObj, { display: "" }); this.outCallback("layerOpenBefore"); var e = TweenLite.to(this.dimmedObj, i, { opacity: .9 }); var s = TweenLite.to(this.layerObj, i, { y: 0, onComplete: l.proxy(function () { this.outCallback("buildTools"); this.layerBody.css({ overflow: "" }); this.layerObj.css({ transform: "" }); this.openAfterBugFunc() }, this) }); this.tweens.instance.push(e); this.tweens.instance.push(s) } else if (this.opts.effect === "slide2") { var i = .6; TweenLite.set(this.dimmedObj, { display: "block", opacity: 0 }); TweenLite.set(this.layerWrap, { display: "block" }); TweenLite.set(this.layerObj, { display: "", y: h.winSize().h }); TweenLite.set(this.layerObj, { display: "" }); this.outCallback("layerOpenBefore"); var e = TweenLite.to(this.dimmedObj, i, { opacity: .9 }); var s = TweenLite.to(this.layerObj, i, { y: 0, onComplete: l.proxy(function () { this.outCallback("buildTools"); this.layerBody.css({ overflow: "" }); this.layerObj.css({ transform: "" }); this.openAfterBugFunc() }, this) }); this.tweens.instance.push(e); this.tweens.instance.push(s) } else if (this.opts.effect === "flip") { var a = this.opts.flip.rotateEnd - this.opts.flip.rotateStart, n = a / this.opts.duration * (1e3 / this.opts.fps), r = 0; this.opts.flip.moveData = { startDistance: this.opts.flip.rotateStart, endDistance: this.opts.flip.rotateEnd, moveDistance: a, moveOneStep: n, currentStep: r }; this.layerWrap.show(); this.dimmedObj.fadeIn(this.opts.dimmedDuration, l.proxy(function () { this.outCallback("layerOpenBefore"); this.outCallback("buildTools"); this.layerObj.show(); this.initStep(this.opts.flip.moveData); this.flipFunc() }, this)); o.setTimeout(l.proxy(function () { this.outCallback("buildTools") }, this), 30) } this.ariaAccessbility(true, this.layerWrap) }, initStep: function (t) { this.opts.stepTimeOld = new Date; this.direction = t.startDistance > t.moveDistance ? "toNext" : "toPrev"; this.condition = this.direction === "toNext" ? t.currentStep > t.moveDistance : t.currentStep < t.moveDistance }, moveStep: function (t) { this.opts.stepTimeNew = new Date; this.opts.remaining = Math.max(0, this.opts.stepTimeOld - this.opts.stepTimeNew + this.opts.duration); var e = this.opts.remaining / this.opts.duration || 0, i = 1 - e, s = l.easing[this.opts.easing](i, this.opts.duration * i, 0, 1, this.opts.duration); t.currentStep = (t.endDistance - t.startDistance) * s }, flipFunc: function () { var t = this.opts.flip.moveData; this.moveStep(t); if (this.condition) { o.clearTimeout(this.stepTimeout); this.stepTimeout = o.setTimeout(l.proxy(function () { this.flipFunc() }, this), 1e3 / this.opts.fps); this.condition = this.direction === "toNext" ? t.currentStep > t.moveDistance : t.currentStep < t.moveDistance; this.outCallback("layerMove", t.currentStep, t) } else { this.opts.remaining = this.opts.duration; if (this.layerViewType === "close" || !this.layerViewType) { this.closeAfterBugFunc(); this.dimmedObj.fadeOut(this.opts.dimmedDuration, l.proxy(function () { this.layerWrap.hide(); this.layerObj.hide() }, this)) } else this.openAfterBugFunc() } var e = t.startDistance + t.currentStep; this.layerObj.css({ transform: this.opts.flip.cssD + "(" + e + "deg)" }) }, onLayerOpenAfter: function () { if (this.trapfocus) this.trapfocus.build(); this.bindOutsideEvents(true); this.outCallback("layerOpenAfter") }, openAfterBugFunc: function () { o.clearTimeout(this.openAfterTimeout); this.openAfterTimeout = o.setTimeout(l.proxy(this.onLayerOpenAfter, this), 30) }, onLayerClose: function (t) { var e = l(t.currentTarget); if (t.type === "mousedown") { if (!h.isDevice) { t.stopPropagation(); this.opts.useCloseFocus = false } } else if (t.type === "click" || t.type === "clickCustom") { t.preventDefault(); if (t.type === "click") if (e.hasClass(this.opts.classAttr.isAsync)) return; this.layerWrap.trigger("closeLayer"); this.dimmedObj.off("mousedown click clickCustom") } }, closeLayer: function () { this.closeType = arguments[1]; this.layerViewType = "close"; this.outCallback("layerCloseBefore"); this.popupOpenPropsControl(); this.setScrollLock(false); if (this.trapfocus) this.trapfocus.destroy(); if (document.querySelector("html.load div#header")) { document.querySelector("html.load div#header").style.opacity = 1; document.querySelector("html.load div#header").style.pointerEvents = "unset" } this.ariaAccessbility(false, this.layerWrap); o.clearTimeout(this.closeBeforeTimeout); this.closeBeforeTimeout = o.setTimeout(l.proxy(this.closeBeforeBugFunc, this), 30); this.bindOutsideEvents(false) }, onEscapeClose: function (t) { var e = t.which || t.keyCode; if (e !== 27) return; this.layerWrap.trigger("closeLayer") }, onLayerOutsideFunc: function () { this.layerWrap.trigger("closeLayer") }, closeBeforeBugFunc: function () { if (this.opts.effect === "default") { if (!this.opts.customToggle) this.layerWrap.stop(true, true).hide(); this.closeAfterBugFunc() } else if (this.opts.effect === "fade") { var t = TweenLite.to(this.layerBody, this.opts.duration / 1e3, { overflow: "hidden", opacity: 0, scale: 1, onComplete: l.proxy(function () { this.layerBody.css("overflow", ""); var t = TweenLite.to(this.layerWrap, this.opts.duration / 1e3, { opacity: 0, display: "none", onComplete: l.proxy(this.closeAfterBugFunc, this) }); this.tweens.instance.push(t) }, this) }); this.tweens.instance.push(t) } else if (this.opts.effect === "slide") { var e = 1; TweenLite.set(this.layerBody, { overflow: "hidden" }); var t = TweenLite.to(this.dimmedObj, e, { opacity: 0 }); var i = TweenLite.to(this.layerObj, e, { y: -h.winSize().h, onComplete: l.proxy(function () { this.closeAfterBugFunc(); this.dimmedObj.hide(); this.layerWrap.hide(); this.layerBody.css("overflow", ""); this.layerObj.hide() }, this) }); this.tweens.instance.push(t); this.tweens.instance.push(i) } else if (this.opts.effect === "slide2") { var e = .5; var t = TweenLite.to(this.dimmedObj, e, { opacity: 0 }); var i = TweenLite.to(this.layerObj, e, { y: h.winSize().h, onComplete: l.proxy(function () { this.closeAfterBugFunc(); this.dimmedObj.hide(); this.layerWrap.hide(); this.layerBody.css("overflow", ""); this.layerObj.hide() }, this) }); this.tweens.instance.push(t); this.tweens.instance.push(i) } else if (this.opts.effect === "flip") { var s = -this.opts.flip.rotateStart - this.opts.flip.rotateEnd, a = s / this.opts.duration * (1e3 / this.opts.fps), n = 0; this.opts.flip.moveData = { startDistance: this.opts.flip.rotateEnd, endDistance: -this.opts.flip.rotateStart, moveDistance: s, moveOneStep: a, currentStep: n }; this.initStep(this.opts.flip.moveData); this.flipFunc() } }, closeAfterBugFunc: function () { o.clearTimeout(this.closeAfterTimeout); this.closeAfterTimeout = o.setTimeout(l.proxy(this.onLayerCloseAfter, this), 30) }, popupOpenPropsControl: function () { var t = d; for (var e = 0, i = t.length; e < i; e++) { var s = t[e], a = s["POPUPWRAP"][0]; if (a === this.layerWrap[0]) t[e] = null } for (var n = 0, r = t.length; n < r; r--) { var o = t[r - 1]; if (o === null) t.splice(r - 1, 1) } }, onLayerCloseAfter: function () { if (this.opts.openerTarget !== null) { if (this.closeType !== false) this.opts.openerTarget.focus(); this.opts.openerTarget = null } this.opts.useCloseFocus = true; this.bindCloseEvents(false); this.outCallback("layerCloseAfter") }, ariaAccessbility: function (t, e) { }, outCallback: function (t) { var e = this.opts.on[t]; if (t === "layerMove") this.layerWrap.trigger(t, arguments[1], arguments[2], this); else this.layerWrap.trigger(t, this); if (e == null) return; if (t === "layerMove") e(arguments[1], arguments[2], this); else e(this) }, styleDestroy: function () { this.dimmedObj.attr("style", ""); this.layerWrap.attr("style", ""); this.layerBody.attr("style", ""); this.layerObj.attr("style", "") }, destroy: function () { this.tweens.kill(); if (this.trapfocus) this.trapfocus.destroy(); this.styleDestroy(); this.bindEvents(false); this.bindOutsideEvents(false); this.bindCloseEvents(false) } }, s }() }(window), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const r = WATCH6.UTILS; r.RESPONSIVE; WATCH6.SubNav = class { constructor(t = container, e) { var i = { navItems: "ul li>a", navDests: '[class*="js-nav-"]', visSections: ".js-visible", resizeStart: null, classes: { isOn: "on" } }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null !== this.el && (this.setElements(), this.initOpts(), this.bindEvents()) } setElements() { this.navItems = r.convertArray(this.el.querySelectorAll(this.opts.navItems)), this.navDests = document.querySelectorAll(this.opts.navDests), this.visSections = r.convertArray(document.querySelectorAll(this.opts.visSections)) } initOpts() { this.visCount = -1, this.visSections.forEach(t => { t.dataset.visIndex = t.classList.contains("js-count") ? ++this.visCount : this.visCount }), this.winOffsetTop = window.pageYOffset } bindEvents() { this.onScrollHandler(), window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)); const i = window.location.hash; this.navItems.forEach((t, e) => { -1 < t.getAttribute("href").indexOf("#") && (t.dataset.navIndex = e, t.addEventListener("click", this.onNavItemClickEvent.bind(this))), i && -1 < t.getAttribute("href").indexOf(i) && (t.parentNode.classList.remove(this.classes.isOn), t.click()) }) } onNavItemClickEvent(e) { e.preventDefault(); e = e.target; const i = e.parentNode; if (!this.el.classList.contains("hold") && !i.classList.contains(this.classes.isOn)) { this.navItems.forEach(t => { t.parentNode.classList.remove(this.classes.isOn) }), i.classList.contains(this.classes.isOn) || i.classList.add(this.classes.isOn); e = e.dataset.navIndex; const n = this.navDests[e]; var e = n.getBoundingClientRect(), s = parseInt(window.getComputedStyle(n).paddingTop), a = (window.innerHeight - (e.height - s) + r.getNavHeight()) / 2; let t = 0; (t = n.classList.contains("js-nav-center") ? this.winOffsetTop + e.top + s - a : this.winOffsetTop + e.top - r.getNavHeight()) < 150 && (t = 0), this.el.classList.add("hold"), GALAXY.setSmoothScrollTop(t, 1500, () => { this.el.classList.contains("hold") && this.el.classList.remove("hold"), GALAXY.header && GALAXY.header.resetSubNav() }) } } onScrollHandler() { this.winOffsetTop = window.pageYOffset; var a = (window.innerHeight + r.getNavHeight()) / 2; this.visSections.forEach(t => { var i, e = t.getBoundingClientRect(), s = this.winOffsetTop + e.top, e = this.winOffsetTop + e.bottom; this.winOffsetTop + a >= s && this.winOffsetTop + a <= e && (i = t.dataset.visIndex, this.navItems.forEach((t, e) => { e != i && t.parentNode.classList.contains(this.classes.isOn) && t.parentNode.classList.remove(this.classes.isOn) }), (s = this.navItems[i].parentNode).classList.contains(this.classes.isOn) || (s.classList.add(this.classes.isOn), !this.el.classList.contains("hold") && s.classList.contains(this.classes.isOn) && GALAXY.header && GALAXY.header.resetSubNav())) }) } onResizeHandler() { r.winSize().w !== this.winWidth && (this.winWidth = r.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)) } resizeAnimateFunc() { this.onScrollHandler(), this.resizeRequestFrame = r.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, r.cancelAFrame.call(window, this.resizeRequestFrame) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Band = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()) } setElements() { this.videoElement = this.el.querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el })) } }, this.videoPlayer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const t = WATCH6.UTILS, e = t.RESPONSIVE; WATCH6.Battery = class { constructor(t = container, e) { var i = { el: t, popupEl: ".wearable-watch-battery-processor__popup", processorLayerEl: ".wearable-watch-battery-processor__popup.processor-popup", batteryLayerEl: ".wearable-watch-battery-processor__popup.battery-popup", videoElement: ".video__container", featureHide: "is-feature-hide", resizeStart: null }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer(), this.buildLayer(), this.bindEvents()) } setElements() { this.processorLayerEl = this.el.querySelector(this.opts.processorLayerEl), this.batteryLayerEl = this.el.querySelector(this.opts.batteryLayerEl), this.videoElement = this.el.querySelectorAll(this.opts.videoElement), this.processorVideoElement = this.processorLayerEl.querySelector(this.opts.videoElement), this.batteryVideoElement = this.batteryLayerEl.querySelector(this.opts.videoElement) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)) } onResizeHandler() { t.winSize().w !== this.winWidth && (this.winWidth = t.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)) } resizeAnimateFunc() { this.setLayout(), this.resizeRequestFrame = t.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, t.cancelAFrame.call(window, this.resizeRequestFrame) } onResponsiveChange() { "block" === this.processorLayerEl.style.display && this.videoPlayer.change(this.processorVideoElement), "block" === this.batteryLayerEl.style.display && this.videoPlayer.change(this.batteryVideoElement) } setLayout() { this.winWidth >= e.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } buildVideoPlayer() { this.videoPlayer = { instance: [], load: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onLoad(e) }) }, reset: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onReset(e) }) }, play: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onPlay(e) }) }, change: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onChange(e) }) }, build: () => { this.videoPlayer.instance.length || this.videoElement.forEach((t, e) => { this.videoPlayer.instance.push(new WATCH6.VideoPlayer(t, { sectionElement: this.opts.el, videoParentElement: this.opts.popupEl })) }) } }, this.videoPlayer.build() } buildLayer() { this.layer = { instance: [], build: () => { this.layer.instance.length || (this.layer.instance.push(new HiveLayer(this.opts.processorLayerEl, { effect: "default", on: { layerOpenBefore: () => { this.processorVideoElement && this.videoPlayer.load(this.processorVideoElement) }, layerCloseAfter: () => { this.videoPlayer.reset(this.processorVideoElement) } } })), this.layer.instance.push(new HiveLayer(this.opts.batteryLayerEl, { effect: "default", on: { layerOpenBefore: () => { this.batteryVideoElement && this.videoPlayer.load(this.batteryVideoElement) }, layerCloseAfter: () => { this.videoPlayer.reset(this.batteryVideoElement) } } }))) } }, this.layer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const o = WATCH6.UTILS, t = o.RESPONSIVE; WATCH6.Compare = class { constructor(t = container, e) { var i = { el: t, trackElement: ".wearable-watch-compare__track", fixedElement: ".wearable-watch-compare__fixed", compareWrapEl: ".wearable-watch-compare__list-wrap", compareListEl: ".wearable-watch-compare__list", compareItemEl: ".wearable-watch-compare__list-item", compareImgEl: ".wearable-watch-compare__product-img", compareInfo: ".wearable-watch-compare__info", compareInfoItem: ".wearable-watch-compare__info-item", navigationEl: ".wearable-watch-compare__navigation", colorChipEl: ".wearable-watch-compare__color-chip", colorList: ".wearable-watch-compare__color", tabPanel: ".wearable-watch-compare__product", tabPanels: ".wearable-watch-compare__product-item", scrollbarEl: ".swiper-scrollbar", viewMoreCta: ".view-more__cta", featureHide: "is-feature-hide", viewmore: ".viewmore", collapse: ".collapse", matchElements: [".wearable-watch-compare__info-item--display", ".wearable-watch-compare__info-item--screen", ".wearable-watch-compare__info-item--charge", ".wearable-watch-compare__info-item--sensor", ".wearable-watch-compare__info-item--material", ".wearable-watch-compare__info-item--battery", ".wearable-watch-compare__info-item--sleep", ".wearable-watch-compare__info-item--cycle", ".wearable-watch-compare__info-item--composition", ".wearable-watch-compare__info-item--route", ".wearable-watch-compare__info-item--durability", ".wearable-watch-compare__info-item--size", ".wearable-watch-compare__info-item--weight", ".wearable-watch-compare__cta", ".wearable-watch-compare__size", ".wearable-watch-compare__color", ".wearable-watch-common__sub-headline"], matchCommonOpts: { childElement: ".wearable-watch-compare__list-item", useDestroyHeight: !1, breakpoints: {} }, classes: { isFixed: "is-fixed", isCollapse: "is-collapse", isExpanded: "is-expanded" }, resizeStart: null, on: { updateImageLoader: null } }; this.opts = o.def(i, e || {}), this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.bindEvents(), this.buildHeightMatch(), this.buildSwiper(), this.buildCompareItem(), this.onResizeHandler()) } initOpts() { this.getCurrentDevice(), this.scroller = null, this.prevDevice = null, this.expanded = !1, this.scrollMoveState = !1, this.firstImageLoad = !1, this.viewMoreCtaTagging = this.viewMoreCta.getAttribute("data-omni"), this.viewMoreTagging = this.viewMoreCta.querySelector(this.opts.viewmore).getAttribute("data-tagging"), this.collapseTagging = this.viewMoreCta.querySelector(this.opts.collapse).getAttribute("data-tagging") } initLayout() { this.updateViewMoreHeight() } setElements() { this.trackElement = this.el.querySelector(this.opts.trackElement), this.fixedElement = this.el.querySelector(this.opts.fixedElement), this.compareWrapEl = this.el.querySelector(this.opts.compareWrapEl), this.compareListEl = this.compareWrapEl.querySelector(this.opts.compareListEl), this.contentsEl = this.el.querySelectorAll(this.opts.colorChipEl), this.compareItemEl = this.compareWrapEl.querySelectorAll(this.opts.compareItemEl), this.compareInfo = this.el.querySelectorAll(this.opts.compareInfo), this.viewMoreCta = this.el.querySelector(this.opts.viewMoreCta), this.navigationEl = this.el.querySelector(this.opts.navigationEl), this.scrollbarEl = this.el.querySelector(this.opts.scrollbarEl) } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)), this.viewMoreCta.addEventListener("click", this.onClickViewMoreCta.bind(this)) } getCurrentDevice() { this.winWidth = o.winSize().w, this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.prevDevice = this.currentDevice } updateViewMoreHeight() { this.expanded ? (this.viewMoreCta.classList.add(this.classes.isCollapse), this.el.classList.add(this.classes.isExpanded), this.viewMoreCta.setAttribute("data-omni", this.viewMoreCtaTagging + this.collapseTagging), this.viewMoreCta.setAttribute("ga-la", this.viewMoreCtaTagging + this.collapseTagging), this.heightMatch.reInit()) : (this.viewMoreCta.classList.remove(this.classes.isCollapse), this.el.classList.remove(this.classes.isExpanded), this.viewMoreCta.setAttribute("data-omni", this.viewMoreCtaTagging + this.viewMoreTagging), this.viewMoreCta.setAttribute("ga-la", this.viewMoreCtaTagging + this.viewMoreTagging)) } updateImageLoader(t) { this.outCallback("updateImageLoader", t), this.firstImageLoad = !0 } buildHeightMatch() { this.heightMatch = { instance: [], reInit: () => { this.heightMatch.instance.length && this.heightMatch.instance.forEach(t => { t.reInit() }) }, initLayout: () => { for (let t = 0, e = this.opts.matchElements.length; t < e; t++) { const s = this.opts.matchElements[t]; var i = "js-" + s.split(".")[1]; for (let t = 0, e = this.compareItemEl.length; t < e; t++) { const a = this.compareItemEl[t]; if (null === a.querySelector("." + i)) { const n = document.createElement("div"), r = a.querySelector(s); n.innerHTML = r.innerHTML, n.classList.add(i), r.innerHTML = "", r.appendChild(n) } } } }, build: () => { this.heightMatch.initLayout(); var t = { column: this.compareItemEl.length }; o.def(this.opts.matchCommonOpts, t); for (let t = 0, e = this.opts.matchElements.length; t < e; t++) { const a = this.opts.matchElements[t]; var i = { pushElement: "." + a.split(".")[1], childElement: this.opts.compareItemEl, matchElement: ".js-" + a.split(".")[1] }, s = JSON.parse(JSON.stringify(this.opts.matchCommonOpts)); o.def(s, i), this.heightMatch.instance.push(new WATCH6.HeightMatch(this.opts.compareWrapEl, s)) } } }, this.heightMatch.build() } buildCompareItem() { this.compareItem = { instance: [], build: () => { this.compareItem.instance.length || this.compareItemEl.forEach(t => { this.compareItem.instance.push(new WATCH6.CompareItem(t, { on: { updateImageLoader: t => { } } })) }) } }, this.compareItem.build() } buildSwiper() { this.swiper = { instance: null, options: { freeMode: !0, slidesPerView: "auto", direction: "horizontal", a11y: !1, scrollbar: { el: this.opts.scrollbarEl } }, destroy: () => { null !== this.swiper.instance && (this.swiper.instance.destroy(), this.swiper.instance = null) }, updateTranslate: t => { null !== this.swiper.instance && this.swiper.instance.setTranslate(-t) }, updateLayout: () => { null !== this.swiper.instance && (this.swiperWidth = this.compareWrapEl.getBoundingClientRect().width, this.swiperListWidth = this.swiper.instance.virtualSize) }, build: () => { this.winWidth < 1024 ? null === this.swiper.instance && (this.swiper.instance = new Swiper(this.compareWrapEl, this.swiper.options), this.swiper.updateLayout()) : this.swiper.destroy() } }, this.swiper.build() } onClickViewMoreCta(t) { t.preventDefault(), this.expanded = !this.expanded, this.updateViewMoreHeight() } onLoadHandler() { this.heightMatch.reInit(), this.onResponsiveChange(), this.onScrollHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)) } onScrollHandler() { this.scrollY = window.scrollY; this.scrollY, this.lastScrollY; var t = window.innerHeight, e = o.getScroll().top - t, i = o.getScroll().bottom, s = o.getOffset(this.el), a = this.swiperWidth, n = (o.getHeight(this.compareWrapEl), o.getOffset(this.compareWrapEl)), r = this.swiperListWidth; Math.ceil(r - a), o.getOffset(this.trackElement).top, Math.abs(this.trackElement.clientHeight); o.getNavHeight(); if (i > s.top && e <= s.top || e < s.bottom && i > s.bottom || e < s.top && i > s.bottom || e > s.top && i < s.bottom) { if (this.firstImageLoad) return; r = this.el.querySelectorAll(".js-start-img-src"); this.updateImageLoader(r) } o.getScroll().top + o.getNavHeight() >= n.top && i <= n.bottom ? this.el.classList.contains(this.classes.isFixed) || this.el.classList.add(this.classes.isFixed) : this.el.classList.contains(this.classes.isFixed) && this.el.classList.remove(this.classes.isFixed), this.lastScrollY = scrollY } onResizeHandler() { o.winSize().w !== this.winWidth && (this.winWidth = o.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)) } resizeAnimateFunc() { this.setLayout(), this.updateViewMoreHeight(), this.swiper.build(), this.resizeRequestFrame = o.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, this.updateViewMoreHeight(), this.swiper.build(), o.cancelAFrame.call(window, this.resizeRequestFrame) } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } onResponsiveChange() { } outCallback(t, e) { t = this.opts.on[t]; null != t && t(e) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.CompareItem = class { constructor(t = container, e) { var i = { el: t, productEl: ".wearable-watch-compare__product", productItem: ".wearable-watch-compare__product-item", productImage: ".wearable-watch-compare__product-image", sizeEl: ".wearable-watch-compare__size", sizeCta: ".wearable-watch-compare__size-cta", colorEl: ".wearable-watch-compare__color", colorItem: ".wearable-watch-compare__color-item", colorChip: ".wearable-watch-compare__color-chip", buyNowCta: ".buy__cta", learnMoreCta: ".learn-more__cta", classes: { isActive: "is-active" }, resizeStart: null }; this.opts = i, this.classes = i.classes, this.el = t, this.init() } init() { null !== this.el && (this.setElements(), this.initOpts(), this.initLayout(), this.bindEvnts()) } initOpts() { this.currentProduct = this.el.dataset.modelName, this.currentSize = this.el.dataset.defaultSize, this.currentColor = {}, this.colorItem.forEach(t => { let e = t.querySelector("." + this.classes.isActive); e || (e = t.querySelectorAll(this.opts.colorChip)[0]).classList.add(this.classes.isActive), this.currentColor[e.dataset.size] = e.dataset.color }), this.colorChip.forEach(t => { t.removeAttribute("aria-selected"), t.removeAttribute("aria-hidden") }), this.DATA = LOCAL_DATA[this.currentProduct] } initLayout() { this.updateSizeLayout(), this.updateColorItemlayout(), this.updateColorChip(), this.updateProductItemLayout(), this.updateProductImage(), this.updateLink() } setElements() { this.productEl = this.el.querySelector(this.opts.productEl), this.productItem = this.productEl.querySelectorAll(this.opts.productItem), this.sizeEl = this.el.querySelector(this.opts.sizeEl), this.sizeCta = this.sizeEl.querySelectorAll(this.opts.sizeCta), this.colorEl = this.el.querySelector(this.opts.colorEl), this.colorItem = this.colorEl.querySelectorAll(this.opts.colorItem), this.colorChip = this.colorEl.querySelectorAll(this.opts.colorChip), this.buyNowCta = this.el.querySelector(this.opts.buyNowCta), this.learnMoreCta = this.el.querySelector(this.opts.learnMoreCta) } bindEvnts() { this.sizeCta.forEach(t => { t.addEventListener("click", this.handlerClickSizeCta.bind(this)) }), this.colorChip.forEach(t => { t.addEventListener("click", this.handlerClickColorChip.bind(this)) }) } handlerClickColorChip(t) { t = t.currentTarget; this.currentColor[this.currentSize] = t.dataset.color, this.updateColorChip(), this.updateProductImage(), this.updateLink() } handlerClickSizeCta(t) { t = t.currentTarget; this.currentSize = t.dataset.size, this.updateSizeLayout(), this.updateColorItemlayout(), this.updateProductItemLayout(), this.updateProductImage(), this.updateLink() } updateLink() { var t = this.currentSize, e = this.currentColor[t]; const i = this.DATA[t][e]; this.learnMoreCta && (i.hasOwnProperty("learnmore") ? (this.learnMoreCta.parentElement.style.display = "block", this.learnMoreCta.setAttribute("href", i.learnmore)) : this.learnMoreCta.parentElement.style.display = "none"), this.buyNowCta && (i.hasOwnProperty("buynow") ? (this.buyNowCta.parentElement.style.display = "block", this.buyNowCta.setAttribute("href", i.buynow)) : this.buyNowCta.parentElement.style.display = "none") } updateSizeLayout() { this.sizeCta.forEach(t => { this.currentSize === t.dataset.size ? (t.classList.add(this.classes.isActive), t.setAttribute("title", "selected")) : (t.classList.remove(this.classes.isActive), t.removeAttribute("title")) }) } updateColorItemlayout() { this.currentColorItem = Array.from(this.colorItem).filter(t => { if (this.currentSize === t.dataset.size) return t.classList.add(this.classes.isActive), t; t.classList.remove(this.classes.isActive) })[0] } updateColorChip() { const t = this.currentColorItem.querySelectorAll(this.opts.colorChip); t.forEach(t => { this.currentColor[this.currentSize] === t.dataset.color ? (t.classList.add(this.classes.isActive), t.setAttribute("title", "selected")) : (t.classList.remove(this.classes.isActive), t.removeAttribute("title")) }) } updateProductItemLayout() { this.currentProductItem = Array.from(this.productItem).filter(t => { if (this.currentSize === t.dataset.size) return t.classList.add(this.classes.isActive), t; t.classList.remove(this.classes.isActive) })[0] } updateProductImage() { const t = this.currentProductItem.querySelectorAll(this.opts.productImage); t.forEach(t => { this.currentColor[this.currentSize] === t.dataset.color ? (t.classList.add(this.classes.isActive), t.removeAttribute("tabindex"), t.setAttribute("aria-hidden", !1)) : (t.classList.remove(this.classes.isActive), t.setAttribute("tabindex", -1), t.setAttribute("aria-hidden", !0)) }) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const e = WATCH6.UTILS; e.RESPONSIVE; WATCH6.Contrast = class { constructor(t = container, e) { var i = { el: t, defaultBtn: ".type-default", contrastBtn: ".type-contrast", cookieName: "highContrastMode", featureHide: "is-feature-hide" }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.bindEvents()) } setElements() { this.defaultBtn = this.el.querySelector(this.opts.defaultBtn), this.defaultBtnTitle = this.defaultBtn.getAttribute("title").trim(), this.contrastBtn = this.el.querySelector(this.opts.contrastBtn), this.contrastBtnTitle = this.contrastBtn.getAttribute("title").trim(), this.cookieName = this.opts.cookieName } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), this.defaultBtn && this.defaultBtn.addEventListener("click", this.onClickDefaultBtn.bind(this)), this.contrastBtn && this.contrastBtn.addEventListener("click", this.onClickContrastBtn.bind(this)) } onLoadHandler() { this.activeContrast() } onClickDefaultBtn(t) { t.preventDefault(), e.setCookie(this.cookieName, "0", 1), this.activeContrast() } onClickContrastBtn(t) { t.preventDefault(), e.setCookie(this.cookieName, "1", 1), this.activeContrast() } activeContrast() { var t = e.getCookie(this.cookieName); null != t && t.length && "1" == t ? (document.documentElement.classList.add("color_yb"), this.contrastBtn.setAttribute("title", this.contrastBtnTitle + " selected"), this.defaultBtn.setAttribute("title", this.defaultBtnTitle)) : (document.documentElement.classList.remove("color_yb"), this.contrastBtn.setAttribute("title", this.contrastBtnTitle), this.defaultBtn.setAttribute("title", this.defaultBtnTitle + " selected")) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Glass = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()) } setElements() { this.videoElement = this.el.querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, videoParentElement: this.opts.el })) } }, this.videoPlayer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.KeyVisual = class { constructor(t = container, e) { var i = { el: t, classes: { isUseBuy: "is-use-buy", isUseRegist: "is-use-regist", isUseOrder: "is-use-order", isUseWhere: "is-use-where", isUseOff: "is-use-off" }, featureHide: "is-feature-hide" }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || this.initLayout() } initLayout() { this.el.classList.remove(this.classes.isUseBuy), this.el.classList.remove(this.classes.isUseRegist), this.el.classList.remove(this.classes.isUseOrder), this.el.classList.remove(this.classes.isUseWhere), this.el.classList.remove(this.classes.isUseOff), "undefined" == typeof __WATCH_USE_KV_CTA || null == __WATCH_USE_KV_CTA || null == __WATCH_USE_KV_CTA || "" == __WATCH_USE_KV_CTA || "buy-now" == __WATCH_USE_KV_CTA ? this.el.classList.add(this.classes.isUseBuy) : "pre-order" == __WATCH_USE_KV_CTA ? this.el.classList.add(this.classes.isUseOrder) : "pre-registration" == __WATCH_USE_KV_CTA ? this.el.classList.add(this.classes.isUseRegist) : "where-to-buy" == __WATCH_USE_KV_CTA ? this.el.classList.add(this.classes.isUseWhere) : "where-to-buy" == __WATCH_USE_KV_CTA && this.el.classList.add(this.classes.isUseOff) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Monitoring = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()) } setElements() { this.videoElement = this.el.querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el })) } }, this.videoPlayer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const a = WATCH6.UTILS, t = a.RESPONSIVE; WATCH6.Overview = class { constructor(t = container, e) { var i = { el: t, rootEl: ".wearable-watch", layerEl: ".wearable-watch-overview__popup", featureList: ".wearable-watch-overview__list", featureItem: ".wearable-watch-overview__list-item", featureCta: ".wearable-watch-overview__list-cta", featureBtn: ".wearable-watch-overview__list-btn", featureContent: ".wearable-watch-overview__popup-content", featurePlayer: ".wearable-watch-overview__player", storyEl: ".wearable-watch-overview__story", storySlide: ".wearable-watch-overview__story-item", indicatorList: ".wearable-watch-overview__indicator-list", indicatorItem: ".wearable-watch-overview__indicator-item", indicatorText: ".indicator__text", controlHiddenEl: ".blind", navigationPrev: ".navigation__cta-prev", navigationNext: ".navigation__cta-next", storyItemController: ".story-item__btn", storyItem: ".story-item__image", storyItemCta: ".story-item__cta", closeBtn: ".cm-layer__btn-close", videoElement: ".video__container", startImage: ".video__start-frame", endImage: ".video__end-frame", featureHide: "is-feature-hide", initSlide: 0, infiniteRolling: !0, transitionDuration: 400, widthResizeStart: null, heightResizeStart: null, classes: { loaded: "loaded", ended: "ended", paused: "paused", playing: "playing", isHover: "is-hover", isActive: "is-active", isPaused: "is-paused", isHeight: "is-height" }, thumbnailTagging: { "sleep-tracking": { play: "gwatch6:highlights:overview:movi-play:sleep-tracking-video", pause: "gwatch6:highlights:overview:movi-pause:sleep-tracking-video" }, health: { play: "gwatch6:highlights:overview:movi-play:health-video", pause: "gwatch6:highlights:overview:movi-pause:health-video" }, display: { play: "gwatch6:highlights:overview:movi-play:display-video", pause: "gwatch6:highlights:overview:movi-pause:display-video" } }, popupTagging: { "sleep-tracking": { play: "gwatch6:highlights:overview^lypu:movi-play:sleep-tracking-video", pause: "gwatch6:highlights:overview^lypu:movi-pause:sleep-tracking-video" }, health: { play: "gwatch6:highlights:overview^lypu:movi-play:health-video", pause: "gwatch6:highlights:overview^lypu:movi-pause:health-video" }, display: { play: "gwatch6:highlights:overview^lypu:movi-play:display-video", pause: "gwatch6:highlights:overview^lypu:movi-pause:display-video" } } }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.buildSwiper(), this.buildLayer(), this.buildVideoPlayer(), this.bindEvents()) } initOpts() { this.winWidth = a.winSize().w, this.winHeight = a.winSize().h, this.currentDevice = !1, this.prevDevice = null, this.initValues() } initValues() { this.selectedIndex = -1 } initLayout() { this.storySlide.forEach((t, e) => { t.setAttribute("aria-hidden", "true"), t.setAttribute("tabindex", "-1"), t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "true"), t.querySelector(this.opts.storyItemCta).setAttribute("tabindex", "-1"), t.querySelector(this.opts.storyItemController) && (t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "true"), t.querySelector(this.opts.storyItemController).setAttribute("tabindex", "-1")), this.opts.initSlide === e && (t.setAttribute("aria-hidden", "false"), t.removeAttribute("tabindex"), t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemCta).removeAttribute("tabindex"), t.querySelector(this.opts.storyItemController) && (t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemController).removeAttribute("tabindex"))) }), this.indicatorItem.forEach(t => { "tablist" === this.indicatorList.getAttribute("role") && t.setAttribute("aria-selected", "false") }), this.opts.infiniteRolling || (0 === this.opts.initSlide && (this.navigationPrev.style.display = "none"), this.opts.initSlide === this.storySlide.length - 1 && (this.navigationNext.style.display = "none")) } setElements() { this.rootEl = document.querySelector(this.opts.rootEl), this.layerEl = this.el.querySelector(this.opts.layerEl), this.videoElement = this.el.querySelectorAll(this.opts.videoElement), this.featureList = this.el.querySelector(this.opts.featureList), this.featureContent = this.el.querySelector(this.opts.featureContent), this.featureCta = this.featureList.querySelectorAll(this.opts.featureCta), this.featureBtn = this.featureList.querySelectorAll(this.opts.featureBtn), this.featurePlayer = this.featureList.querySelectorAll(this.opts.videoElement), this.storyEl = this.el.querySelector(this.opts.storyEl), this.storyItem = this.el.querySelectorAll(this.opts.storyItem), this.storySlide = this.el.querySelectorAll(this.opts.storySlide), this.storyPlayer = this.storyEl.querySelectorAll(this.opts.videoElement), this.indicatorList = this.el.querySelector(this.opts.indicatorList), this.indicatorItem = this.indicatorList.querySelectorAll(this.opts.indicatorItem), this.navigationPrev = this.el.querySelector(this.opts.navigationPrev), this.navigationNext = this.el.querySelector(this.opts.navigationNext), this.closeBtn = this.el.querySelector(this.opts.closeBtn), this.storyItemController = this.storyEl.querySelectorAll(this.opts.storyItemController) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), this.featureCta.forEach((t, e) => { t.addEventListener("click", this.handleLayerOpen.bind(this, e)) }), this.indicatorItem.forEach((t, e) => { t.addEventListener("click", this.select.bind(this, e)) }), this.navigationPrev.addEventListener("click", this.handleNavigationPrev.bind(this)), this.navigationNext.addEventListener("click", this.handleNavigationNext.bind(this)), this.storySlide.forEach((t, e) => { -1 < t.querySelector(this.opts.storyItemCta).getAttribute("href").indexOf("#") && t.querySelector(this.opts.storyItemCta).addEventListener("click", this.onStoryItemCtaClickEvent.bind(this)) }) } unBindEvents() { this.indicatorItem.forEach((t, e) => { t.removeAllEventListeners("click") }), this.featureBtn.forEach(t => { t.removeAllEventListeners("click") }), this.storyItemController.forEach(t => { t.removeAllEventListeners("click") }) } onStoryItemCtaClickEvent(t) { t.preventDefault(); const e = t.target; t = e.getAttribute("href"); const i = this.rootEl.querySelector(t); t = i.dataset.rectTop || a.getOffset(i).top - a.getNavHeight(); $(this.layerEl).trigger("closeLayer", !1), $("html, body").animate({ scrollTop: t }, { duration: 1e3 }); const s = i.querySelector(".wearable-watch-common__headline") ? i.querySelector(".wearable-watch-common__headline") : i.querySelector(".wearable-watch-common__sub-headline"); s && (s.setAttribute("tabindex", "0"), s.focus(), s.addEventListener("focusout", () => { s.removeAttribute("tabindex") })) } handleNavigationPrev() { let t = this.storySwiper.instance.realIndex - 1; t < 0 && (t = this.storySlide.length - 1), this.storySwiper.instance.slideToLoop(t) } handleNavigationNext() { let t = this.storySwiper.instance.realIndex + 1; t >= this.storySlide.length && (t = 0), this.storySwiper.instance.slideToLoop(t) } handleLayerOpen(t, e) { e.preventDefault(), this.opts.initSlide = t } updateControlText(t, e) { const i = t.querySelector(this.opts.controlHiddenEl); t = e ? this.globalText.play : this.globalText.stop; i.innerHTML = t } select(t, e = !1, i) { var s = this.selectedIndex; s === t && !e || (this.animReqId && (a.cancelAFrame.call(window, this.animReqId), this.animReqId = null), -1 < s && (this.indicatorItem[s].classList.contains(this.classes.isActive) && (this.indicatorItem[s].classList.remove(this.classes.isActive), this.indicatorItem[s].removeAttribute("title")), "tablist" === this.role ? this.indicatorItem[s].setAttribute("aria-selected", "false") : this.indicatorItem[s].removeAttribute("title")), t < 0 ? this.selectedIndex = t : (this.selectedIndex = t, this.indicatorItem[this.selectedIndex].classList.contains(this.classes.isActive) || this.indicatorItem[this.selectedIndex].classList.add(this.classes.isActive), "tablist" === this.indicatorList.getAttribute("role") ? this.indicatorItem[this.selectedIndex].setAttribute("aria-selected", "true") : this.indicatorItem[this.selectedIndex].setAttribute("title", "selected"), this.storySwiper.instance.slideToLoop(this.selectedIndex))) } updateImageLayout() { this.featureContent.clientWidth / this.featureContent.clientHeight <= .56 ? this.layerEl.classList.add(this.classes.isHeight) : this.layerEl.classList.remove(this.classes.isHeight) } onResizeHandler() { a.winSize().w === this.winWidth && a.winSize().h === this.winHeight || (this.winWidth = a.winSize().w, this.winHeight = a.winSize().h, null != this.opts.widthResizeStart && null != this.opts.heightResizeStart || (this.opts.widthResizeStart = this.winWidth, this.opts.heightResizeStart = this.winHeight, this.resizeAnimateFunc())), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) } resizeAnimateFunc() { this.setWidthLayout(), this.setHeightLayout(), this.resizeRequestFrame = a.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.widthResizeStart = null, this.opts.heightResizeStart = null, a.cancelAFrame.call(window, this.resizeRequestFrame) } onResponsiveChange() { this.select(this.selectedIndex, !0), this.featurePlayer.forEach(t => { this.videoPlayer.change(t) }), "block" === this.layerEl.style.display && this.storyPlayer.forEach(t => { this.videoPlayer.change(t) }) } setWidthLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.updateImageLayout(), this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } setHeightLayout() { this.updateImageLayout() } buildVideoPlayer() { this.videoPlayer = { instance: [], load: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onLoad(e) }) }, reset: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onReset(e) }) }, play: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onPlay(e) }) }, change: e => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach(t => { t.onChange(e) }) }, build: () => { this.videoPlayer.instance.length || this.videoElement.forEach((t, e) => { var i = t.closest(this.opts.featureItem) ? this.opts.featureItem : null; this.videoPlayer.instance.push(new WATCH6.VideoPlayer(t, { sectionElement: this.opts.el, videoParentElement: i, on: { updateController: t => { const e = t.el; var i = e.dataset.tagging, t = t.playState ? "pause" : "play", s = e.classList.contains(this.opts.featureBtn.split(".")[1]) ? this.opts.thumbnailTagging : e.classList.contains(this.opts.storyItemController.split(".")[1]) ? this.opts.popupTagging : ""; e.setAttribute("data-omni", s[i][t]), e.setAttribute("ga-la", s[i][t]) } } })) }) } }, this.videoPlayer.build() } buildSwiper() { this.storySwiper = { instance: null, options: { a11y: !1, loop: this.opts.infiniteRolling, speed: this.opts.transitionDuration, effect: "fade", touchMoveStopPropagation: !0, fadeEffect: { crossFade: !0 }, initialSlide: this.opts.initSlide }, slideChange: () => { const i = this.storySwiper.instance.realIndex, t = this.storySlide[i], e = t.querySelector(this.opts.videoElement); this.select(i), e && (e.classList.contains(this.classes.loaded) ? a.isLowNetwork() || this.videoPlayer.play(e) : this.videoPlayer.load(e)), this.storySlide.forEach((t, e) => { e !== i && (e = t.querySelector(this.opts.videoElement)) && this.videoPlayer.reset(e) }) }, slideChangeTransitionStart: () => { if (null !== this.storySwiper.instance) { const e = Array.from(this.storySwiper.instance.slides); var t = this.storySwiper.instance.realIndex; this.storySlide[t]; e.forEach((t, e) => { t.setAttribute("aria-hidden", "true"), t.setAttribute("tabindex", "-1"), t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "true"), t.querySelector(this.opts.storyItemCta).setAttribute("tabindex", "-1"), t.querySelector(this.opts.storyItemController) && (t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "true"), t.querySelector(this.opts.storyItemController).setAttribute("tabindex", "-1")), t.classList.contains("swiper-slide-active") && (t.setAttribute("aria-hidden", "false"), t.removeAttribute("tabindex"), t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemCta).removeAttribute("tabindex"), t.querySelector(this.opts.storyItemController) && (t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemController).removeAttribute("tabindex"))) }) } }, destroy: () => { null !== this.storySwiper.instance && (this.storySwiper.instance.destroy(), this.storySwiper.instance = null) }, build: () => { null === this.storySwiper.instance && (this.storySwiper.options.on = { slideChange: this.storySwiper.slideChange.bind(this), slideChangeTransitionStart: this.storySwiper.slideChangeTransitionStart.bind(this) }, this.storySwiper.options.initialSlide = this.opts.initSlide, this.storySwiper.instance = new Swiper(this.opts.storyEl, this.storySwiper.options), this.storySwiper.slideChangeTransitionStart()) } } } buildLayer() { this.layer = { instance: null, build: () => { null === this.layer.instance && (this.layer.instance = new HiveLayer(this.opts.layerEl, { effect: "default", on: { layerOpenBefore: () => { this.updateImageLayout(); const t = this.storySlide[this.opts.initSlide]; var e = t.querySelector(this.opts.videoElement); this.storySwiper.build(), this.select(this.opts.initSlide), e && this.videoPlayer.load(e), this.featurePlayer.forEach(t => { this.videoPlayer.reset(t) }) }, layerOpenAfter: () => { const t = this.storySlide[this.opts.initSlide]; var e = t.querySelector(this.opts.storyItemController), i = t.querySelector(this.opts.storyItemCta); const s = e || i; window.setTimeout(() => { s.focus() }, 50) }, layerCloseBefore: () => { this.featureBtn.forEach(t => { t.classList.contains(this.classes.isPaused) && t.classList.remove(this.classes.isPaused) }) }, layerCloseAfter: () => { this.storySwiper.destroy(), this.initValues(), this.indicatorItem.forEach(t => { t.classList.remove(this.classes.isActive), t.removeAttribute("title") }), this.storySlide.forEach(t => { t = t.querySelector(this.opts.videoElement); this.videoPlayer.reset(t) }) } } })) } }, this.layer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Progress = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()) } setElements() { this.videoElement = this.el.querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, visiblePoint: .5, videoParentElement: this.opts.el })) } }, this.videoPlayer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const a = WATCH6.UTILS, t = a.RESPONSIVE; WATCH6.Screen = class { constructor(t = container, e) { var i = { el: t, trackElement: ".wearable-watch-screen__track", fixedElement: ".wearable-watch-screen__fixed", textElement: ".wearable-watch-screen__text", videoElement: ".video__container", videoController: ".video__controller", featureHide: "is-feature-hide", classes: { scene01: "scene01", scene02: "scene02", brokenFixedAnimation: "broken-fixed-animation" }, widthResizeStart: null, heightResizeStart: null }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.bindEvents(), this.buildVideoPlayer(), this.onLoadHandler()) } setElements() { this.trackElement = this.el.querySelector(this.opts.trackElement), this.fixedElement = this.el.querySelector(this.opts.fixedElement), this.textElement = this.el.querySelector(this.opts.textElement), this.videoElement = this.el.querySelector(this.opts.videoElement), this.videoController = this.el.querySelector(this.opts.videoController), this.video = this.videoElement.querySelector("video"), this.video.querySelectorAll("source").forEach(t => { document.documentElement.classList.contains("safari") && -1 < t.getAttribute("type").indexOf("webm") && t.remove() }) } initOpts() { this.getCurrentDevice(), this.winWidth = a.winSize().w, this.winHeight = a.winSize().h, this.currentAnimation = null, this.prevAnimation = null, this.scroller = null, this.brokenScroller = null, this.lastScrollY = 0, this.animationPlay = !1 } initStyle() { ANIUTIL.removeClass({ targetElement: this.el, classList: [this.classes.brokenFixedAnimation, this.classes.scene01, this.classes.scene02] }) } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)), window.addEventListener("orientationchange", this.onOrientationChange.bind(this)) } getCurrentDevice() { this.winWidth = a.winSize().w, this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile" } buildVideoPlayer() { this.videoPlayer = { instance: null, play: () => { null !== this.videoPlayer.instance && this.videoPlayer.instance.onPlay(this.videoElement) }, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, videoParentElement: this.opts.el, on: { updatePlayState: t => { this.videoController || a.isFullAnimationBrokenFixed() || t && this.el.classList.add(this.classes.scene02) }, updateController: t => { !this.videoController || t.playState && !a.isFullAnimationBrokenFixed() && (a.isLowNetwork() ? (this.el.classList.contains(this.classes.scene02) && this.el.classList.remove(this.classes.scene02), window.setTimeout(() => { this.el.classList.add(this.classes.scene02) }, 10)) : this.el.classList.add(this.classes.scene02)) } } })) } }, this.videoPlayer.build() } onLoadHandler() { this.setWidthLayout(), this.setHeightLayout(), this.onScrollHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)) } onScrollHandler() { const t = this; var e = window.scrollY; this.lastScrollY, a.getScroll().bottom, a.getOffset(this.el).top; null !== this.scroller && this.scroller.trackAnimation(function () { this.progress <= 0 && t.el.classList.remove(t.classes.scene02), !t.videoController && a.isLowNetwork() && 40 < this.progress && t.videoPlayer.play() }), null !== this.brokenScroller && this.brokenScroller.activeAnimation(), this.lastScrollY = e } onResizeHandler() { a.winSize().w === this.winWidth && a.winSize().h === this.winHeight || (this.winWidth = a.winSize().w, this.winHeight = a.winSize().h, null != this.opts.widthResizeStart && null != this.opts.heightResizeStart || (this.opts.widthResizeStart = this.winWidth, this.opts.heightResizeStart = this.winHeight, this.resizeAnimateFunc())), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) } resizeAnimateFunc() { this.setWidthLayout(), this.setHeightLayout(), this.resizeRequestFrame = a.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.widthResizeStart = null, this.opts.heightResizeStart = null, a.cancelAFrame.call(window, this.resizeRequestFrame) } onResponsiveChange() { this.destroyScroller(), this.destroyBrokenScroller(), this.initStyle(), a.isFullAnimationBrokenFixed() ? this.setBrokenScroller() : this.setScroller() } onOrientationChange() { setTimeout(() => { this.destroyScroller(), this.destroyBrokenScroller(), this.initStyle(), a.isFullAnimationBrokenFixed() ? this.setBrokenScroller() : this.setScroller() }, 150) } setWidthLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } setHeightLayout() { var t = window.innerWidth, e = window.innerHeight, i = !!a.isTouchDevice && window.matchMedia("(orientation: landscape)").matches, s = !!a.isTouchDevice && !window.matchMedia("(orientation: landscape)").matches; this.currentAnimation = s && e / t < 1.5 || i || e < 700 ? "broken" : "use", this.currentAnimation === this.prevAnimation || a.isTouchDevice || this.onResponsiveChange(), this.prevAnimation = this.currentAnimation } setScroller() { this.destroyScroller(), null === this.scroller && (this.scroller = SCROLLER({ trackElement: this.trackElement, useFixed: !1 })) } setBrokenScroller() { null === this.brokenScroller && (this.brokenScroller = SCROLLER({ trackElement: this.trackElement, activeElement: this.el, activeClass: this.classes.brokenFixedAnimation })) } destroyScroller() { null !== this.scroller && (this.scroller.destroy(!0), this.scroller = null) } destroyBrokenScroller() { null != this.brokenScroller && (this.brokenScroller.destroy(!0), this.brokenScroller = null) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Snap = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()) } setElements() { this.videoElement = this.el.querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el })) } }, this.videoPlayer.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Standalone = class { constructor(t = container, e) { this.opts = { el: t, tabEl: ".wearable-watch-standalone__tab", tabList: ".wearable-watch-standalone__tab-list", tabButtons: ".wearable-watch-standalone__tab-cta", tabPanel: ".wearable-watch-standalone__tab-panels", tabPanels: ".wearable-watch-standalone__tab-panel", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildTab()) } setElements() { this.tabEl = this.el.querySelector(this.opts.tabEl) } buildTab() { this.tab = { instance: null, build: () => { null === this.tab.instance && (this.tab.instance = new WATCH6.Tab(this.tabEl, { tabEl: this.opts.tabEl, tabList: this.opts.tabList, tabButtons: this.opts.tabButtons, tabPanel: this.opts.tabPanel, tabPanels: this.opts.tabPanels })) } }, this.tab.build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const a = WATCH6.UTILS, t = a.RESPONSIVE; WATCH6.Tab = class { constructor(t = container, e) { var i = { el: t, tabEl: ".wearable-watch__tab", tabList: ".wearable-watch__tab-list", tabButtons: ".wearable-watch__tab-cta", tabPanel: ".wearable-watch__tab-panels", tabPanels: ".wearable-watch__tab-panel", classes: { isActive: "is-active" }, resizeStart: null }; this.opts = a.def(i, e || {}), this.classes = i.classes, this.el = t, this.init() } init() { null !== this.el && (this.setElements(), this.initOpts(), this.bindEvents()) } setElements() { this.tabEl = this.el, this.tabList = this.tabEl.querySelector(this.opts.tabList), this.tabButtons = a.convertArray(this.tabList.querySelectorAll(this.opts.tabButtons)), this.tabPanel = this.el.querySelector(this.opts.tabPanel), this.tabPanels = a.convertArray(this.tabPanel.querySelectorAll(this.opts.tabPanels)) } initOpts() { this.currentIndex = 0, this.currentDevice = !1, this.prevDevice = null } initLayout() { this.tabButtons.forEach(function (t, e) { const i = this.tabPanels[e]; this.currentIndex == e ? (t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive), i.classList.contains(this.classes.isActive) || i.classList.add(this.classes.isActive), t.setAttribute("aria-selected", !0), a.offAccessibility(i)) : (t.classList.contains(this.classes.isActive) && t.classList.remove(this.classes.isActive), i.classList.contains(this.classes.isActive) && i.classList.remove(this.classes.isActive), t.setAttribute("aria-selected", !1), a.onAccessibility(i)) }) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), this.tabButtons.forEach(t => { t.addEventListener("click", this.onClickTabButton.bind(this)) }) } unBindEvents() { } onClickTabButton(t) { t = t.currentTarget; const s = this.tabButtons.indexOf(t); s != this.currentIndex && (this.tabButtons.forEach((t, e) => { const i = this.tabPanels[e]; s == e ? (t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive), i.classList.contains(this.classes.isActive) || i.classList.add(this.classes.isActive), t.setAttribute("aria-selected", !0), a.offAccessibility(i)) : (t.classList.contains(this.classes.isActive) && t.classList.remove(this.classes.isActive), i.classList.contains(this.classes.isActive) && i.classList.remove(this.classes.isActive), t.setAttribute("aria-selected", !1), a.onAccessibility(i)) }), this.currentIndex = s) } onResizeHandler() { a.winSize().w !== this.winWidth && (this.winWidth = a.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)) } resizeAnimateFunc() { this.setLayout(), this.resizeRequestFrame = a.requestAFrame.call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, a.cancelAFrame.call(window, this.resizeRequestFrame) } onResponsiveChange() { } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Train = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()) } setElements() { this.videoElement = this.el.querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, videoParentElement: this.opts.el })) } }, this.videoPlayer.build() } } }(), function () { "use strict"; WATCH6.UTILS.RESPONSIVE; new class { constructor(t = container) { this.opts = { el: t, wrapEl: "#wrap", keyVisualEl: ".wearable-watch-kv", overviewEl: ".wearable-watch-overview", screenEl: ".wearable-watch-screen", bandEl: ".wearable-watch-band", glassEl: ".wearable-watch-glass", trainEl: ".wearable-watch-train", snapEl: ".wearable-watch-snap-remote", standaloneEl: ".wearable-watch-standalone", monitoringEl: ".wearable-watch-monitoring", batteryEl: ".wearable-watch-battery-processor", progressEl: ".wearable-watch-progress", compareEl: ".wearable-watch-compare", contrastEl: ".cp-high-contrast", subNavEl: "#subnav" }, this.el = document.querySelector(t), this.init() } init() { null !== this.el && (this.buildComponents(), initialize.init()) } buildComponents() { this.imageLoader = new WATCH6.ImageLoader(this.opts.el, { loadOption: [{ resolution: 1920, attribute: "data-src-pc" }, { resolution: 1080, attribute: "data-src-tablet" }, { resolution: 767, attribute: "data-src-mobile" }] }), this.videoLoader = new WATCH6.VideoLoader(this.opts.el, { notLoadElement: [".cm-layer"], loadOption: [{ resolution: 1920, attribute: "data-media-pc" }, { resolution: 767, attribute: "data-media-mo" }] }), this.keyVisual = new WATCH6.KeyVisual(this.opts.keyVisualEl), this.overview = new WATCH6.Overview(this.opts.overviewEl), this.screen = new WATCH6.Screen(this.opts.screenEl), this.standalone = new WATCH6.Standalone(this.opts.standaloneEl), this.monitoring = new WATCH6.Monitoring(this.opts.monitoringEl), this.band = new WATCH6.Band(this.opts.bandEl), this.glass = new WATCH6.Glass(this.opts.glassEl), this.train = new WATCH6.Train(this.opts.trainEl), this.snap = new WATCH6.Snap(this.opts.snapEl), this.compare = new WATCH6.Compare(this.opts.compareEl, { on: { updateImageLoader: t => { this.imageLoader.setResponsiveImage(t) } } }), this.contrast = new WATCH6.Contrast(this.opts.contrastEl), this.batteryEl = new WATCH6.Battery(this.opts.batteryEl), this.progressEl = new WATCH6.Progress(this.opts.progressEl), window.addEventListener("load", () => { setTimeout(() => { window.GALAXY && window.GALAXY.isGalaxy && (this.subNav = new WATCH6.SubNav(this.opts.subNavEl)) }, 5) }) } }(".wearable-watch") }(); });
    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India (2024)

    FAQs

    Galaxy Watch6 Bluetooth (40mm) Gold | Specs & Features | Samsung India? ›

    Samsung Galaxy Watch users can now measure blood pressure and ECG: Steps to measure, eligible devices and more. Samsung introduces blood pressure and ECG monitoring features for Galaxy Watch6 series in India. Launch includes blood pressure and ECG tracking features accessible through Samsung Health Monitor App.

    Does Galaxy watch ECG work in India? ›

    Samsung Galaxy Watch users can now measure blood pressure and ECG: Steps to measure, eligible devices and more. Samsung introduces blood pressure and ECG monitoring features for Galaxy Watch6 series in India. Launch includes blood pressure and ECG tracking features accessible through Samsung Health Monitor App.

    How does Galaxy Watch LTE work in India? ›

    The LTE version can receive calls and messages without being connected to a phone. However, you'll first need to activate service for your watch through the same carrier as your mobile phone.

    What features does the Galaxy Watch 6 have? ›

    Galaxy Watch 6 vs. 6 Classic
    Samsung Galaxy Watch 6Samsung Galaxy Watch 6 Classic
    Voice assistantYes (Google Assistant, Bixby)Yes (Google Assistant, Bixby)
    Mobile PaymentsYes (Samsung Wallet)Yes (Samsung Wallet)
    Sleep trackingYesYes
    Period trackingYesYes
    28 more rows
    Aug 3, 2023

    Can a Samsung watch measure blood pressure? ›

    Samsung Galaxy Watch 5 Pro

    The Galaxy Watch 5 Pro measures blood pressure and, using the watch's built-in health monitor app, takes ECG readings as well. However, Samsung does caution that the blood pressure function "cannot diagnose hypertension, other conditions, or check for signs of a heart attack.

    Does ECG app work in India? ›

    Thank you for your question. The ECG app is currently supported in India. You can find here the list of regions where ECG app is supported. If the ECG app is not installed in your Fitbit Sense, please visit this article, open the menu "How do I install the Fitbit ECG app?" and follow the instructions.

    Will LTE watch in USA work in India? ›

    Short Answer: No, the US variant does not support the LTE bands used in India. You will have to look at models sold in Hongkong/UK/Japan for use in India.

    Does USA cellular watch work in India? ›

    USA Apple Watch will not work with cellular carriers in India because the hardware does not support the LTE bands in India. I got mine from Hongkong which has supported hardware for India. You could get compatible model from HK, UK or Japan.

    Is LTE watch worth it in India? ›

    LTE-enabled smartwatches support 4G connection and act as standalone devices, allowing users to make calls, receive notifications, stream music, and use maps without their phones. However, LTE support is limited to premium offerings and consumes more power.

    Can I leave my phone at home and use my Galaxy Watch 6? ›

    While used with a standalone plan, the Galaxy Watch won't require an Android™ smartphone or Apple® iPhone® to function after initial activation but does require the phone for certain options (e.g., software updates, email, etc.).

    Which is better, LTE or Bluetooth watch? ›

    When looking for LTE and GPS smartwatches, the choice ultimately comes down to what you are looking for. LTE smartwatches offer enhanced connectivity and a broader range of features, making them suitable for users who value constant communication and app support.

    Does the Galaxy Watch 6 have a SIM card? ›

    You don't need a separate SIM card for your Samsung Watch, because it has a built-in eSIM.

    How accurate is Galaxy Watch 6 blood pressure? ›

    We know the measurements are used as references other than for medical examination, and the test results should be accurate-close enough.

    Does smart watch show exact blood pressure? ›

    Yes, several smartwatches measure blood pressure, including the Omron HeartGuide and the Samsung Galaxy Watch 5. Their readings are unlikely to be as accurate as those from the blood pressure monitors doctors use, but they can help people keep track of their blood pressure in between medical appointments.

    Is the Samsung Health monitor app available in India? ›

    Samsung Health Monitor now available in India 🔥🔥 - Samsung Members.

    Does Fitbit ECG app work in India? ›

    As part of a new update, the Fitbit Charge 5 introduces an ECG app, Daily Readiness Score, and Blood Glucose Logging feature in India.

    How to use ECG on Apple Watch in India? ›

    With the hand opposite your watch, hold your finger on the Digital Crown, then wait while Apple Watch records the ECG. You don't need to press the Digital Crown during the session.

    Top Articles
    Latest Posts
    Article information

    Author: Twana Towne Ret

    Last Updated:

    Views: 5498

    Rating: 4.3 / 5 (64 voted)

    Reviews: 95% of readers found this page helpful

    Author information

    Name: Twana Towne Ret

    Birthday: 1994-03-19

    Address: Apt. 990 97439 Corwin Motorway, Port Eliseoburgh, NM 99144-2618

    Phone: +5958753152963

    Job: National Specialist

    Hobby: Kayaking, Photography, Skydiving, Embroidery, Leather crafting, Orienteering, Cooking

    Introduction: My name is Twana Towne Ret, I am a famous, talented, joyous, perfect, powerful, inquisitive, lovely person who loves writing and wants to share my knowledge and understanding with you.