Website ini menggunakan cookie. Dengan mengklik TERIMA atau melanjutkan penelusuran website, Anda menyetujui penggunaan cookie kami.
Lihat Kebijakan Privasi kami di sini.
Put PC-like power in your pocket, Galaxy Z Fold6. More powerful than ever with its super-slim, productive screen. Now super-charged with Galaxy AI on foldables.
After loading a recorded file in the Samsung Notes app, the Speech-to-Text button is used to convert the recorded file to text. The Summary button is pressed to produce a summary.
A chipset is shown with specs CPU, NPU, and GPU lit up. The chipset pops up and lights up, then transitions to a game on an unfolded screen. Dark and Darker mobile logo and a scene from the game appear.
"Truly replicates a traditional phone while doubling as a sleek tablet"
CNET
"Simply the best big foldable phone"
PC Mag
THE LIGHTEST
239 g
THE THINNEST
5.6 mm
A close-up of Galaxy Z Fold6 is displayed at a slight angle that shows off its sides.
UNFOLD PERFECTION
Thinner and lighter with a pocket-worthy silhouette, and an even brighter, awe-inspiring fold-out screen.
Colorful. Confident. Wonderful
Colors as bold as you. Be confident, and be a true standout with one of the exclusive online colors — available only here on Samsung.com.
*Online exclusive colors only available on Samsung.com.
Galaxy AI is here on Galaxy Foldables
Galaxy AI
is hereon Galaxy Foldablesis here onGalaxy Foldables
CIRCLE TO SEARCH
Circle to search on the big screen
It's an efficient way to search on a smartphone — just make a circle. Boost your productivity on the massive fold-out screen, with your finger or the S Pen.
A menu of a restaurant is open. S Pen is used to circle text page: Galette. Search results appear in a Circle to Search with Google pop-up.
Tap to try
The full view of the open Galaxy Z Fold6 is shown. When the Home button is clicked, the Circle to Search feature activates.
Tap to try
A circle is traced around the "Galette." The "Galette" is identified and Google search results for the item appear.
NOTE ASSIST
The easiest way to summarize notes on Galaxy foldables
Get lecture notes in just a few taps — even as you multitask. Note Assist transcribes recordings and organizes them into notes, producing efficient summaries. For everything else there's S Pen, ready to work wonders on the sweeping screen.
The Voice recording button is tapped from the Samsung Notes app. With a press on the Summary button, the transcription is summarized.
Tap to try
The recording converts to text when the speech-to-text button is pressed.
Tap to try
At the tap of a Summary button, the Samsung Notes app produces a summary of the recording.
Need to write something in a hurry? Just type a few keywords to achieve full productivity.
Browsing Assist
Find a website that you need to understand quickly? AI summarizes entire websites in a flash.
PHOTO ASSIST
Effortless editing. Courtesy of Galaxy AI
The object-aware engine lets you edit photos to your heart's content. With Photo Assist, just hold your finger down on an object to move, erase or enlarge it; adjust angles or fill backgrounds just as easily.
One of the subjects is selected and moved to another place in the picture. Missing areas are filled in using AI.
Portrait Studio
Let AI ignite your imagination with Portrait Studio. Self portraits instantly turn into incredible works of art.
Instant Slow-mo
Instant Slow-mo lets you focus on key moments by selectively applying slow motion to a video, and sharing or saving the clip.
The video plays and starts to slow down when the screen is tapped to show Instant Slow-mo.
Sketch to Image
Draw from scratch or on any photo. Use AI to transform that sketch into an image.
INTERPRETER
Your ultimate interpreter experience with dual screens,
Traveling and need to talk with the locals? Interpreter translates on the spot whether you're expressing yourself, or listening to a global conference in a foreign language or to a tour guide.
A conversation in two languages is transcribed and translated in real time.
Tap to try
Galaxy AI transcribes conversations in real-time. Translations of each language appear as texts on the screen.
Tap to try
The dual screen button activates the Interpreter app from the cover screen.
LIVE TRANSLATE
Borderless phone calls
Translate phone conversations instantly. Perfect for real-time voice translation on various apps, especially when you're making calls that involve two languages.
Chat with Google Gemini to supercharge your ideas
Thanks to Samsung’s longstanding partnership with Google, your Galaxy now comes with the Google Gemini app. Chat with Gemini to get help learning in new ways, writing thank you notes, planning events and more.
GET FULLY IMMERSED
Dark and Darker mobile logo. A scene in a game is shown at first in close-up, and later from farther until the screen of an unfolded Galaxy Z Fold6 is shown, framing the game-in-progress.
*DARK AND DARKER MOBILE IS A TRADEMARK OR SERVICE MARK OF KRAFTON, INC.
Our most immersive smartphone gaming
Fold open a mobile gaming beast with a massive screen made better with the Vision Booster's powerful brightness and clarity even in broad daylight.,
2600nits
1.5xbrighter
Powerful gaming with the fastest processor on Galaxy foldables
Enjoy silky-smooth gaming with Vulkan, even in AAA games. Then, Snapdragon® 8 Gen 3 for Galaxy renders graphics that are absolutely fire.
The fastest Snapdragon on a Galaxy Z Fold yet,
GPU
19%faster graphics rendering
NPU
42%improved on-device AI performance
CPU
18%faster performance
The fastest Snapdragon on a Galaxy Z Fold yet,
Game harder.Game longer
Our battery ensures all-day enjoyment. It's not just a massive battery, but also leverages a more efficient display. Game on.
Listen to music up to
77hrs
Watch videos up to
23hrs
Turn Pro. ProVisual Engine
Meet Fold's most powerful camera system yet. Topped with an upgraded NPU, mind-blowing specs and ProVisual Engine, it'll transform your multimedia experience.
front camera
10MPCover Camera
4MPUnder Display Camera
rear camera
12MPUltra Wide Camera
50MPWide-angle Camera2x Optical Quality Zoom
10MP3x Optical ZoomTelephoto Camera
Extremely detail-oriented
With our high-resolution, 50MP camera, witness every detail come to life with stunning clarity and vibrancy.
Captured by Galaxy Z Fold6#withGalaxy
Crystal-clear zoom. Powered by AI
Zoom way, way, way in while keeping noise down and resolution clear with ProVisual Engine. Its sharp analysis of the zoomed-in region enhances your shot dramatically.
A photo zooms in, going from 1.0x zoom to 1.9x. Even when zoomed in, details remain clear.
Captured by Galaxy Z Fold6#withGalaxy
Zoom Map
Use the Zoom Map to get your bearings when you're zoomed in; it'll make navigation a breeze.
Captured by Galaxy Z Fold6#withGalaxy
Brighten things up with Super HDR
See it, believe it. Super HDR puts the right emphasis on details to pop and impress, even before you take the picture.
Captured by Galaxy Z Fold6#withGalaxy
Durable. Reliable. Built to last
Engineered for endurance
Meet our slim and innovative FlexHinge.
Shielded in aluminum
Enhanced Armor Aluminum keeps you protected.,
Truly tough
Strong protection with Corning® Gorilla® Glass Victus® 2.
Stay water-resistant
IP48 water resistance for those unexpected spills.
Send files, data and content between devices, including iOS and PCs. It's a quick and secure way to openly share.
Your privacy. Secured.
In Privacy and Security, quickly see which apps are accessing your information, then customize your settings. Plus, with Advanced Intelligence features, you can process data for AI services from your Galaxy device or on the cloud.
Switch to Galaxy
Switch to Galaxy, it's easy. Elevate your experience with features exclusive to Galaxy users.
Galaxy Z Fold6 memanfaatkan AI di berbagai aplikasinya. Contohnya, kamera menggunakan AI Zoom; Photo Assist memanfaatkan AI untuk mengisi latar belakang serta memindahkan, mengubah ukuran, atau menghapus objek dalam foto.,
Alat produktivitas termasuk Interpreter, yang bekerja secara offline untuk menerjemahkan percakapan secara real-time, dan Live Translate yang memfasilitasi panggilan dalam berbagai bahasa., Fitur Composer pada Chat Assist membantu menyusun pesan secara efisien. Sementara itu, Note Assist dapat mentranskrip rekaman dan mengorganisir catatan.,
Galaxy Z Fold6 hadir dengan layar besar, memiliki Cover Screen 6,3" dan Main Screen 7,6". Dilengkapi dengan Galaxy AI, perangkat ini menjadi setup sempurna untuk produktivitas tingkat tinggi., Selain itu, Galaxy Z Fold6 ideal untuk menonton video atau pengalaman gaming yang lebih imersif. Galaxy Z Fold6 mencapai kecerahan puncak 2600 nits, meningkat dari 1750 nits pada Galaxy Z Fold5. Fitur 3 Step Vision Booster juga menyesuaikan warna berdasarkan pencahayaan sekitar, menjaga tampilan tetap jelas bahkan saat di luar ruangan atau dalam perjalanan.
S Pen memungkinkan penggunaan Galaxy AI yang lebih produktif. Meskipun S Pen didukung pada Main Screen, Galaxy Z Fold6 tidak dilengkapi dengan S Pen secara bawaan. Untuk menikmati pengalaman mencatat yang lancar dan melakukan Air Commands, Anda perlu membeli S Pen Fold Edition atau S Pen Case secara terpisah.
Satu kali pengisian daya pada Galaxy Z Fold6 bertahan lebih lama dibandingkan Galaxy Z Fold5. Meskipun Galaxy Z Fold6 menggunakan baterai 4400mAh (tipikal) yang sama dengan Galaxy Z Fold5, prosesor yang lebih canggih memungkinkan penggunaan daya yang lebih efisien. Dengan ini, Anda dapat mendengarkan musik hingga 77 jam atau menonton video hingga 23 jam dalam sekali pengisian daya.,
Software Galaxy Z Fold6 telah ditingkatkan dengan Snapdragon® 8 Gen 3 Mobile Platform for Galaxy, sebuah prosesor berkinerja tinggi yang memungkinkan pengalaman gaming yang sangat mulus. Selain dilengkapi dengan Vulkan API dan AP terbaru, fitur 3 Step Vision Booster-nya juga menyesuaikan warna berdasarkan pencahayaan sekitar. Galaxy Z Fold6 dapat mencapai kecerahan puncak 2600 nits, meningkat dari 1750 nits pada Galaxy Z Fold5. Area Vapor Chamber juga diperbesar untuk mendukung periode gaming berat yang lebih lama. Vapor Chamber area also increased to support extended periods of heavy gameplay.
Dengan berat 239 gram, Galaxy Z Fold6 lebih ringan dan tipis dibanding Galaxy Z Fold5, membuatnya lebih mudah disimpan di saku.
Peningkatan processor menjadikan performa Galaxy Z Fold6 lebih unggul di segala aspek, dengan peningkatan kinerja CPU sebesar 17%, GPU 20%, dan NPU 42% dibandingkan Galaxy Z Fold5. Yang tak kalah penting, versi terbaru dan paling canggih dari Galaxy AI akan meningkatkan produktivitas Anda ke level yang lebih tinggi.
Galaxy Z Fold6 dilengkapi dengan Front/Cover Camera 10MP. Layar utamanya memiliki Under Display Camera tersembunyi 4MP. Di bagian belakang, Galaxy Z Fold6 dibekali dengan Wide-angle Camera 50MP, Ultra Wide Camera 12MP, dan Telephoto Camera 10MP. Sepanjang hari, Anda dapat mengambil foto yang tajam dan jernih berkat processor canggih dan perangkat lunak berbasis AI. Unduh Expert RAW untuk mendapatkan kontrol kreatif yang lebih luas atas kamera profesional Galaxy Z Fold6.
Galaxy Z Fold6 hadir dengan FlexHinge dual rail yang tangguh dan memiliki rating IP48 untuk ketahanan terhadap air. Layar depan dan belakangnya dilindungi oleh material terbaru Corning® Gorilla® Glass Victus® 2, sementara bingkai logamnya terbuat dari Armor Aluminum yang kokoh.
Kombinasi ini menjadikan Galaxy Z Fold6 sebagai perangkat yang tidak hanya canggih, tetapi juga tahan lama untuk penggunaan sehari-hari.,
*Online exclusive colors only available on Samsung.com.
Sequences shortened and simulated. Results for illustrative purposes only. Service availability may vary by country, language, device model. Requires internet connection. Users may need to update Android and Google app to the latest version. Works on compatible apps and surfaces. Results may vary depending on visual matches. Accuracy of results is not guaranteed.
Summary feature for Note Assist requires a network connection and Samsung Account login. Service availability may vary by language. Summary feature for Note Assist is activated when a certain number of characters is met and is under the character limit. Voice recording feature for Note Assist may not be supported in some countries. Audio files must be under 3 hours in duration to be processed. Accuracy of results is not guaranteed.
Compared to previous Galaxy Z Fold models.
Thickness measured from top to bottom of the glass when unfolded.
Color availability may vary depending on country or carrier.
Galaxy Z Fold6 does not have a built-in slot for the S Pen. S Pen sold separately. Use an S Pen that is designed for Galaxy Z Fold. S Pen Fold Edition is compatible for Galaxy Z Fold5 and Z Fold6. All other S Pens or stylus pens may damage the screen. S Pen support is limited to the Main Screen.
Composer feature for Chat Assist requires a network connection and Samsung Account login. This feature is activated when a certain number of characters is met. Service availability may vary by language. Accuracy of results is not guaranteed.
Summary feature for Browsing Assist requires a network connection and Samsung Account login. Service availability may vary by language. Service may have limited functionality or unavailable on certain paid websites. Character limit applies. Accuracy of results is not guaranteed.
Generative Edit feature for Photo Assist requires a network connection and Samsung Account login. Editing with Generative Edit may result in a resized photo up to 12MP. A visible watermark is overlaid on the image output upon saving in order to indicate that the image is generated by AI. The accuracy and reliability of the generated output is not guaranteed.
Portrait Studio feature for Photo Assist requires a network connection and Samsung Account login. Editing with Portrait Studio results in a resized photo up to 9MP. A visible watermark is overlaid on the image output upon saving in order to indicate that the image is generated by AI. The accuracy and reliability of the generated output is not guaranteed.
Instant Slow-mo feature for Photo Assist is available on Samsung Video Player and Samsung Gallery. May not be available on certain video file types. Accuracy of results not guaranteed.
Sketch to Image feature requires a network connection and Samsung Account login. Editing with Sketch to Image may result in a resized photo up to 12MP. A visible watermark is overlaid on the image output upon saving in order to indicate that the image is generated by AI. The accuracy and reliability of the generated output is not guaranteed.
Interpreter feature requires Samsung Account login. Certain languages may require language pack download. Service availability may vary by language. Accuracy of results is not guaranteed. Availability and supported features may vary by country, region or carrier. Availability of supported languages may vary.
Dual screens are available in Conversation mode only.
Live Translate feature requires network connection to receive call messages. It can translate without network connection once the call messages are received by the device. Samsung Account login required. Live Translate feature is only available on pre-installed Samsung Phone apps and some third-party apps. Service availability may vary by language or region. Certain languages may require language pack download. Accuracy of results is not guaranteed.
Sequences shortened and simulated. Results for illustrative purposes only. Service availability may vary by country, language, device model. Requires internet connection and Google Account login. Users may need to download or update Google Gemini app to the latest version. Check responses for accuracy. Gemini is a trademark of Google LLC. Gemini opt-in is rolling out to select devices and countries — opt in to Gemini from your Google Assistant or by downloading the Gemini app. Product functionality may be dependent on app and device settings. Some functions may not be compatible with certain apps. Accuracy of results is not guaranteed. Feature availability may vary by content.
Limited to Samsung smartphones.
Galaxy Z Fold6 has a peak brightness of 2600 nits on both the Main Screen and Cover Screen. The displays are adaptive, adjusting brightness level automatically based on the environment. In certain illuminance conditions or higher, High Brightness Mode and Vision Booster will be activated.
Compared to Galaxy Z Fold5.
Snapdragon branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries.
AP performance improvements shown compared to Galaxy Z Fold5. Actual performance will depend on user environment, conditions and pre-installed software and applications.
Limited to Galaxy foldable smartphones.
Actual battery life may vary by network environment, features and apps used, frequency of calls and messages, the number of times charged, and many other factors. Estimated against the average usage profile compiled and independently assessed by UX Connect Research under default settings using LTE and 5G Sub6 networks.
Based on Samsung internal lab test conditions with pre-release version of given model connected to earphone via Bluetooth under default settings over LTE. Estimated against battery capacity and measured current over battery power consumption during video playback (video file resolution 720p, saved on device) and audio playback (mp3 file, 192kbps, saved on device with LCD display turned off), respectively. Actual video and audio playback times vary by network connection, settings, file format, screen brightness, battery condition and many other factors.
AI Zoom is applied to distances between digital zoom lengths. Accuracy of results is not guaranteed.
The Zoom Map feature activates from 20x zoom and over.
Wired transfers from Android™ devices require the receiving device to have Android™ 4.3 or later and the sending device to have Android 4.3™ or later. Transfers can be completed without a cable through a wireless connection. For wireless connections, the receiving device must have Android™ 4.0 or later and the sending device must have Android™ 4.0 or later. Open Smart Switch Mobile in “Settings” on the receiving Galaxy device or download the Smart Switch Mobile app from the Galaxy Store. Data, content and apps available for transfer may vary by transmission method.
Wired transfers from iOS require the receiving device to have Android™ 4.3 or later and the sending device to have iOS 5 or later. Transfers can be completed without a cable through a wireless connection or iCloud. For wireless connections, the receiving device must have Android™ 4.0 or later and the sending device must have iOS 12 or later. iCloud transfers require the receiving device to have Android™ 4.0 or later and the sending device to have iOS 5 or later. Open Smart Switch Mobile in “Settings” on the receiving Galaxy device or download the Smart Switch Mobile app from the Galaxy Store. For wireless transfers, download Smart Switch for iOS from the App Store on your iPhone or iPad. Data, content and apps available for transfer may vary by transmission method. Contacts, gallery, videos, calendars and reminders can be transferred wirelessly from an iOS device.
It is recommended to use a wired connection when transferring diverse sets of data at once.
Quick Share feature between Galaxy devices available with the following OS: smartphones and tablets with Android OS version 10.0 (Q) and One UI 2.1 or above, PCs running Windows 10 or later. Requires Samsung Account and Wi-Fi and Bluetooth connection. Quick Share to iOS and Android devices available by sending shared link: individual files shared cannot exceed 5GB (for a total of 5GB per day) and link will expire after two days; requires a Samsung Account and internet connection.
Compared to previous models.
Armor Aluminum Frame does not include volume and side keys or SIM tray.
Corning® Gorilla® Glass Victus® 2 is applied to the front and rear of the device.
Based on lab test conditions for submersion in up to 1.5 meters of freshwater for up to 30 minutes and for protection against a solid object greater than 1mm such as a wire. Not advised for beach or pool use. Water resistance of device is not permanent and may diminish over time because of normal wear and tear. Not dust- or sand-resistant.
Samsung Care+ coverage, service type and promotion details may vary by country/region and deductible (service fee) may apply. To be eligible for Samsung Care+ promotion benefit, registration may be required. For detailed Samsung Care+ information, please visit https://www.samsung.com/samsung-care-plus/.
Galaxy Buds3 Pro and Galaxy Watch7 devices sold separately.
Energy Score is available on Android phones (Android 11 or above) and requires Samsung Health app (v6.27 or above). Samsung Account login required. Service availability may vary by country or region. To check the Energy Score, the health data tracked from Samsung Galaxy Watch or Samsung Galaxy Ring must be synchronized with the Samsung Health App. Needs at least the previous day’s activity data and sleep, and heart rate data during sleep. Not intended for use in detection, diagnosis, treatment of any medical condition. The result is for your personal reference only. Please consult a medical professional for advice.
Measured diagonally, Galaxy Z Fold6’s Main Screen size is 7.6" in the full rectangle and 7.6" accounting for the rounded corners; actual viewable area is less due to the rounded corners.
Measured diagonally, Galaxy Z Fold6's Cover Screen size is 6.3" in the full rectangle and 6.2" accounting for the rounded corners; actual viewable area is smaller due to the rounded corners and camera hole.
Air Command feature availability may vary by model or app.
Typical value tested under third-party laboratory condition. Typical value is the estimated average value considering the deviation in battery capacity among the battery samples tested under IEC 61960 standard. Rated capacity is 4273mAh for Galaxy Z Fold6. Actual battery life may vary depending on network environment, usage patterns and other factors.
Expert RAW must be downloaded separately from the Galaxy Store, for free, before use. Supported on S24 and S23 series devices, S22 series devices, S21 Ultra, S20 Ultra, Note20 Ultra, Z Fold6, Z Flip6, Z Fold5, Z Fold4, Z Fold3 and Z Fold2.
How-to videos for Galaxy Z Fold6
'));
}
}
};
const isZoom = function () {
let zoomLevel = 100 / ((window.innerWidth / window.outerWidth) * 100);
if (zoomLevel > 1.7) {
document.documentElement.classList.add('browser-zoomed-175');
} else {
document.documentElement.classList.remove('browser-zoomed-175');
}
if (zoomLevel > 3) {
document.documentElement.classList.add('browser-zoomed-300');
} else {
document.documentElement.classList.remove('browser-zoomed-300');
}
if (zoomLevel > 4) {
document.documentElement.classList.add('browser-zoomed-400');
} else {
document.documentElement.classList.remove('browser-zoomed-400');
}
};
const getViewerUrl = function () {
let defaultParams = '',
viewerSection = document.querySelector('.js-colors-viewer'),
viewerButton = document.querySelector('.viewer-btn'),
viewerModel = utils.isLowNetwork() ? viewerButton.getAttribute('data-model-name') : viewerSection.getAttribute('data-model-name'),
viewerColor = utils.isLowNetwork() ? viewerButton.getAttribute('data-model-color') : viewerSection.getAttribute('data-model-color'),
viewerUrl = '//www.samsung.com/global/galaxy/3d-360/viewer/?';
defaultParams = '&gesture_guide=0';
defaultParams += '&bgcolor=transparent';
defaultParams += '&skin=colorlayer';
defaultParams += '&theme=roundlayer';
defaultParams += '&auto_rotation=0';
defaultParams += '&intro=1';
defaultParams += '&ruler=1';
defaultParams += '&breakpoint_criteria=outer';
defaultParams += '&breakpoint_desktop_width=1024';
defaultParams += '&x=180';
defaultParams += '&status_toggle=1';
defaultParams += '&intro_pose=3';
defaultParams += '&intro_pose_hold=1';
defaultParams += '&intro_pose_hold_limit=9999999';
defaultParams += '&controls=0';
defaultParams += '&use_zoom=0';
defaultParams += '&use_pan=0';
defaultParams += '&screen_mode=on';
// model_name
viewerUrl += 'model_name=' + viewerModel;
if (document.documentElement.classList.contains('color_yb') || (utils.getCookie('highContrastMode') != null && utils.getCookie('highContrastMode') == 1)) {
viewerUrl += '&highcontrast=1';
} else {
viewerUrl += '&highcontrast=0';
}
// RTL
utils.isRTL() && (viewerUrl += '&rtl=1');
viewerUrl += defaultParams;
viewerUrl += '#color=' + (viewerColor ? viewerColor : 'null');
return viewerUrl;
};
return {
addLoadStatusClass: addLoadStatusClass,
setResolution: setResolution,
clickSup: clickSup,
centeredFocus: centeredFocus,
setArBanner: setArBanner,
isZoom: isZoom,
getViewerUrl: getViewerUrl,
}
})();
flagship.features.setting = (function () {
const resize = window.flagship.common.resize,
common = window.flagship.features.common,
utils = window.flagship.common.utils,
agent = navigator.userAgent.toLowerCase(),
maxOs = agent.indexOf('mac os') > -1,
touchDevice = ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)),
isGlobal = document.documentElement.classList.contains('global');
let els = {};
const init = function () {
common.addLoadStatusClass();
common.setArBanner();
setElements();
bindEvents();
setResize();
if (!maxOs && !touchDevice) {
setScrollControl();
}
setImageLoader();
setVideoLoader();
setMp4VideoLoader();
setCenteredfocus();
setDisclaimerNumber();
setDisclaimer();
setVideoTheme();
setVideoBlind();
common.isZoom();
resize.add(common.isZoom);
};
const setElements = function () {
// video
els.videoWrap = document.querySelectorAll('.js-video-wrap');
};
const bindEvents = function () {
window.addEventListener('load', anchorPosition);
window.addEventListener('hashchange', anchorPosition);
};
const anchorPosition = function () {
if (window.location.hash != '') {
let hash = location.hash.split('#')[1],
hashSection = document.querySelector('#contents #' + hash),
hashTimeout = null;
clearTimeout(hashTimeout);
hashTimeout = setTimeout(function () {
let sectionTop = hashSection.getBoundingClientRect().top,
navHeight = utils.getNavHeight(),
hashScroll = window.pageYOffset + sectionTop - navHeight;
window.scrollTo(0, hashScroll);
}, 300);
}
};
const setResize = function () {
resize.init([{
resolution: 1920,
resolutionName: 'desktop',
eventFunction: ''
}, {
resolution: 1023,
resolutionName: 'tablet',
eventFunction: ''
}, {
resolution: 767,
resolutionName: 'mobile',
eventFunction: ''
}, {
resolution: 320,
resolutionName: 'mobileS',
eventFunction: ''
}], 200);
resize.add(common.setResolution);
};
const setScrollControl = function () {
window.scrollController = utils.scrollController();
scrollController.init({
speed: 120,
duration: 0.6
});
};
const setImageLoader = function () {
window.imageLoader = utils.mediaLoader({
lazyClass: '.js-img-src',
responsiveClass: '.js-res-img',
preset: isGlobal ? '' : '?imbypass=true',
loadOption: [{
resolution: 1920,
attribute: 'data-src-pc'
}, {
resolution: 1023,
attribute: 'data-src-tb'
}, {
resolution: 767,
attribute: 'data-src-mo'
}, {
resolution: 360,
attribute: 'data-src-mo-s'
}],
visiblePoint: 2
});
window.bgLoader = utils.mediaLoader({
type: 'bgImage',
lazyClass: '.js-bg-img',
loadOption: [{
resolution: 1920,
attribute: '',
bgOpts: ''
}],
visiblePoint: 2
});
};
const setVideoLoader = function () {
window.videoLoader = utils.mediaLoader({
type: 'video',
lazyClass: '.js-video-src',
responsiveClass: '.js-res-video',
preset: isGlobal ? '' : '?imbypass=true',
loadOption: [{
resolution: 1920,
attribute: 'data-video-src-pc'
}, {
resolution: 1023,
attribute: 'data-video-src-tb'
}, {
resolution: 767,
attribute: 'data-video-src-mo'
}, {
resolution: 360,
attribute: 'data-video-src-mo-s'
}],
visiblePoint: 1,
endCallback: function (video) {
if (!!video.videoHandler && !video.videoHandler.wrap.classList.contains('is-loaded')) {
video.videoHandler.wrap.classList.add('is-loaded');
}
}
});
};
const setMp4VideoLoader = function () {
window.mp4VideoLoader = utils.mediaLoader({
type: 'mp4Video',
lazyClass: '.js-mp4-video-src',
responsiveClass: '.js-res-video',
preset: isGlobal ? '' : '?imbypass=true',
loadOption: [{
resolution: 1920,
attribute: 'data-video-src-pc'
}, {
resolution: 1023,
attribute: 'data-video-src-tb'
}, {
resolution: 767,
attribute: 'data-video-src-mo'
}, {
resolution: 360,
attribute: 'data-video-src-mo-s'
}],
visiblePoint: 1,
endCallback: function (video) {
if (!!video.videoHandler && !video.videoHandler.wrap.classList.contains('is-loaded')) {
video.videoHandler.wrap.classList.add('is-loaded');
}
}
});
};
const setCenteredfocus = function () {
els.contents = document.querySelector('#contents');
els.allClickables = els.contents.querySelectorAll('a, button, input, select');
for (let i = 0; i < els.allClickables.length; i++) {
els.allClickables[i].addEventListener('focusin', common.centeredFocus);
}
};
const setDisclaimerNumber = function () {
const supTag = document.querySelectorAll('.click_sup'),
btmDicl = document.querySelectorAll('li.common-bottom-disclaimer__list-item');
let btmDiclArr = [];
for (let i = 0; i < btmDicl.length; i++) {
let dataSup = btmDicl[i].getAttribute('data-sup');
btmDiclArr.push(dataSup);
}
for (let j = 0; j < supTag.length; j++) {
let dataSupTag = supTag[j].getAttribute('data-sup-tag');
let supChildCount = supTag[j].parentElement.childElementCount;
if (btmDiclArr.indexOf(dataSupTag) > -1) {
supTag[j].innerText = btmDiclArr.indexOf(dataSupTag) + 1;
} else {
if (supChildCount == 1) {
supTag[j].parentElement.remove();
} else {
let supParent = supTag[j].parentElement.childNodes;
let supArr = [];
for (let supIndex = 0; supIndex < supParent.length; supIndex++) {
supArr.push(supParent[supIndex]);
}
let index = supArr.indexOf(supTag[j]);
if (index != 0 && index % 2 == 0) {
supParent[index].remove();
supParent[index - 1].remove();
} else {
if (index != supArr.length) supParent[index + 1].remove();
supParent[index].remove();
}
}
}
}
};
const setDisclaimer = function () {
els.supClicker = document.querySelectorAll('a.click_sup');
for (let i = 0; i < els.supClicker.length; i++) {
els.supClicker[i].addEventListener('click', common.clickSup);
}
};
const setVideoTheme = function () {
for (let i = 0; i < els.videoWrap.length; i++) {
let colorType = els.videoWrap[i].getAttribute('data-theme-type');
if (colorType === 'white') {
els.videoWrap[i].classList.add('common-video--white');
} else if (colorType === 'black') {
els.videoWrap[i].classList.add('common-video--black');
}
}
};
const setVideoBlind = function () {
for (let i = 0; i < els.videoWrap.length; i++) {
let controlBlind = els.videoWrap[i].querySelector('.js-video-control .blind');
controlBlind.innerHTML = (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) ? LOCAL_VARI.play : 'play';
}
};
return {
init: init
}
})();
flagship.features.setting.init();
(function () {
window.flagship.features.clickToVideo = (function () {
const utils = window.flagship.common.utils;
let els = {
clickToVideosWrap: [],
clickToVideo: [],
};
const init = function () {
els.clickToVideosWrap = document.querySelectorAll('.js-click-video');
if (els.clickToVideosWrap.length > 0) {
setProperty();
bindEvents();
}
};
const setProperty = function () {
for (let i = 0; i < els.clickToVideosWrap.length; i++) {
els.clickToVideosWrap[i].video = els.clickToVideosWrap[i].querySelector('video');
els.clickToVideosWrap[i].controller = els.clickToVideosWrap[i].querySelector('.js-video-control');
els.clickToVideosWrap[i].controller.video = els.clickToVideosWrap[i].video;
}
};
const bindEvents = function () {
eventList.setVideo();
eventHandler.click();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.clickToVideosWrap.length; i++) {
els.clickToVideosWrap[i].controller.addEventListener('click', eventList.clickVideoCta);
}
}
};
const eventList = {
setVideo: function () {
for (let i = 0; i < els.clickToVideosWrap.length; i++) {
els.clickToVideo[i] = utils.videoHandler({
wrap: els.clickToVideosWrap[i],
video: els.clickToVideosWrap[i].video,
controller: els.clickToVideosWrap[i].controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
setTagging.pause(this.controller);
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
}
});
}
},
clickVideoCta: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
e.currentTarget.video.play();
} else {
e.currentTarget.video.pause();
}
}
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.headline = (function () {
const utils = window.flagship.common.utils;
let els = {};
const init = function () {
setElements();
bindEvents();
};
const setElements = function() {
els.moveText = document.querySelectorAll('.js-move-text');
};
const bindEvents = function () {
eventList.setScene();
eventHandler.scroll();
eventList.scroll();
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
}
};
const eventList = {
scroll: function () {
for (let i = 0; i < els.moveText.length; i++) {
els.moveText[i].sceneObj.trackAnimation(function () {
if(this.progress >= 10) {
els.moveText[i].classList.add('is-moved');
if (this.trackElement.classList.contains('common-description')) this.trackElement.style.transitionDelay = "0.2s";
}
if(this.progress <= 0) {
els.moveText[i].classList.remove('is-moved');
}
});
}
},
setScene: function () {
for(let i = 0; i < els.moveText.length; i++) {
els.moveText[i].sceneObj = SCROLLER({
trackElement: els.moveText[i],
useFixed: false,
});
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.howtoPopup = (function () {
const utils = window.flagship.common.utils;
resize = window.flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
prevDevice = null,
currOpener = null;
let isDrag = false;
const init = function () {
els.layerPopup = document.querySelector('.js-howto-popup');
if (!!els.layerPopup) {
setElements();
setAttribute();
bindEvents();
eventList.setPopup();
}
};
const setElements = function () {
els.contents = document.querySelector('#contents');
els.openCtas = document.querySelectorAll('.js-howto-popup-opener');
// popup content
els.closeCta = document.querySelector('.js-howto-popup-close-cta');
els.ytIframe = els.layerPopup.querySelector('iframe');
els.ytDesc = els.layerPopup.querySelector('.js-howto-popup-youtube-desc');
els.dimmed = els.layerPopup.querySelector('.js-howto-popup-dimmed');
// swiper
els.swiperContainer = els.layerPopup.querySelector('.swiper-container');
els.buttonWrap = els.swiperContainer.querySelectorAll('.swiper-slide');
els.arrowWrap = els.swiperContainer.querySelector('.js-howto-popup-arrow-wrap');
els.prevArrow = els.swiperContainer.querySelector('.swiper-button-prev');
els.nextArrow = els.swiperContainer.querySelector('.swiper-button-next');
els.scrollbar = els.swiperContainer.querySelector('.js-howto-popup-scrollbar');
};
const setAttribute = function () {
for (let i = 0 ; i < els.buttonWrap.length; i++) {
els.buttonWrap[i].openerCta = els.openCtas[i];
els.buttonWrap[i].button = els.buttonWrap[i].querySelector('button');
els.buttonWrap[i].button.openerCta = els.buttonWrap[i].openerCta;
}
};
const bindEvents = function () {
eventHandler.buttonsClick();
eventHandler.arrowClick();
resize.add(eventList.resize);
};
const eventHandler = {
buttonsClick: function () {
for (let i = 0 ; i < els.buttonWrap.length; i++) {
els.buttonWrap[i].button.addEventListener('click', function () {
eventList.setYoutube(els.buttonWrap[i].button);
});
}
},
arrowClick: function () {
els.nextArrow.addEventListener('click', function (e) {
swiperEventList.clickArrow('next');
});
els.nextArrow.addEventListener('keydown', function (e) {
swiperEventList.clickArrow('next');
});
els.prevArrow.addEventListener('click', function (e) {
swiperEventList.clickArrow('prev');
});
els.prevArrow.addEventListener('keydown', function (e) {
swiperEventList.clickArrow('prev');
});
}
};
const eventList = {
setPopup: function () {
for (let i = 0; i < els.openCtas.length; i++) {
els.openCtas[i].index = i;
utils.layerPopup({
layerPopup: els.layerPopup,
layerPopupClass: '.js-howto-popup',
openerEvent: {
element: els.openCtas[i],
},
closeCtas: [els.closeCta],
dimmed: els.dimmed,
moveTarget: document.documentElement,
contents: els.contents,
show: {
start: function (target) {
let allVideos = document.querySelectorAll('video');
for (let i = 0; i < allVideos.length; i++) {
if (!allVideos[i].paused) allVideos[i].pause();
}
els.layerPopup.removeAttribute('aria-hidden');
els.layerPopup.removeAttribute('tabindex');
els.layerPopup.classList.add('is-init');
currOpener = target.openerCta;
eventList.itemImageLoader();
swiperEventList.activeCheck();
},
end: function (target) {
els.layerPopup.classList.add('is-open');
eventList.setYoutube(target);
}
},
hide: {
start: function () {
els.layerPopup.classList.remove('is-open');
},
end: function (target) {
if(utils.detector.isIosDevice) target.openerCta.style.display = '';
setTimeout(function () {
els.layerPopup.classList.remove('is-init');
}, 300);
eventList.clearYoutube();
}
}
});
}
},
setYoutube: function (target) {
let opener = target.openerCta,
ytSrc = 'htt' + 'ps://www.youtube.com/embed/' + opener.getAttribute('data-youtube-id') + '?wmode=opaque&rel=0&enablejsapi=1&version=3&autoplay=1',
ytTitle = opener.getAttribute('data-youtube-title'),
ytBlind = opener.querySelector('.blind').innerHTML;
els.ytIframe.setAttribute('src', ytSrc);
els.ytIframe.setAttribute('title', ytTitle);
els.ytDesc.innerHTML = ytBlind;
let oldActive = els.swiperContainer.querySelector('.swiper-slide.is-active');
if (!!oldActive) {
oldActive.classList.remove('is-active');
oldActive.button.removeAttribute('title');
}
els.buttonWrap[opener.index].classList.add('is-active');
accessibility.setTitle(els.buttonWrap[opener.index]);
},
clearYoutube: function () {
els.ytIframe.removeAttribute('src');
els.ytDesc.innerHTML = '';
},
resize: function (currRes) {
currDevice = currRes;
if (prevDevice != currDevice) {
if (els.layerPopup.classList.contains('is-open')) {
swiperEventList.activeCheck();
}
prevDevice = currDevice;
}
},
itemImageLoader: function () {
for (let i = 0; i < els.buttonWrap.length; i++) {
if (!els.buttonWrap[i].querySelector('img').classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.buttonWrap[i].querySelector('img')]);
}
}
}
};
const swiperEventList = {
set: function () {
if(els.swiperContainer.swiper == null) {
new Swiper(els.swiperContainer, {
init: false,
slidesPerView: 'auto',
scrollbar: {
el: els.scrollbar,
draggable: true
}
});
els.swiperContainer.swiper.on('init', swiperEventList.init);
els.swiperContainer.swiper.on('slideChange', swiperEventList.slideChange);
els.swiperContainer.swiper.on('transitionEnd', swiperEventList.slideTransition);
els.swiperContainer.swiper.on('scrollbarDragEnd', function () {
isDrag = true;
swiperEventList.slideTransition();
});
els.swiperContainer.swiper.init();
}
},
destroy: function () {
if(els.swiperContainer.swiper != null) {
els.swiperContainer.swiper.scrollbar.dragEl.style = '';
els.swiperContainer.swiper.scrollbar.destroy(true);
els.swiperContainer.swiper.navigation.destroy(true);
els.swiperContainer.swiper.destroy(true);
els.swiperContainer.swiper = null;
}
},
init: function () {
let self = this,
notification = self.el.querySelector('.swiper-notification');
if (!!notification) self.el.removeChild(notification);
setTimeout(function () {
accessibility.slide();
accessibility.arrow();
}, 500);
},
slideChange: function () {
accessibility.slide();
accessibility.arrow();
},
slideTransition: function () {
clearTimeout(els.arrowTimeout);
els.arrowTimeout = setTimeout(function () {
if (els.swiperContainer.swiper.isBeginning && !els.swiperContainer.swiper.isEnd) {
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
if (!isDrag) els.nextArrow.focus();
els.prevArrow.style.display = 'none';
} else if (!els.swiperContainer.swiper.isBeginning && els.swiperContainer.swiper.isEnd) {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
if (!isDrag) els.prevArrow.focus();
els.nextArrow.style.display = 'none';
} else {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
}
}, 200);
isDrag = false;
},
clickArrow: function (type) {
if (type == 'next') {
els.swiperContainer.swiper.slideNext();
} else {
els.swiperContainer.swiper.slidePrev();
}
},
activeCheck: function () {
let isSlide = ((currDevice.indexOf('mobile') > -1) && (els.buttonWrap.length >= 3)) ||
((currDevice.indexOf('desktop') > -1 || currDevice == 'tablet') && (els.buttonWrap.length >= 5));
if (isSlide) {
els.scrollbar.style.display = 'block';
els.arrowWrap.style.display = 'block';
swiperEventList.set();
if (currOpener != null) {
if (currOpener.index == 2) {
els.swiperContainer.swiper.slideTo(1, 0);
els.prevArrow.style.display = '';
els.nextArrow.style.display = '';
} else if (currOpener.index == 3) {
els.swiperContainer.swiper.slideTo(2, 0);
els.prevArrow.style.display = '';
els.nextArrow.style.display = 'none';
} else {
els.swiperContainer.swiper.slideTo(0, 0);
els.prevArrow.style.display = 'none';
els.nextArrow.style.display = '';
}
}
} else {
els.scrollbar.style.display = 'none';
els.arrowWrap.style.display = 'none';
swiperEventList.destroy();
}
}
};
const accessibility = {
setTitle: function(target){
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.button.setAttribute('title', LOCAL_VARI.selected);
} else {
target.button.setAttribute('title', 'Selected');
}
},
slide: function () {
for (let i = 0; i < els.swiperContainer.swiper.slides.length; i++) {
if (i != els.swiperContainer.swiper.activeIndex && i != (els.swiperContainer.swiper.activeIndex + 1)) {
utils.onAccessibility(els.swiperContainer.swiper.slides[i]);
} else {
utils.offAccessibility(els.swiperContainer.swiper.slides[i]);
}
}
},
arrow: function () {
if (els.swiperContainer.swiper.isBeginning && !els.swiperContainer.swiper.isEnd) {
utils.offAccessibility(els.nextArrow);
utils.onAccessibility(els.prevArrow);
} else if (!els.swiperContainer.swiper.isBeginning && els.swiperContainer.swiper.isEnd) {
utils.offAccessibility(els.prevArrow);
utils.onAccessibility(els.nextArrow);
} else {
utils.offAccessibility(els.nextArrow);
utils.offAccessibility(els.prevArrow);
}
}
};
return {
init: init,
}
})();
})();
(function () {
window.flagship = window.flagship || {};
window.flagship.features = window.flagship.features || {};
window.flagship.features.oneColumnCarousel = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
let els = {};
let prevDevice;
let currDevice = resize.checkResolution();
let dimmedClass = 'is-dimmed';
const isRtl = document.documentElement.classList.contains('rtl');
const init = function () {
els.section = document.querySelectorAll('.js-one-column-carousel');
if (!!els.section) {
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiperContainer = els.section[i];
els.section[i].swiperSlides = els.section[i].swiperContainer.querySelectorAll('.swiper-slide');
els.section[i].prevArrow = els.section[i].parentElement.querySelector('.swiper-button-prev');
els.section[i].nextArrow = els.section[i].parentElement.querySelector('.swiper-button-next');
els.section[i].scrollbar = els.section[i].parentElement.querySelector('.swiper-scrollbar');
}
};
const setProperty = function() {
for (let i = 0; i < els.section.length; i++) {
let isSlideLength = els.section[i].swiperSlides.length;
for (let j = 0; j < isSlideLength; j++) {
els.section[i].swiperSlides[j].video = els.section[i].swiperSlides[j].querySelector('.common-video__video');
}
}
}
const bindEvents = function () {
eventList.load();
eventHandler.keydown();
eventHandler.click();
resize.add(eventList.resize);
};
const eventHandler = {
keydown: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
},
click: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
}
};
const eventList = {
load: function() {
swiperEvents.set();
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiper.init();
if (els.section[i].swiperSlides.length >= 2) {
els.section[i].swiper.init();
}
}
},
resize: function() {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
};
},
responsive: function() {
for (let i = 0; i < els.section.length; i++) {
eventList.resetDimmedSlide(els.section[i].swiper);
els.section[i].swiper.slideTo(0, false);
if (eventList.getCarouselSizeInfo(els.section[i].swiper).viewLength > 0 && currDevice != 'mobile') eventList.initDimmedSlides(els.section[i].swiper);
}
},
setMedia: function(swiper, index) {
let isIndex = index + 1 > swiper.slides.length -1 ? swiper.slides.length -1 : index + 1;
let videoLength = swiper.el.querySelectorAll('video').length - 1;
let imageLength = swiper.el.querySelectorAll('img').length - 1;
let videoloadComplateLength = swiper.el.querySelectorAll('.is-video-load-complete').length - 1;
let imageloadComplateLength = swiper.el.querySelectorAll('.is-img-load-complete').length - 1;
let nextVideo = swiper.slides[isIndex].querySelector('video');
let nextImage = swiper.slides[isIndex].querySelector('img');
if (videoloadComplateLength != videoLength) {
if (!!nextVideo) {
videoLoader.setResponsiveMedia([nextVideo]);
}
}
if (imageloadComplateLength != imageLength) {
if (!!nextImage) {
imageLoader.setResponsiveMedia([nextImage]);
}
}
},
resetVideo: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let isVideo = swiper.slides[i].video;
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
isVideo.currentTime = 0;
};
};
},
getCarouselSizeInfo: function(swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[isRtl ? 3 : 1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin)/slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
initDimmedSlides: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if ((swiper.activeIndex + eventList.getCarouselSizeInfo(swiper).viewLength) <= i) {
swiper.slides[i].classList.add(dimmedClass);
}
}
},
setDimmedSlide: function(swiper) {
if (currDevice != 'mobile') {
for (let i = 0; i < swiper.slides.length; i++) {
let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i;
if (dimmedSlide) {
swiper.slides[i].classList.add(dimmedClass);
} else {
swiper.slides[i].classList.remove(dimmedClass);
}
}
}
},
resetDimmedSlide: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
swiper.slides[i].classList.remove(dimmedClass);
}
},
arrowFocus: function(isFocusArrow, nextFocusArrow) {
setTimeout(() => {
if (isFocusArrow.classList.contains('swiper-button-disabled')) nextFocusArrow.focus();
}, 300);
},
}
const swiperEvents = {
set: function () {
for (let i = 0; i < els.section.length; i++) {
if (els.section[i].swiper == null) {
new Swiper(els.section[i].swiperContainer, {
init: false,
slidesPerView: 'auto',
navigation: {
nextEl: els.section[i].nextArrow,
prevEl: els.section[i].prevArrow,
},
scrollbar: {
el: els.section[i].scrollbar,
draggable: true
},
});
els.section[i].swiper.on('init', swiperEvents.init);
els.section[i].swiper.on('slideChange', swiperEvents.slideChange);
els.section[i].swiper.on('transitionEnd', swiperEvents.transitionEnd);
}
}
},
init: function () {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
accessibility.slide(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.initDimmedSlides(this);
},
slideChange: function () {
accessibility.slide(this);
eventList.resetVideo(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.setDimmedSlide(this);
if (this.realIndex > 0) eventList.setMedia(this, this.realIndex);
},
transitionEnd: function() {
if (this.slides.length < 3 && currDevice == 'mobile') return;
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length -1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize ||
carouselInfo.maxMoveSize <= carouselInfo.isMoveSize ||
(carouselInfo.isMoveSize > carouselInfo.lastBeforeSize && carouselInfo.maxMoveSize > carouselInfo.isMoveSize)) {
eventList.resetVideo(this);
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize >= carouselInfo.isMoveSize) {
eventList.resetVideo(this);
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
}, 0);
},
destroy: function (swiper) {
if (swiper != null) {
swiper.navigation.destroy(true);
swiper.destroy(true);
swiper = null;
}
},
};
const accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init,
}
})();
})();
(function () {
window.flagship.features.scrollVideo = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {
scrollVideoWraps: [],
scrollVideo: [],
scene: [],
},
currDevice = resize.checkResolution();
const init = function () {
els.scrollVideoWraps = document.querySelectorAll('div:not(.js-interactive-intro-video)>.js-scroll-video');
if (els.scrollVideoWraps.length > 0) {
setProperty();
eventList.setVideo();
eventList.setScene();
bindEvents();
}
};
const setProperty = function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scrollVideoWraps[i].video = els.scrollVideoWraps[i].querySelector('video');
els.scrollVideoWraps[i].controller = els.scrollVideoWraps[i].querySelector('.js-video-control');
els.scrollVideoWraps[i].controller.video = els.scrollVideoWraps[i].video;
els.scrollVideoWraps[i].startPoint = !!els.scrollVideoWraps[i].getAttribute('data-start-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-start-point')) : undefined;
els.scrollVideoWraps[i].reversePoint = !!els.scrollVideoWraps[i].getAttribute('data-reverse-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-reverse-point')) : undefined;
els.scrollVideoWraps[i].moStartPoint = !!els.scrollVideoWraps[i].getAttribute('data-mo-start-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-mo-start-point')) : undefined;
els.scrollVideoWraps[i].moReversePoint = !!els.scrollVideoWraps[i].getAttribute('data-mo-reverse-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-mo-reverse-point')) : undefined;
}
};
const bindEvents = function () {
eventHandler.scroll();
eventList.scroll();
eventHandler.click();
resize.add(eventList.resize);
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
},
click: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scrollVideoWraps[i].controller.addEventListener('click', eventList.clickVideoCta);
}
}
};
const eventList = {
setVideo: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scrollVideo[i] = utils.videoHandler({
playType: 'scrollPlay',
startPoint: (currDevice.indexOf('mobile') > -1) ? els.scrollVideoWraps[i].moStartPoint : els.scrollVideoWraps[i].startPoint,
reversePoint: (currDevice.indexOf('mobile') > -1) ? els.scrollVideoWraps[i].moReversePoint : els.scrollVideoWraps[i].reversePoint,
wrap: els.scrollVideoWraps[i],
video: els.scrollVideoWraps[i].video,
controller: els.scrollVideoWraps[i].controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
if (!!this.video.videoWrap && this.video.videoWrap.classList.contains('js-interactive-intro-video')) {
this.video.tooltip.classList.remove('is-visible');
}
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
setTagging.pause(this.controller);
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
}
});
}
},
setScene: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scene[i] = SCROLLER({
trackElement: els.scrollVideoWraps[i].video,
useFixed: false,
resize: utils.detector.isTouchDevice ? false : true
});
}
},
scroll: function () {
for (let i = 0; i < els.scrollVideoWraps.length; i++) {
els.scene[i].trackAnimation(function () {
els.scrollVideo[i].scrollActive(this.progress);
});
}
},
resize: function (currRes) {
currDevice = currRes;
},
clickVideoCta: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
e.currentTarget.video.play();
} else {
e.currentTarget.video.pause();
}
}
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.threeColumnCarousel = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
swiperObj,
prevDevice = null,
currDevice = resize.checkResolution();
dimmedClass = 'is-dimmed';
const isRtl = document.documentElement.classList.contains('rtl');
const init = function () {
els.section = document.querySelectorAll('.js-three-column-carousel');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiperContainer = els.section[i];
els.section[i].swiperSlide = els.section[i].querySelectorAll('.swiper-slide');
els.section[i].nextArrow = els.section[i].parentElement.querySelector('.swiper-button-next');
els.section[i].prevArrow = els.section[i].parentElement.querySelector('.swiper-button-prev');
els.section[i].scrollbar = els.section[i].parentElement.querySelector('.swiper-scrollbar');
};
};
const bindEvents = function () {
eventList.load();
eventHandler.keydown();
eventHandler.click();
resize.add(eventList.resize);
};
const eventHandler = {
swiper: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].swiper.on('init', swiperEvents.init);
els.section[i].swiper.on('slideChange', swiperEvents.slideChange);
els.section[i].swiper.on('transitionEnd', swiperEvents.transitionEnd);
};
},
keydown: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('keydown', function(e) {
if (e.keyCode == 13) e.preventDefault();
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
},
click: function() {
for (let i = 0; i < els.section.length; i++) {
els.section[i].prevArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].nextArrow);
});
els.section[i].nextArrow.addEventListener('click', function(e) {
eventList.arrowFocus(this, els.section[i].prevArrow);
});
}
}
};
const eventList = {
load: function() {
for (let i = 0; i < els.section.length; i++) {
let desktopStatus = (currDevice == 'desktop' || currDevice == 'tablet') && els.section[i].swiperSlide.length > 3;
let mobileStatus = (currDevice == 'mobile' || currDevice == 'mobileS') && els.section[i].swiperSlide.length > 1;
if (desktopStatus || mobileStatus) {
swiperEvents.set();
eventHandler.swiper();
els.section[i].swiper.init();
}
}
},
resize: function() {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
};
},
responsive: function() {
for (let i = 0; i < els.section.length; i++) {
let isSection = els.section[i];
let desktopStatus = (currDevice == 'desktop' || currDevice == 'tablet') && isSection.swiperSlide.length > 3;
let mobileStatus = (currDevice == 'mobile' || currDevice == 'mobileS') && isSection.swiperSlide.length > 1;
eventList.resetDimmedSlide(isSection.swiper);
accessibility.reset(isSection.swiper);
if (desktopStatus || mobileStatus) {
if (isSection.swiper.initialized) swiperEvents.destroy(isSection.swiper);
swiperEvents.set();
eventHandler.swiper();
isSection.swiper.init();
if (desktopStatus) eventList.initDimmedSlides(isSection.swiper);
if (mobileStatus) accessibility.slide(isSection.swiper);
} else if ((!desktopStatus || !mobileStatus) && isSection.swiper != undefined) {
if (isSection.swiper.initialized) swiperEvents.destroy(isSection.swiper);
}
};
},
getCarouselSizeInfo: function(swiperObj) {
let slideLength = swiperObj.slides.length;
let slideWidth = swiperObj.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiperObj.slides[0]).margin.split(' ')[isRtl ? 3 : 1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiperObj.wrapperEl.clientWidth;
let viewWidth = swiperObj.wrapperEl.clientWidth;
let viewLength = Math.round((viewWidth + slideMargin)/slideSize);
let lastBeforeSize =
currDevice.indexOf('mobile') == -1 && slideLength == 3 ? 0 :
currDevice.indexOf('mobile') > -1 && slideLength == 2 ? 0 :
(slideWidth + slideMargin) * ((slideLength - viewLength) - 1);
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiperObj.wrapperEl).transform.split(',')[4]));
return {
slideLength: slideLength,
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
initDimmedSlides: function(swiperObj) {
for (let i = 0; i < swiperObj.slides.length; i++) {
let isSlide = swiperObj.slides[i];
if ((swiperObj.activeIndex + eventList.getCarouselSizeInfo(swiperObj).viewLength) <= i) {
isSlide.classList.add(dimmedClass);
utils.onAccessibility(isSlide)
}
}
},
setDimmedSlide: function(swiperObj) {
for (let i = 0; i < swiperObj.slides.length; i++) {
let isSlide = swiperObj.slides[i];
let dimmedSlide = (swiperObj.activeIndex) > i || (swiperObj.activeIndex + (eventList.getCarouselSizeInfo(swiperObj).viewLength - 1)) < i;
if (dimmedSlide) {
isSlide.classList.add(dimmedClass);
accessibility.slide(swiperObj);
} else {
isSlide.classList.remove(dimmedClass);
accessibility.slide(swiperObj);
}
}
},
resetDimmedSlide: function(swiperObj) {
if (!!!swiperObj) return;
for (let i = 0; i < swiperObj.slides.length; i++) {
swiperObj.slides[i].classList.remove(dimmedClass);
}
},
tagging: function () {
const values = {
'data-omni-type': 'microsite_pcontentinter',
'data-omni': 'galaxy-z-fold6:highlights:indicator:sldr-dots:',
'ga-ca': 'indication',
'ga-ac': 'carousel',
'ga-la': 'galaxy-z-fold6:highlights:indicator:sldr-dots:',
};
},
arrowFocus: function(isFocusArrow, nextFocusArrow) {
setTimeout(() => {
if (isFocusArrow.classList.contains('swiper-button-disabled')) nextFocusArrow.focus();
}, 300);
},
};
const swiperEvents = {
set: function () {
for (let i = 0; i < els.section.length; i++) {
if (els.section[i].swiper == null) {
new Swiper(els.section[i].swiperContainer, {
init: false,
slidesPerView: 'auto',
speed: 200,
navigation: {
nextEl: els.section[i].nextArrow,
prevEl: els.section[i].prevArrow,
},
scrollbar: {
el: els.section[i].scrollbar,
draggable: true
}
});
}
}
},
init: function () {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
eventList.tagging();
eventList.initDimmedSlides(this);
accessibility.slide(this);
},
transitionEnd: function() {
let carouselInfo = eventList.getCarouselSizeInfo(this);
setTimeout(() => {
let lastIndex = this.slides.length -1 ;
let lastSlide = this.slides[lastIndex];
let lsatDimmedLength = (carouselInfo.slideLength - 1) - carouselInfo.viewLength;
let lastBeforeSlide = this.slides[lsatDimmedLength];
if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize && carouselInfo.maxMoveSize >= carouselInfo.isMoveSize) {
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
} else {
for (let i = 0; i < this.slides.length; i++) {
if (i == lastIndex || i == lastIndex - 1 || i == lastIndex - 2) {
utils.offAccessibility(this.slides[i]);
} else {
utils.onAccessibility(this.slides[i]);
}
}
}
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize >= carouselInfo.isMoveSize) {
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
} else {
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
utils.offAccessibility(this.slides[lastIndex - 2]);
}
}
}, 0);
},
slideChange: function () {
eventList.setDimmedSlide(this);
accessibility.slide(this);
},
destroy: function (swiperObj) {
swiperObj.navigation.destroy(true);
swiperObj.destroy(true);
swiperObj = null;
},
};
const accessibility = {
slide: function (swiper) {
if (currDevice.indexOf('mobile') > -1) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
} else {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex && i != (swiper.activeIndex + 1) && i != (swiper.activeIndex + 2)) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
if (!!swiper.slides[i + 1]) utils.offAccessibility(swiper.slides[i + 1]);
if (!!swiper.slides[i + 2]) utils.offAccessibility(swiper.slides[i + 2]);
}
}
}
},
reset: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
utils.offAccessibility(swiper.slides[i]);
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.aiOverview = (function () {
const utils = window.flagship.common.utils,
resize = flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.features-ai-overview');
if (!!els.section) {
setElements();
eventList.setScene();
bindEvents();
}
};
const setElements = function () {
// title
els.overviewTextWrap = els.section.querySelector('.js-overview-text-wrap');
// logoVideo
els.logoWrap = els.section.querySelector('.js-logo-wrap');
els.logoVideoWrap = els.section.querySelector('.js-logo-video-wrap');
els.overviewVideo = els.logoVideoWrap.querySelector('video');
};
const bindEvents = function () {
eventHandler.scroll();
eventList.scroll();
resize.add(eventHandler.resize);
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
},
resize: function (currRes) {
currDevice = currRes;
}
};
const eventList = {
setScene: function () {
els.scene = SCROLLER({
trackElement: els.overviewTextWrap,
useFixed: false,
resize: utils.detector.isTouchDevice ? false : true
});
},
scroll: function(){
els.scene.trackAnimation(function(){
//텍스트 페이드인
if (this.wheelDirection == 'down' && this.progress <= 100 && this.progress > 0) {
if (!els.section.classList.contains('is-active')) {
els.section.classList.add('is-active');
if (els.overviewVideo.paused) {
els.overviewVideo.play();
}
}
} else if (this.wheelDirection == 'up' && this.progress == 0) {
if (els.section.classList.contains('is-active')) {
els.section.classList.remove('is-active');
if (!els.overviewVideo.paused) {
els.overviewVideo.pause();
els.overviewVideo.currentTime = 0;
}
}
}
});
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.cameraSpec = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.features-camera-spec');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.listInner = els.section.querySelectorAll('.js-camera-spec-inner');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.load();
eventList.showCollout();
eventHandler.scroll();
};
const eventHandler = {
scroll: function() {
window.addEventListener('scroll', eventList.showCollout);
}
}
const eventList = {
load: function() {
eventList.setSecene();
},
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
prevDevice = currDevice;
}
},
setSecene: function () {
for (let i = 0; i < els.listInner.length; i++) {
SCROLLER({
trackElement: els.listInner[i],
useFixed: false
});
}
},
showCollout: function() {
for (let i = 0; i < els.listInner.length; i++) {
els.listInner[i].scroller.trackAnimation(function() {
if (this.progress > 0) {
this.trackElement.classList.add('is-active');
}
if (i == 0) {
if (this.progress <= 0) {
for (let j = 0; j < els.listInner.length; j++) {
els.listInner[j].classList.remove('is-active');
}
}
}
});
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.colorchip = function (colorchipWrap) {
const utils = window.flagship.common.utils,
common = window.flagship.features.common,
resize = window.flagship.common.resize;
let els = {},
activeClass = 'is-active',
currentDevice = resize.checkResolution(),
prevDevice = null,
currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7;
const init = function () {
els.section = document.querySelector('.js-colors');
els.popup = document.querySelector('.js-viewer');
if (colorchipWrap.type == 'popup') {
colorchipWrap.contentWrap = els.popup;
} else {
colorchipWrap.contentWrap = els.section;
}
setElements();
setProperty();
bindEvents();
};
const setElements = function () {
// panel
els.panelWrap = els.section.querySelector('.js-panel-wrap');
els.panelItems = els.panelWrap.querySelectorAll('.js-panel-item');
// colorchip
els.swiperContainer = colorchipWrap.querySelector('.js-colorchip-container');
els.colorchipButtons = colorchipWrap.querySelectorAll('.js-colorchip-button');
els.swiperArrowWrap = colorchipWrap.querySelector('.js-arrow-wrap');
els.swiperNextArrow = colorchipWrap.querySelector('.js-colorchip-next');
els.swiperPrevArrow = colorchipWrap.querySelector('.js-colorchip-prev');
els.colorchipNames = colorchipWrap.querySelectorAll('.js-colorchip-name');
// 360 Popup Btn
els.viewerBtn = els.section.querySelector('.viewer-btn');
// viewer
els.viewerSection = els.section.querySelector('.js-colors-viewer');
els.viewerIframe = colorchipWrap.contentWrap.querySelector('iframe');
// exclusive badge
els.exclusive = colorchipWrap.contentWrap.querySelector('.js-exclusive-badge');
};
const setProperty = function () {
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].index = i;
}
};
const bindEvents = function () {
eventList.checkColorchipSwiper();
if (colorchipWrap.type != 'popup') eventList.setColors(0);
eventHandler.click();
eventHandler.keydown();
resize.add(eventList.resize);
eventHandler.scroll();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].addEventListener('click', eventList.clickColorchip);
}
els.viewerBtn.addEventListener('click', function () {
let activeIndex = this.getAttribute('data-target-index');
eventList.setColorchip(activeIndex);
eventList.setColorName(activeIndex);
eventList.setExclusive(activeIndex);
});
els.swiperNextArrow.addEventListener('click', accessibility.clickArrow);
els.swiperPrevArrow.addEventListener('click', accessibility.clickArrow);
},
keydown: function () {
els.swiperNextArrow.addEventListener('keydown', accessibility.clickArrow);
els.swiperPrevArrow.addEventListener('keydown', accessibility.clickArrow);
},
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
}
};
const eventList = {
scroll: function () {
let winOffsetBottom = window.pageYOffset + window.innerHeight,
kv = document.querySelector('.features-kv'),
kvHeight = kv.getBoundingClientRect().height + utils.getNavHeight();
if (winOffsetBottom >= kvHeight) {
// bg load
colorchipWrap.bgImgs = colorchipWrap.querySelectorAll('.js-bg-img');
if(!!colorchipWrap.bgImgs) bgLoader.setResponsiveMedia(colorchipWrap.bgImgs);
eventList.setViewer();
window.removeEventListener('scroll', eventList.scroll);
}
},
setViewer: function () {
if (!utils.isLowNetwork()) {
setTimeout(function () {
els.viewerIframe.style.position = 'fixed';
els.viewerIframe.style.top = 0;
els.viewerIframe.style.opacity = 0;
setTimeout(function () {
els.viewerIframe.style.position = '';
els.viewerIframe.style.top = '';
els.viewerIframe.style.opacity = '';
}, 300);
}, 1000);
// set
eventList.setViewerUrl(els.colorchipButtons[0].getAttribute('data-colors'));
}
},
checkColorchipSwiper: function () {
let colorchipSwiperLength = currentDevice.indexOf('mobile') > -1 ? 6 : 8;
if (els.colorchipButtons.length >= colorchipSwiperLength) {
if (els.swiperArrowWrap.style.display == 'none') {
els.swiperArrowWrap.style.display = '';
}
swiperEvents.set();
} else {
if (els.swiperArrowWrap.style.display != 'none') {
els.swiperArrowWrap.style.display = 'none';
}
if (els.colorchipSwiper != null) {
swiperEvents.destroy();
}
}
},
setColors: function (activeIndex) {
eventList.setPopupBtn(els.colorchipButtons[activeIndex]);
eventList.setColorchip(activeIndex);
eventList.setPanel(activeIndex);
eventList.setColorName(activeIndex);
eventList.setExclusive(activeIndex);
},
resize: function (currRes) {
currentDevice = currRes;
if (currentDevice !== prevDevice) {
eventList.checkColorchipSwiper();
currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7;
prevDevice = currentDevice;
}
},
clickColorchip: function () {
let targetColor = this;
eventList.setColors(targetColor.index);
eventList.setViewerUrl(targetColor.getAttribute('data-colors'));
},
setColorchip: function (activeIndex) {
let targetcolorchipButton = els.colorchipButtons[activeIndex];
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].classList.remove(activeClass);
if (!!colorchipWrap.isStatic) {
els.colorchipButtons[i].setAttribute('aria-selected', false);
} else {
els.colorchipButtons[i].removeAttribute('title');
}
}
if (!targetcolorchipButton.classList.contains(activeClass)) {
targetcolorchipButton.classList.add(activeClass);
if (!!colorchipWrap.isStatic) {
targetcolorchipButton.setAttribute('aria-selected', true);
} else {
accessibility.selected(targetcolorchipButton);
}
}
},
setPanel: function (activeIndex) {
if (!colorchipWrap.isStatic) return;
for (let i = 0; i < els.panelItems.length; i++) {
if (els.panelItems[i].classList.contains(activeClass)) {
els.panelItems[i].classList.remove(activeClass);
els.panelItems[i].setAttribute('aria-hidden', true);
}
}
if (!els.panelItems[activeIndex].classList.contains(activeClass)) {
els.panelItems[activeIndex].classList.add(activeClass);
els.panelItems[activeIndex].setAttribute('aria-hidden', false);
}
},
setColorName: function (activeIndex) {
for (let i = 0; i < els.colorchipNames.length; i++) {
if (els.colorchipNames[i].classList.contains(activeClass)) {
els.colorchipNames[i].classList.remove(activeClass);
els.colorchipNames[i].setAttribute('aria-hidden', true);
}
}
if (!els.colorchipNames[activeIndex].classList.contains(activeClass)) {
els.colorchipNames[activeIndex].classList.add(activeClass);
els.colorchipNames[activeIndex].setAttribute('aria-hidden', false);
}
},
setViewerUrl: function (colorName) {
if (!!colorchipWrap.isStatic) return;
if (colorchipWrap.type == 'popup') {
let viewerSrc = els.viewerIframe.getAttribute('src').split('#color=')[0];
els.viewerIframe.setAttribute('src', `${viewerSrc}#color=${colorName}`);
} else {
els.viewerSection.setAttribute('data-model-color', colorName);
els.viewerIframe.setAttribute('src', common.getViewerUrl());
}
},
setPopupBtn: function (target) {
if (colorchipWrap.type == 'popup') return;
els.viewerBtn.setAttribute('data-target-index', target.index);
els.viewerBtn.setAttribute('data-model-color', target.getAttribute('aria-controls'));
},
setExclusive: function (activeIndex) {
if (!!els.colorchipButtons[activeIndex].getAttribute('data-exclusive')) {
els.exclusive.classList.add('is-active');
} else {
els.exclusive.classList.remove('is-active');
}
}
};
const swiperEvents = {
set: function () {
if (els.colorchipSwiper == null) {
els.colorchipSwiper = new Swiper(els.swiperContainer, {
init: false,
navigation: {
nextEl: els.swiperNextArrow,
prevEl: els.swiperPrevArrow,
},
slidesPerView: currentSlidesPerView,
speed: 300,
});
els.colorchipSwiper.on('init', swiperEvents.init);
els.colorchipSwiper.on('slideChange', swiperEvents.slideChange);
els.colorchipSwiper.init();
}
},
init: function () {
let notification = this.el.querySelector('.swiper-notification');
if (!!notification) this.el.removeChild(notification);
els.swiperPrevArrow.removeAttribute('aria-label');
els.swiperPrevArrow.removeAttribute('role');
els.swiperNextArrow.removeAttribute('aria-label');
els.swiperNextArrow.removeAttribute('role');
accessibility.colorchip(els.colorchipSwiper);
},
slideChange: function () {
accessibility.colorchip(els.colorchipSwiper);
},
destroy: function () {
els.colorchipSwiper.destroy(true);
els.colorchipSwiper = null;
},
};
const accessibility = {
clickArrow: function (e) {
let arrowTimeout = null,
arrowStyleTimeout = null;
if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') {
e.preventDefault();
if (els.colorchipSwiper.isBeginning && !els.colorchipSwiper.isEnd) {
els.swiperPrevArrow.style.setProperty('display', 'block');
clearTimeout(arrowTimeout);
arrowTimeout = setTimeout(function () {
els.swiperNextArrow.focus();
}, 300);
clearTimeout(arrowStyleTimeout);
arrowStyleTimeout = setTimeout(function () {
els.swiperPrevArrow.style.display = '';
}, 400);
} else if (!els.colorchipSwiper.isBeginning && els.colorchipSwiper.isEnd) {
els.swiperNextArrow.style.setProperty('display', 'block');
clearTimeout(arrowTimeout);
arrowTimeout = setTimeout(function () {
els.swiperPrevArrow.focus();
}, 300);
clearTimeout(arrowStyleTimeout);
arrowStyleTimeout = setTimeout(function () {
els.swiperNextArrow.style.display = '';
}, 400);
}
}
},
colorchip: function (swiperObj) {
let isNotActivedColorchips = null;
for (let i = 0; i < swiperObj.slides.length; i++) {
if (currentDevice.indexOf('mobile') > -1) {
isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 4) || (swiperObj.activeIndex > i);
} else {
isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 6) || (swiperObj.activeIndex > i);
}
if (isNotActivedColorchips) {
utils.onAccessibility(swiperObj.slides[i]);
setTimeout(function () {
utils.onAccessibility(swiperObj.slides[i]);
}, 300);
} else {
utils.offAccessibility(swiperObj.slides[i]);
setTimeout(function () {
utils.offAccessibility(swiperObj.slides[i]);
}, 300);
}
}
},
selected: function (target) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
};
return init(colorchipWrap);
};
let colorchips = document.querySelectorAll('.js-colorchip');
for (let i = 0; i < colorchips.length; i++) {
colorchips[i].type = colorchips[i].parentElement.classList.contains('js-popup-colorchip') ? 'popup' : 'colors';
colorchips[i].isStatic = colorchips[i].parentElement.getAttribute('data-static');
flagship.features.colorchip(colorchips[i]);
}
})();
;
(function () {
window.flagship.features.faq = (function () {
const resize = window.flagship.common.resize,
utils = window.flagship.common.utils;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.js-faq');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.faqList = els.section.querySelector('.js-faq-list');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.setAccordion();
};
const eventList = {
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
eventList.responsive();
prevDevice = currDevice;
}
},
responsive: function () {
let isOpenedItems = els.faqList.querySelectorAll('.js-faq-item.is-open');
if (isOpenedItems.length > 0) {
for (let i = 0; i < isOpenedItems.length; i++) {
let isOpenedItemContent = isOpenedItems[i].querySelector('.js-faq-answer');
let clientHeight = isOpenedItemContent.children[0].clientHeight;
isOpenedItemContent.style.height = `${clientHeight}px`;
}
}
},
setAccordion: function () {
els.accordion = new window.flagship.common.accordion({
wrap: els.faqList,
classList: {
item: 'js-faq-item',
button: 'js-faq-open',
contents: 'js-faq-answer',
activeClass: 'is-open'
},
open: {
start: function (target) {
let targetInnerCta = target.querySelector('.js-featue-cta');
if (targetInnerCta) targetInnerCta.addEventListener('click', accessibility.moveFocus);
}
}
});
els.accordion.init();
},
};
const accessibility = {
moveFocus: function (e) {
if (this.getAttribute('href').indexOf('#') > -1) {
e.preventDefault();
let sectionId = this.getAttribute('href'),
section = document.querySelector(`${sectionId}`),
sectionTop = section.getBoundingClientRect().top,
movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(),
clickable = section.querySelectorAll('a, button'),
title = section.querySelector('h2') || section.querySelector('h3');
if (!!title) {
let _focusOut = function () {
title.removeAttribute('tabindex');
title.removeEventListener('focusout', _focusOut);
};
title.addEventListener('focusout', _focusOut);
title.setAttribute('tabindex', 0);
title.focus();
} else {
clickable[0].focus();
}
window.scrollTo(0, movePosition);
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship = window.flagship || {};
window.flagship.features = window.flagship.features || {};
window.flagship.features.highlightsZone = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
let els = {};
let prevDevice;
let swiperObj = {};
let pointerOffset = {};
let currDevice = resize.checkResolution();
let dimmedClass = 'is-dimmed';
let ctaPlayStatus = true;
let scrollProgress = null;
let lowNetwork = document.documentElement.classList.contains('low_network');
let isBgLoaded = false;
const init = function () {
els.section = document.querySelector('.features-highlights');
if (!!els.section) {
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
els.mainContainer = els.section.querySelector('.js-highlights-main-container');
els.mainSwiperSlides = els.mainContainer.querySelectorAll('.swiper-slide');
els.videoWrap = els.mainContainer.querySelectorAll('.js-video-wrap');
els.prevArrow = els.mainContainer.parentElement.querySelector('.swiper-button-prev');
els.nextArrow = els.mainContainer.parentElement.querySelector('.swiper-button-next');
els.scrollbar = els.section.querySelector('.js-highlights-scrollbar');
els.bgContainer = els.section.querySelector('.js-highlights-bg-container');
els.bgSwiperSlides = els.bgContainer.querySelectorAll('.swiper-slide');
};
const setProperty = function () {
els.mainContainer.autoPlay = true;
els.videoWrap = els.mainContainer.querySelectorAll('.js-video-wrap');
for (let i = 0; i < els.videoWrap.length; i++) {
els.videoWrap[i].video = els.videoWrap[i].querySelector('.common-video__video');
els.videoWrap[i].coverImageHighband = els.videoWrap[i].querySelector('.common-video__cover-image--highband');
els.videoWrap[i].coverImageLowband = els.videoWrap[i].querySelector('.common-video__cover-image--lowband');
els.videoWrap[i].controller = els.videoWrap[i].querySelector('.js-video-control');
els.videoWrap[i].controller.video = els.videoWrap[i].video;
els.videoWrap[i].progressBar = els.videoWrap[i].querySelector('.common-video__control-progress-bar');
els.bgSwiperSlides[i].image = els.bgSwiperSlides[i].querySelector('img');
}
};
const bindEvents = function () {
eventList.load();
eventHandler.click();
eventHandler.scroll();
eventHandler.flickSwiper();
resize.add(eventList.resize);
};
const eventHandler = {
flickSwiper: function () {
els.mainContainer.addEventListener('touchstart', function (e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.touches[0].clientX;
els.mainContainer.addEventListener('touchmove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('touchend', function () {
if (pointerOffset.start == null) return;
els.mainContainer.autoPlay = false;
els.mainContainer.removeEventListener('touchmove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mousedown', function (e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.offsetX;
els.mainContainer.addEventListener('mousemove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mouseup', function () {
els.mainContainer.autoPlay = false;
els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mouseleave', function () {
if (pointerOffset.start == null) return;
pointerOffset.start = null;
pointerOffset.current = null;
els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
},
click: function () {
for (let i = 0; i < els.videoWrap.length; i++) {
els.videoWrap[i].controller.addEventListener('click', eventList.clickVideoCta);
}
for (let i = 0; i < els.videoWrap.length; i++) {
els.videoWrap[i].controller.addEventListener('click', eventList.stopAutoPlay);
}
els.nextArrow.addEventListener('click', function (e) {
eventList.stopAutoPlay(e)
eventList.swiperArrow(e);
});
els.prevArrow.addEventListener('click', function (e) {
eventList.stopAutoPlay(e)
eventList.swiperArrow(e);
});
els.scrollbar.addEventListener('click', eventList.stopAutoPlay);
},
scroll: function () {
window.addEventListener('scroll', eventList.scroll)
}
}
const eventList = {
load: function () {
swiperEvents.set();
swiperObj.main.init();
swiperObj.bg.init();
eventList.setVideo();
eventList.setScene();
eventList.scroll();
},
resize: function () {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
};
},
responsive: function () {
let desktopStatus = eventList.getCarouselSizeInfo(swiperObj.main).viewLength > 0 && currDevice == 'desktop';
eventList.resetDimmedSlide(swiperObj.main);
swiperObj.main.slideTo(0, false);
if (desktopStatus) eventList.initDimmedSlides(swiperObj.main);
},
setVideo: function () {
for (let i = 0; i < els.videoWrap.length; i++) {
utils.videoHandler({
playType: 'scrollPlay',
startPoint: currDevice != 'mobile' ? 40 : 24,
reversePoint: currDevice != 'mobile' ? 88 : 80,
wrap: els.videoWrap[i],
video: els.videoWrap[i].video,
controller: els.videoWrap[i].controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
},
playCallback: function () {
setTagging.pause(this.controller);
this.video.timeupdateEvent = function(){
if (this.currentTime > 0) {
if (!this.videoHandler.wrap.classList.contains('is-started')) {
this.videoHandler.wrap.classList.add('is-started');
}
eventList.setProgerssDuration(i);
this.removeEventListener('timeupdate', this.timeupdateEvent);
}
}
this.video.addEventListener('timeupdate', this.video.timeupdateEvent);
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
if (els.mainContainer.autoPlay) {
if (scrollProgress > 40 && scrollProgress < 55) {
clearTimeout(swiperObj.main.videoTiming);
swiperObj.main.videoTiming = setTimeout(() => {
swiperObj.main.slideNext();
}, 1000);
}
}
}
});
}
},
playVideo: function (video) {
if (video.readyState >= 1) {
video.play();
} else {
video.addEventListener('canplay', function () {
this.play();
}, {
once: true
})
}
},
clickVideoCta: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
eventList.playVideo(e.currentTarget.video);
ctaPlayStatus = true;
} else {
e.currentTarget.video.pause();
ctaPlayStatus = false;
}
}
},
stopAutoPlay: function (e) {
if (e.target.classList.contains('js-video-control') ||
e.target.classList.contains('swiper-button-next') ||
e.target.classList.contains('swiper-button-prev') ||
e.target.classList.contains('js-highlights-scrollbar')
) {
els.mainContainer.autoPlay = false;
};
},
swiperArrowVisiblirity: function () {
let mainSlidesLength = els.mainSwiperSlides.length - 1;
let mainSwiper = swiperObj.main;
let prevArrow = mainSwiper.previousIndex > mainSwiper.realIndex;
let nextArrow = mainSwiper.previousIndex < mainSwiper.realIndex;
if (prevArrow) {
if (mainSwiper.realIndex == (mainSlidesLength - 1)) {
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
} else if (mainSwiper.realIndex == 0) {
els.prevArrow.style.display = 'none';
}
};
if (nextArrow) {
if (mainSwiper.realIndex == 1) {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
} else if (mainSwiper.realIndex == mainSlidesLength) {
els.nextArrow.style.display = 'none';
}
};
},
swiperArrow: function (e) {
let mainSwiper = swiperObj.main;
let mainSlidesLength = els.mainSwiperSlides.length - 1;
let prevArrow = e.target.classList.contains('swiper-button-prev');
let nextArrow = e.target.classList.contains('swiper-button-next');
if (prevArrow) {
clearTimeout(swiperObj.main.videoTiming);
mainSwiper.slidePrev();
if (mainSwiper.realIndex == 0) {
setTimeout(() => {
els.nextArrow.blur();
els.nextArrow.focus();
}, 300);
}
};
if (nextArrow) {
clearTimeout(swiperObj.main.videoTiming);
mainSwiper.slideNext();
if (mainSwiper.realIndex == mainSlidesLength) {
setTimeout(() => {
els.prevArrow.blur();
els.prevArrow.focus();
}, 300);
}
};
},
scroll: function () {
els.section.scene.trackAnimation(function () {
let isIndex = swiperObj.main.realIndex;
let isMainVideoHandler = els.videoWrap[isIndex].video.videoHandler;
scrollProgress = this.progress;
if (!lowNetwork && ctaPlayStatus) isMainVideoHandler.scrollActive(this.progress);
if (scrollProgress > 0 && !isBgLoaded) {
for (let i = 0; i < els.bgSwiperSlides.length; i++) {
if (!els.bgSwiperSlides[i].image.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.bgSwiperSlides[i].image]);
}
}
isBgLoaded = true;
}
});
},
slideVideoPlay: function () {
let isIndex = swiperObj.main.realIndex;
let isVideoWrap = els.videoWrap[isIndex];
isVideoWrap.classList.add('is-ended');
setTimeout(function () {
isVideoWrap.classList.remove('is-started', 'is-paused');
if (!ctaPlayStatus) isVideoWrap.video.paused();
isVideoWrap.video.currentTime = 0;
if (ctaPlayStatus) {
eventList.playVideo(isVideoWrap.video);
setTimeout(function () {
if (els.mainContainer.autoPlay) isVideoWrap.video.videoHandler.controller.blur();
if (els.mainContainer.autoPlay) isVideoWrap.video.videoHandler.controller.focus();
if (isIndex == (swiperObj.main.slides.length - 1)) {
els.mainContainer.autoPlay = false;
}
}, 300);
}
}, 50);
},
setProgerssDuration: function (index) {
let isDuration = els.videoWrap[index].video.duration;
if (!!!els.videoWrap[index].durationSet) {
els.videoWrap[index].progressBar.style.animationDuration = `${isDuration}s`;
els.videoWrap[index].durationSet = true;
}
},
setMedia: function (index) {
let videoLength = els.mainSwiperSlides.length - 1;
let isIndex = index + 1
let loadIndex = isIndex < videoLength ? isIndex : videoLength;
let mainVideoloadComplateLength = els.mainContainer.querySelectorAll('.is-video-load-complete').length - 1;
for (let i = 0; i <= loadIndex; i++) {
if (mainVideoloadComplateLength != videoLength && !els.videoWrap[i].video.classList.contains('.is-video-load-complete')) {
if (!!els.videoWrap[i].video) videoLoader.setResponsiveMedia([els.videoWrap[i].video]);
if (!lowNetwork) {
if (!!els.videoWrap[i].coverImageHighband) imageLoader.setResponsiveMedia([els.videoWrap[i].coverImageHighband]);
} else {
if (!!els.videoWrap[i].coverImageLowband) imageLoader.setResponsiveMedia([els.videoWrap[i].coverImageLowband]);
}
if (!!els.bgSwiperSlides[i].image) imageLoader.setResponsiveMedia([els.bgSwiperSlides[i].image]);
}
}
},
pauseVideo: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let isVideo = swiper.slides[i].querySelector('video');
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
};
};
},
getCarouselSizeInfo: function (swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin) / slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
setScene: function () {
els.section.scene = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
initDimmedSlides: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if ((swiper.activeIndex + eventList.getCarouselSizeInfo(swiper).viewLength) <= i) {
swiper.slides[i].classList.add(dimmedClass);
}
}
},
setDimmedSlide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i;
if (dimmedSlide) {
swiper.slides[i].classList.add(dimmedClass);
} else {
swiper.slides[i].classList.remove(dimmedClass);
}
}
},
resetDimmedSlide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
swiper.slides[i].classList.remove(dimmedClass);
}
},
getPointerMoveSize: function (e) {
if (!!e.touches) {
pointerOffset.current = e.touches[0].clientX;
} else {
pointerOffset.current = e.offsetX;
}
}
}
const swiperEvents = {
set: function () {
if (swiperObj.main == null) {
swiperObj.main = new Swiper(els.mainContainer, {
init: false,
slidesPerView: 'auto',
scrollbar: {
el: els.scrollbar,
draggable: true
},
});
swiperObj.main.on('init', swiperEvents.init);
swiperObj.main.on('slideChange', swiperEvents.slideChange);
swiperObj.main.on('transitionEnd', swiperEvents.transitionEnd);
}
if (swiperObj.bg == null) {
swiperObj.bg = new Swiper(els.bgContainer, {
init: false,
slidesPerView: 'auto',
allowTouchMove: false
});
}
els.prevArrow.style.display = 'none';
},
init: function () {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
accessibility.slide(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0) eventList.initDimmedSlides(this);
},
slideChange: function () {
swiperObj.bg.slideTo(this.realIndex);
accessibility.slide(this);
eventList.pauseVideo(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0) eventList.setDimmedSlide(this);
if (this.realIndex > 0) eventList.setMedia(this.realIndex);
if (!lowNetwork) eventList.slideVideoPlay();
eventList.swiperArrowVisiblirity();
},
transitionEnd: function () {
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length - 1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
let isIndex = swiperObj.main.previousIndex;
let isMoveSize = currDevice != 'mobile' ? carouselInfo.isMoveSize : carouselInfo.isMoveSize + Math.abs(carouselInfo.slideMargin);
els.videoWrap[isIndex].video.pause();
if (carouselInfo.lastBeforeSize + (carouselInfo.slideWidth / 2) < isMoveSize && carouselInfo.maxMoveSize - (carouselInfo.slideWidth / 2) <= isMoveSize) {
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
eventList.pauseVideo(this);
if (!lowNetwork && ctaPlayStatus) {
lastSlide.querySelector('video').play();
};
lastSlide.classList.add('swiper-slide-active');
lastBeforeSlide.classList.remove('swiper-slide-active');
if (els.nextArrow.style.display != 'none') {
els.nextArrow.style.display = 'none';
setTimeout(() => {
els.prevArrow.blur();
els.prevArrow.focus();
}, 300);
}
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
}
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize >= carouselInfo.isMoveSize) {
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
if (currDevice.indexOf('mobile') > -1) {
eventList.pauseVideo(this);
if (!lowNetwork && ctaPlayStatus) {
lastBeforeSlide.querySelector('video').play();
};
lastSlide.classList.remove('swiper-slide-active');
lastBeforeSlide.classList.add('swiper-slide-active');
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
}
}, 0);
},
destroy: function (swiper) {
if (swiper != null) {
swiper.navigation.destroy(true);
swiper.destroy(true);
swiper = null;
}
},
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
const accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init,
}
})();
})();
;
(function () {
window.flagship.features.interactiveCircleToSearch = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
let objs = {};
let stepInfo = [];
let scrollProgress = null;
const init = function () {
els.section = document.querySelector('.js-circle-to-search');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.interactiveContent = els.section.querySelector('.js-interactive');
els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial');
els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video');
els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video');
els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video');
els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta');
els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta');
};
const setProperty = function (el, index) {
el.video = el.querySelector('video');
el.video.videoWrap = el;
el.controller = el.querySelector('.js-video-control');
el.controller.video = el.querySelector('video');
el.alert = el.parentElement.querySelector('.common-tutorial__alert');
el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip');
el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta');
el.video.playIndex = index;
el.video.coverImage = el.querySelector('.common-video__cover-image');
};
const bindEvents = function () {
for (let i = 0; i < els.videoWrap.length; i++) {
setProperty(els.videoWrap[i], i);
setStepStatus(els.videoList[i])
}
setVideos();
eventList.videoController();
eventList.click();
eventList.setScroller();
eventHandler.scroll();
};
const setStepStatus = function (el) {
stepInfo.push({
alert: el.getAttribute('data-alert'),
tooltip: el.getAttribute('data-tooltip')
});
};
const eventList = {
setScroller: function () {
if (els.interactiveContent.scene == null) {
els.interactiveContent.scene = SCROLLER({
trackElement: els.interactiveContent,
useFixed: false
});
}
},
scrollEvent: function () {
if (els.interactiveContent.scene != null) {
els.interactiveContent.scene.trackAnimation(function () {
scrollProgress = this.progress;
if (els.interactiveContent.classList.contains('is-tutorial-opened')) {
let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video');
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
let replayStatus = !document.documentElement.classList.contains('low_network') &&
activeVideo.paused &&
!els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) &&
!els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) &&
scrollProgress > 0 && scrollProgress < 100;
let resetStatus = scrollProgress === 0 || scrollProgress === 100;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (replayStatus) {
if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) {
els.videoWrap[0].video.play();
} else {
els.videoWrap[0].video.addEventListener('canplay', function() {
els.videoWrap[0].video.play();
}, {once: true});
}
}
if (resetStatus) {
activeVideo.pause();
activeVideo.currentTime = 0;
eventList.tutorialReset();
}
if (pauseStatus && !activeVideo.paused) {
activeVideo.pause();
}
}
});
}
},
videoController: function () {
for (let i = 0; i < objs.videos.length; i++) {
objs.videos[i].controller.addEventListener('click', function () {
if (this.video.paused) {
this.video.play();
} else {
this.video.pause();
}
});
}
},
nextVideoPlay: function (index) {
els.videoList[index + 1].classList.add('is-visible');
if (els.videos[index + 1].readyState > 3) {
els.videos[index + 1].play();
} else {
els.videos[index + 1].addEventListener('loadeddata', function () {
if (this.paused) this.play();
});
}
els.videos[index + 1].videoWrap.controller.focus();
setTimeout(function () {
if (utils.detector.isTouchDevice) {
if (!!els.videoList[index].tooltipCta) {
els.videoList[index].tooltipCta.blur();
}
}
els.videos[index + 1].videoWrap.controller.focus();
utils.onAccessibility(els.videoList[index]);
if (!!els.videoList[index].tooltip) {
utils.onAccessibility(els.videoList[index].tooltip);
}
els.videoList[index].classList.remove('is-visible');
}, 300);
},
click: function () {
let self = this;
for (let i = 0; i < els.tooltipCta.length; i++) {
els.tooltipCta[i].addEventListener('click', function () {
self.nextVideoPlay(i);
});
}
},
tutorialReset: function () {
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
els.videoWrap[0].classList.remove(firstVideoHandler.playClass);
els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass);
els.videoWrap[0].classList.remove(firstVideoHandler.endedClass);
// video wrap
if (!els.videoList[0].classList.contains('is-visible')) {
els.videoList[0].classList.add('is-visible');
}
// tooltip
if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) {
els.videoWrap[0].tooltip.classList.remove('is-visible');
}
// tootip accessibility
utils.offAccessibility(els.videoWrap[0]);
if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip);
for (let i = 0; i < els.videoWrap.length; i++) {
if (i != 0) {
if (els.videoList[i].classList.contains('is-visible')) {
els.videoList[i].classList.remove('is-visible');
}
if (!els.videoWrap[i].video.paused) {
els.videoWrap[i].video.pause();
els.videoWrap[i].video.currentTime = 0;
}
// tooltip
if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) {
els.videoWrap[i].tooltip.classList.remove('is-visible');
}
utils.onAccessibility(els.videoWrap[i]);
if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip);
}
}
// replay cta
els.tutorialReplay.style.display = 'none';
els.tutorialReplay.setAttribute('aria-hidden', true);
els.tutorialReplay.setAttribute('tabindex', -1);
}
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scrollEvent);
eventList.scrollEvent();
}
}
const setVideos = function () {
objs.videos = [];
for (let i = 0; i < els.videoWrap.length; i++) {
let isVideoWrap = els.videoWrap[i];
objs.videos.push(utils.videoHandler({
wrap: isVideoWrap,
video: isVideoWrap.video,
controller: isVideoWrap.controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
if (this.controller.style.display = 'none') {
this.controller.style.display = '';
}
}
},
playCallback: function () {
els.videoList[this.video.playIndex].removeAttribute('tabindex');
els.videoList[this.video.playIndex].removeAttribute('aria-hidden');
this.controller.style.display = 'block';
utils.offAccessibility(this.controller);
setTagging.pause(this.controller);
let nextPlayindex = this.video.playIndex + 1;
if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) {
if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]);
}
if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]);
}
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') {
if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled');
if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible');
utils.offAccessibility(this.wrap.tooltip);
}
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
let playStatus = scrollProgress > 30 && scrollProgress < 60;
if (playStatus && !!this.wrap.tooltipCta) {
this.wrap.tooltipCta.focus();
setTimeout(function () {
self.wrap.tooltipCta.focus();
}, 300);
}
if ((els.videos.length - 1) == this.video.playIndex) {
els.tutorialReplay.style.display = 'block';
els.tutorialReplay.removeAttribute('tabindex');
els.tutorialReplay.removeAttribute('aria-hidden');
if (playStatus) {
els.tutorialReplay.focus();
setTimeout(function () {
els.tutorialReplay.focus();
}, 300);
}
}
setTimeout(function () {
self.controller.style.display = 'none';
}, 100);
}
}));
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.interactiveInterpreter = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
let objs = {};
let stepInfo = [];
let scrollProgress = null;
let isMute = null;
const init = function () {
els.section = document.querySelector('.js-interpreter');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.interactiveContent = els.section.querySelector('.js-interactive');
els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial');
els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video');
els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video');
els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video');
els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta');
els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta');
els.allVideoWrap = els.section.querySelectorAll('.js-video-wrap');
els.muteCta = els.section.querySelectorAll('.js-mute-cta');
// status
isMute = !!els.muteCta && els.muteCta.length > 0;
};
const setProperty = function (el, index) {
el.video = el.querySelector('video');
el.video.videoWrap = el;
el.controller = el.querySelector('.js-video-control');
el.controller.video = el.querySelector('video');
el.alert = el.parentElement.querySelector('.common-tutorial__alert');
el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip');
el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta');
el.video.playIndex = index;
el.video.coverImage = el.querySelector('.common-video__cover-image');
if (isMute) {
el.muteCta = els.muteCta[index + 1];
}
};
const bindEvents = function () {
for (let i = 0; i < els.videoWrap.length; i++) {
setProperty(els.videoWrap[i], i);
setStepStatus(els.videoList[i]);
}
setVideos();
eventList.videoController();
eventList.click.tooltipCta();
eventList.setScroller();
eventHandler.scroll();
if (isMute) {
muteEventHandler();
}
};
const setStepStatus = function (el) {
stepInfo.push({
alert: el.getAttribute('data-alert'),
tooltip: el.getAttribute('data-tooltip')
});
};
const muteEventHandler = function () {
for (let i = 0; i < els.muteCta.length; i++) {
muteEventList.setProperty(els.muteCta[i], i);
muteEventList.setMuteBlindText(els.muteCta[i], i);
muteEventList.click(els.muteCta[i], i);
els.allVideoWrap[i].querySelector('video').style.pointerEvents = 'none';
}
};
const muteEventList = {
setProperty: function (muteCta, index) {
muteCta.videoWrap = els.allVideoWrap[index];
muteCta.videoWrap.muteCta = muteCta;
muteCta.video = els.allVideoWrap[index].querySelector('video');
muteCta.blind = muteCta.querySelector('.blind');
},
setMuteBlindText: function (muteCta) {
muteCta.blind.innerText = muteCta.getAttribute('data-unmute');
},
click: function (muteCta) {
muteCta.addEventListener('click', function () {
let isMute = this.video.muted;
if (!!isMute) {
this.classList.remove('is-muted');
this.classList.add('is-unmuted');
this.blind.innerText = this.getAttribute('data-mute');
this.video.muted = false;
setTagging.mute(this);
} else {
this.classList.remove('is-unmuted');
this.classList.add('is-muted');
this.blind.innerText = this.getAttribute('data-unmute');
this.video.muted = true;
setTagging.unmute(this);
}
});
},
};
const eventList = {
setScroller: function () {
if (els.interactiveContent.scene == null) {
els.interactiveContent.scene = SCROLLER({
trackElement: els.interactiveContent,
useFixed: false
});
}
},
scrollEvent: function () {
if (els.interactiveContent.scene != null) {
els.interactiveContent.scene.trackAnimation(function () {
scrollProgress = this.progress;
if (els.interactiveContent.classList.contains('is-tutorial-opened')) {
let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video');
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
let replayStatus = !document.documentElement.classList.contains('low_network') &&
activeVideo.paused &&
!els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) &&
!els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) &&
scrollProgress > 0 && scrollProgress < 100;
let resetStatus = scrollProgress === 0 || scrollProgress === 100;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (replayStatus) {
if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) {
els.videoWrap[0].video.play();
} else {
els.videoWrap[0].video.addEventListener('canplay', function () {
els.videoWrap[0].video.play();
}, {once: true});
}
}
if (resetStatus) {
activeVideo.pause();
activeVideo.currentTime = 0;
eventList.tutorialReset();
}
if (pauseStatus && !activeVideo.paused) {
activeVideo.pause();
}
}
});
}
},
videoController: function () {
for (let i = 0; i < objs.videos.length; i++) {
objs.videos[i].controller.addEventListener('click', function () {
if (this.video.paused) {
this.video.play();
} else {
this.video.pause();
}
});
}
},
nextVideoPlay: function (index) {
els.videoList[index + 1].classList.add('is-visible');
if (els.videos[index + 1].readyState > 3) {
els.videos[index + 1].play();
} else {
els.videos[index + 1].addEventListener('loadeddata', function () {
if (this.paused) this.play();
});
}
els.videos[index + 1].videoWrap.controller.focus();
setTimeout(function () {
if (utils.detector.isTouchDevice) {
if (!!els.videoList[index].tooltipCta) {
els.videoList[index].tooltipCta.blur();
}
}
els.videos[index + 1].videoWrap.controller.focus();
utils.onAccessibility(els.videoList[index]);
if (!!els.videoList[index].tooltip) {
utils.onAccessibility(els.videoList[index].tooltip);
}
els.videoList[index].classList.remove('is-visible');
}, 300);
},
click: {
tooltipCta: function () {
for (let i = 0; i < els.tooltipCta.length; i++) {
els.tooltipCta[i].addEventListener('click', function () {
eventList.nextVideoPlay(i);
});
}
}
},
tutorialReset: function () {
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
els.videoWrap[0].classList.remove(firstVideoHandler.playClass);
els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass);
els.videoWrap[0].classList.remove(firstVideoHandler.endedClass);
// video wrap
if (!els.videoList[0].classList.contains('is-visible')) {
els.videoList[0].classList.add('is-visible');
}
// tooltip
if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) {
els.videoWrap[0].tooltip.classList.remove('is-visible');
}
// tootip accessibility
utils.offAccessibility(els.videoWrap[0]);
if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip);
for (let i = 0; i < els.videoWrap.length; i++) {
if (i != 0) {
if (els.videoList[i].classList.contains('is-visible')) {
els.videoList[i].classList.remove('is-visible');
}
if (!els.videoWrap[i].video.paused) {
els.videoWrap[i].video.pause();
els.videoWrap[i].video.currentTime = 0;
}
// tooltip
if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) {
els.videoWrap[i].tooltip.classList.remove('is-visible');
}
utils.onAccessibility(els.videoWrap[i]);
if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip);
}
}
// replay cta
els.tutorialReplay.style.display = 'none';
els.tutorialReplay.setAttribute('aria-hidden', true);
els.tutorialReplay.setAttribute('tabindex', -1);
}
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scrollEvent);
eventList.scrollEvent();
}
}
const setVideos = function () {
objs.videos = [];
for (let i = 0; i < els.videoWrap.length; i++) {
let isVideoWrap = els.videoWrap[i];
objs.videos.push(utils.videoHandler({
wrap: isVideoWrap,
video: isVideoWrap.video,
controller: isVideoWrap.controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
if (this.controller.style.display = 'none') {
this.controller.style.display = '';
}
}
},
playCallback: function () {
els.videoList[this.video.playIndex].removeAttribute('tabindex');
els.videoList[this.video.playIndex].removeAttribute('aria-hidden');
utils.offAccessibility(this.wrap.muteCta);
if (!this.video.muted) {
this.wrap.muteCta.classList.remove('is-unmuted');
this.wrap.muteCta.video.muted = true;
this.wrap.muteCta.blind.innerText = this.wrap.muteCta.getAttribute('data-unmute');
setTagging.unmute(this.wrap.muteCta);
}
this.controller.style.display = 'block';
utils.offAccessibility(this.controller);
setTagging.pause(this.controller);
let nextPlayindex = this.video.playIndex + 1;
if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) {
if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]);
}
if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]);
}
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') {
if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled');
if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible');
utils.offAccessibility(this.wrap.tooltip);
}
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
let playStatus = scrollProgress > 30 && scrollProgress < 60;
if (playStatus && !!this.wrap.tooltipCta) {
this.wrap.tooltipCta.focus();
setTimeout(function () {
self.wrap.tooltipCta.focus();
}, 300);
}
if ((els.videos.length - 1) == this.video.playIndex) {
els.tutorialReplay.style.display = 'block';
els.tutorialReplay.removeAttribute('tabindex');
els.tutorialReplay.removeAttribute('aria-hidden');
if (playStatus) {
els.tutorialReplay.focus();
setTimeout(function () {
els.tutorialReplay.focus();
}, 300);
}
}
setTimeout(function () {
self.controller.style.display = 'none';
}, 100);
}
}));
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
},
mute: function (targetCta) {
if (targetCta.hasAttribute('data-omni')) {
let dataOmni = targetCta.getAttribute('data-omni').toLowerCase();
targetCta.setAttribute('data-omni', dataOmni.replace('unmute', 'mute'));
}
if (targetCta.hasAttribute('ga-la')) {
let gaLa = targetCta.getAttribute('ga-la').toLowerCase();
targetCta.setAttribute('ga-la', gaLa.replace('unmute', 'mute'));
}
},
unmute: function (targetCta) {
if (targetCta.hasAttribute('data-omni')) {
let dataOmni = targetCta.getAttribute('data-omni').toLowerCase();
targetCta.setAttribute('data-omni', dataOmni.replace('mute', 'unmute'));
}
if (targetCta.hasAttribute('ga-la')) {
let gaLa = targetCta.getAttribute('ga-la').toLowerCase();
targetCta.setAttribute('ga-la', gaLa.replace('mute', 'unmute'));
}
},
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.interactiveNoteAssist = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
let objs = {};
let stepInfo = [];
let scrollProgress = null;
const init = function () {
els.section = document.querySelector('.js-note-assist');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.interactiveContent = els.section.querySelector('.js-interactive');
els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial');
els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video');
els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video');
els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video');
els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta');
els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta');
};
const setProperty = function (el, index) {
el.video = el.querySelector('video');
el.video.videoWrap = el;
el.controller = el.querySelector('.js-video-control');
el.controller.video = el.querySelector('video');
el.alert = el.parentElement.querySelector('.common-tutorial__alert');
el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip');
el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta');
el.video.playIndex = index;
el.video.coverImage = el.querySelector('.common-video__cover-image');
};
const bindEvents = function () {
for (let i = 0; i < els.videoWrap.length; i++) {
setProperty(els.videoWrap[i], i);
setStepStatus(els.videoList[i])
}
setVideos();
eventList.videoController();
eventList.click();
eventList.setScroller();
eventHandler.scroll();
};
const setStepStatus = function (el) {
stepInfo.push({
alert: el.getAttribute('data-alert'),
tooltip: el.getAttribute('data-tooltip')
});
};
const eventList = {
setScroller: function () {
if (els.interactiveContent.scene == null) {
els.interactiveContent.scene = SCROLLER({
trackElement: els.interactiveContent,
useFixed: false
});
}
},
scrollEvent: function () {
if (els.interactiveContent.scene != null) {
els.interactiveContent.scene.trackAnimation(function () {
scrollProgress = this.progress;
if (els.interactiveContent.classList.contains('is-tutorial-opened')) {
let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video');
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
let replayStatus = !document.documentElement.classList.contains('low_network') &&
activeVideo.paused &&
!els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) &&
!els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) &&
scrollProgress > 0 && scrollProgress < 100;
let resetStatus = scrollProgress === 0 || scrollProgress === 100;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (replayStatus) {
if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) {
els.videoWrap[0].video.play();
} else {
els.videoWrap[0].video.addEventListener('canplay', function () {
els.videoWrap[0].video.play();
}, {once: true});
}
}
if (resetStatus) {
activeVideo.pause();
activeVideo.currentTime = 0;
eventList.tutorialReset();
}
if (pauseStatus && !activeVideo.paused) {
activeVideo.pause();
}
}
});
}
},
videoController: function () {
for (let i = 0; i < objs.videos.length; i++) {
objs.videos[i].controller.addEventListener('click', function () {
if (this.video.paused) {
this.video.play();
} else {
this.video.pause();
}
});
}
},
nextVideoPlay: function (index) {
els.videoList[index + 1].classList.add('is-visible');
if (els.videos[index + 1].readyState > 3) {
els.videos[index + 1].play();
} else {
els.videos[index + 1].addEventListener('loadeddata', function () {
if (this.paused) this.play();
});
}
els.videos[index + 1].videoWrap.controller.focus();
setTimeout(function () {
if (utils.detector.isTouchDevice) {
if (!!els.videoList[index].tooltipCta) {
els.videoList[index].tooltipCta.blur();
}
}
els.videos[index + 1].videoWrap.controller.focus();
utils.onAccessibility(els.videoList[index]);
if (!!els.videoList[index].tooltip) {
utils.onAccessibility(els.videoList[index].tooltip);
}
els.videoList[index].classList.remove('is-visible');
}, 300);
},
click: function () {
let self = this;
for (let i = 0; i < els.tooltipCta.length; i++) {
els.tooltipCta[i].addEventListener('click', function () {
self.nextVideoPlay(i);
});
}
},
tutorialReset: function () {
let firstVideoHandler = els.videoWrap[0].video.videoHandler;
els.videoWrap[0].classList.remove(firstVideoHandler.playClass);
els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass);
els.videoWrap[0].classList.remove(firstVideoHandler.endedClass);
// video wrap
if (!els.videoList[0].classList.contains('is-visible')) {
els.videoList[0].classList.add('is-visible');
}
// tooltip
if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) {
els.videoWrap[0].tooltip.classList.remove('is-visible');
}
// tootip accessibility
utils.offAccessibility(els.videoWrap[0]);
if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip);
for (let i = 0; i < els.videoWrap.length; i++) {
if (i != 0) {
if (els.videoList[i].classList.contains('is-visible')) {
els.videoList[i].classList.remove('is-visible');
}
if (!els.videoWrap[i].video.paused) {
els.videoWrap[i].video.pause();
els.videoWrap[i].video.currentTime = 0;
}
// tooltip
if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) {
els.videoWrap[i].tooltip.classList.remove('is-visible');
}
utils.onAccessibility(els.videoWrap[i]);
if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip);
}
}
// replay cta
els.tutorialReplay.style.display = 'none';
els.tutorialReplay.setAttribute('aria-hidden', true);
els.tutorialReplay.setAttribute('tabindex', -1);
}
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scrollEvent);
eventList.scrollEvent();
}
}
const setVideos = function () {
objs.videos = [];
for (let i = 0; i < els.videoWrap.length; i++) {
let isVideoWrap = els.videoWrap[i];
objs.videos.push(utils.videoHandler({
wrap: isVideoWrap,
video: isVideoWrap.video,
controller: isVideoWrap.controller,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
if (this.controller.style.display = 'none') {
this.controller.style.display = '';
}
}
},
playCallback: function () {
els.videoList[this.video.playIndex].removeAttribute('tabindex');
els.videoList[this.video.playIndex].removeAttribute('aria-hidden');
this.controller.style.display = 'block';
utils.offAccessibility(this.controller);
setTagging.pause(this.controller);
let nextPlayindex = this.video.playIndex + 1;
if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) {
if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]);
}
if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]);
}
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') {
if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled');
if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible');
utils.offAccessibility(this.wrap.tooltip);
}
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
let playStatus = scrollProgress > 30 && scrollProgress < 60;
if (playStatus && !!this.wrap.tooltipCta) {
this.wrap.tooltipCta.focus();
setTimeout(function () {
self.wrap.tooltipCta.focus();
}, 300);
}
if ((els.videos.length - 1) == this.video.playIndex) {
els.tutorialReplay.style.display = 'block';
els.tutorialReplay.removeAttribute('tabindex');
els.tutorialReplay.removeAttribute('aria-hidden');
if (playStatus) {
els.tutorialReplay.focus();
setTimeout(function () {
els.tutorialReplay.focus();
}, 300);
}
}
setTimeout(function () {
self.controller.style.display = 'none';
}, 100);
}
}));
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.interactive = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution(),
scrollProgress = null;
const init = function () {
els.interactiveContents = document.querySelectorAll('.js-interactive');
if (!!els.interactiveContents && els.interactiveContents.length > 0) {
for (let i = 0; i < els.interactiveContents.length; i++) {
setProperty(els.interactiveContents[i], i);
eventList.setIntroVideo(els.interactiveContents[i]);
eventList.setIntroScene(els.interactiveContents[i]);
bindEvents(els.interactiveContents[i], i);
}
}
};
const setProperty = function (content, index) {
// introVideo
content.index = index;
content.introVideo = content.querySelector('.js-interactive-intro-video video');
content.introVideo.videoWrap = content.querySelector('.js-interactive-intro-video');
content.introVideo.wrap = content.querySelector('.js-interactive-intro-video .js-video-wrap');
content.introVideo.parentWrap = content.parentElement;
content.introVideo.controllerCta = content.introVideo.videoWrap.querySelector('.js-video-control');
content.introVideo.controllerCta.video = content.introVideo;
content.introVideo.tooltip = content.querySelector('.js-tutorial-tooltip');
content.introVideo.tooltipCta = content.querySelector('.js-tutorial-tooltip-cta');
content.introVideo.tooltipCta.parentWrap = content;
content.tutorialContentWrap = content.querySelectorAll('.js-tutorial-video');
content.tutorialContentWrap.tooltip = content.querySelectorAll('.js-tutorial-video .js-tutorial-tooltip');
// start, reverse point
content.introVideo.wrap.startPoint = !!content.introVideo.wrap.getAttribute('data-start-point') ? parseInt(content.introVideo.wrap.getAttribute('data-start-point')) : undefined;
content.introVideo.wrap.reversePoint = !!content.introVideo.wrap.getAttribute('data-reverse-point') ? parseInt(content.introVideo.wrap.getAttribute('data-reverse-point')) : undefined;
content.introVideo.wrap.moStartPoint = !!content.introVideo.wrap.getAttribute('data-mo-start-point') ? parseInt(content.introVideo.wrap.getAttribute('data-mo-start-point')) : undefined;
content.introVideo.wrap.moReversePoint = !!content.introVideo.wrap.getAttribute('data-mo-reverse-point') ? parseInt(content.introVideo.wrap.getAttribute('data-mo-reverse-point')) : undefined;
// replayCta
content.replayCta = content.querySelector('.js-replay-cta');
content.replayCta.parentWrap = content;
};
const bindEvents = function (content, i) {
eventHandler.click.introTooltipCta(content.introVideo.tooltipCta);
eventHandler.click.replayCta(content.replayCta);
eventHandler.click.videoController(content.introVideo.controllerCta);
eventHandler.scroll(content);
eventList.scroll(content);
resize.add(function (currRes) {
eventList.resize(currRes, content);
});
};
const eventList = {
setIntroVideo: function (content) {
utils.videoHandler({
playType: 'scrollPlay',
startPoint: content.introVideo.wrap.startPoint,
reversePoint: content.introVideo.wrap.reversePoint,
wrap: content.introVideo.wrap,
video: content.introVideo,
controller: content.introVideo.controllerCta,
resetCallback: function () {
if (this.wrap.classList.contains('is-completed')) {
this.wrap.classList.remove('is-completed');
}
if (this.wrap.classList.contains('is-started')) {
this.wrap.classList.remove('is-started');
}
utils.offAccessibility(content.introVideo.videoWrap);
if (content.introVideo.controllerCta.style.display == 'none') {
content.introVideo.controllerCta.style.display = 'block';
}
if (this.video.tooltip.classList.contains('is-visible')) {
this.video.tooltip.classList.remove('is-visible');
}
this.video.tooltip.classList.remove('is-visible');
utils.onAccessibility(this.video.tooltip);
},
playCallback: function () {
if (!this.wrap.classList.contains('is-started')) {
this.wrap.classList.add('is-started');
}
setTagging.pause(this.controller);
let videoWrap = content.tutorialContentWrap[0].querySelector('.js-video-wrap');
videoWrap.coverImg = videoWrap.querySelector('.common-video__cover-image');
videoWrap.video = videoWrap.querySelector('video');
if (!!videoWrap.coverImg && !videoWrap.coverImg.classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([videoWrap.coverImg]);
}
if (!!videoWrap.video && !videoWrap.video.classList.contains('is-video-load-complete')) {
videoLoader.setResponsiveMedia([videoWrap.video]);
}
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
let self = this;
if (!this.wrap.classList.contains('is-completed')) {
this.wrap.classList.add('is-completed');
}
this.video.tooltip.classList.add('is-visible');
utils.offAccessibility(this.video.tooltip);
let isPlaySection = null;
isPlaySection = scrollProgress > 30 && scrollProgress < 60;
if (isPlaySection) {
this.video.tooltipCta.focus();
setTimeout(function () {
self.video.tooltipCta.focus();
self.controller.style.display = 'none';
}, 300);
}
}
});
},
setIntroScene: function (content) {
content.introVideo.scene = SCROLLER({
trackElement: content.introVideo,
useFixed: false,
resize: utils.detector.isTouchDevice ? false : true
});
},
scroll: function (content) {
if (!content.classList.contains('is-tutorial-opened')) {
content.introVideo.scene.trackAnimation(function () {
content.introVideo.videoHandler.scrollActive(this.progress);
scrollProgress = this.progress;
let pauseStatus = (this.wheelDirection == 'up' && scrollProgress <= 30) || (this.wheelDirection == 'down' && scrollProgress >= 60);
if (pauseStatus && !content.introVideo.paused) {
content.introVideo.pause();
}
});
}
},
click: {
introVideoTooltipCta: function () {
let content = this.parentWrap;
content.classList.add('is-tutorial-opened');
utils.onAccessibility(content.introVideo.videoWrap);
content.tutorialContentWrap[0].classList.add('is-visible');
utils.offAccessibility(content.tutorialContentWrap[0]);
content.tutorialContentWrap[0].querySelector('.common-video__control').focus();
setTimeout(function () {
content.tutorialContentWrap[0].querySelector('.common-video__control').focus();
}, 300);
content.introVideo.tooltip.classList.remove('is-visible');
let videoWrap = content.tutorialContentWrap[0].querySelector('.js-video-wrap');
videoWrap.video.play();
},
replayCta: function () {
let content = this.parentWrap;
content.introVideo.tooltip.classList.remove('is-visible');
utils.onAccessibility(content.introVideo.tooltip);
utils.offAccessibility(content.introVideo.videoWrap);
content.introVideo.controllerCta.style.display = 'block';
content.introVideo.controllerCta.focus();
setTimeout(function () {
content.introVideo.controllerCta.focus();
}, 300);
content.replayCta.style.display = 'none';
content.replayCta.setAttribute('aria-hidden', true);
content.replayCta.setAttribute('tabindex', -1);
for (let i = 0; i < content.tutorialContentWrap.length; i++) {
content.tutorialContentWrap[i].classList.remove('is-visible');
if (!!content.tutorialContentWrap.tooltip[i]) {
content.tutorialContentWrap.tooltip[i].classList.remove('is-visible');
}
utils.onAccessibility(content.tutorialContentWrap[i]);
setTimeout(function () {
content.tutorialContentWrap[i].querySelector('video').currentTime = 0;
}, 300);
}
content.classList.remove('is-tutorial-opened');
content.introVideo.play();
},
videoController: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
e.currentTarget.video.play();
} else {
e.currentTarget.video.pause();
}
}
},
},
reset: function (content) {
if (content.classList.contains('is-tutorial-opened')) {
content.classList.remove('is-tutorial-opened');
}
// replay cta
if (content.replayCta.style.display == 'block') {
content.replayCta.style.display = 'none';
content.replayCta.setAttribute('aria-hidden', true);
content.replayCta.setAttribute('tabindex', -1);
}
// tutorial video
let tutorialWrap = content.tutorialContentWrap;
for (let i = 0; i < tutorialWrap.length; i++) {
tutorialWrap[i].classList.remove('is-visible');
utils.onAccessibility(tutorialWrap[i]);
// video
tutorialWrap[i].video = tutorialWrap[i].querySelector('video');
if (!tutorialWrap[i].video.paused) {
tutorialWrap[i].video.pause();
tutorialWrap[i].video.currentTime = 0;
}
// tooltip
if (!!tutorialWrap.tooltip[i]) {
if (tutorialWrap.tooltip[i].classList.contains('is-visible')) {
tutorialWrap.tooltip[i].classList.remove('is-visible');
}
utils.onAccessibility(tutorialWrap.tooltip[i]);
}
}
// intro video
utils.offAccessibility(content.introVideo.videoWrap);
if (content.introVideo.controllerCta.style.display == 'none') {
content.introVideo.controllerCta.style.display = 'block';
}
// intro tooltip
if (content.introVideo.tooltip.classList.contains('is-visible')) {
content.introVideo.tooltip.classList.remove('is-visible')
}
utils.onAccessibility(content.introVideo.tooltip);
if (scrollProgress >= 30 && scrollProgress <= 60) {
if (content.introVideo.paused) {
content.introVideo.currentTime = 0;
content.introVideo.play();
}
}
},
resize: function (currRes, content) {
currDevice = currRes;
if (prevDevice != currDevice) {
eventList.reset(content);
}
prevDevice = currDevice;
},
};
const eventHandler = {
click: {
replayCta: function (replayCta) {
replayCta.addEventListener('click', eventList.click.replayCta);
},
introTooltipCta: function (introTooltipCta) {
introTooltipCta.addEventListener('click', eventList.click.introVideoTooltipCta);
},
videoController: function (introVideoController) {
introVideoController.addEventListener('click', eventList.click.videoController);
}
},
scroll: function (content) {
window.addEventListener('scroll', function () {
eventList.scroll(content);
});
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.moveFeature = (function () {
const utils = window.flagship.common.utils;
let els = {};
const init = function () {
els.jumpCta = document.querySelectorAll('.js-jump-cta');
if (!!els.jumpCta) {
setProperty();
bindEvents();
}
};
const setProperty = function () {
for (let i = 0; i < els.jumpCta.length; i++) {
els.jumpCta[i].sectionId = els.jumpCta[i].getAttribute('href');
els.jumpCta[i].section = document.querySelector(`${els.jumpCta[i].sectionId}`);
els.jumpCta[i].returnCta = els.jumpCta[i].section.querySelector('.js-return-cta');
els.jumpCta[i].returnCta.jumpCta = els.jumpCta[i];
els.jumpCta[i].returnCta.section = els.jumpCta[i].section;
}
};
const bindEvents = function () {
eventHandler.click();
eventList.setScene();
eventHandler.scroll();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.jumpCta.length; i++) {
els.jumpCta[i].addEventListener('click', eventList.clickJumpCta);
els.jumpCta[i].returnCta.addEventListener('click', eventList.clickReturnCta);
}
},
scroll: function () {
window.addEventListener('scroll', eventList.hideReturnCta);
}
};
const eventList = {
setScene: function () {
for(let i=0; i swiper.slides.length -1 ? swiper.slides.length -1 : index + 1;
let videoLength = swiper.el.querySelectorAll('video').length - 1;
let imageLength = swiper.el.querySelectorAll('img').length - 1;
let videoloadComplateLength = swiper.el.querySelectorAll('.is-video-load-complete').length - 1;
let imageloadComplateLength = swiper.el.querySelectorAll('.is-img-load-complete').length - 1;
let nextVideo = swiper.slides[isIndex].querySelector('video');
let nextImage = swiper.slides[isIndex].querySelector('img');
if (videoloadComplateLength != videoLength) {
if (!!nextVideo) {
videoLoader.setResponsiveMedia([nextVideo]);
}
}
if (imageloadComplateLength != imageLength) {
if (!!nextImage) {
imageLoader.setResponsiveMedia([nextImage]);
}
}
},
resetVideo: function(swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let isVideo = swiper.slides[i].video;
if (!!isVideo && !isVideo.paused) {
isVideo.pause();
isVideo.currentTime = 0;
};
};
},
getCarouselSizeInfo: function(swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[isRtl ? 3 : 1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin)/slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
setDimmedSlide: function(swiper) {
if (currDevice != 'mobile') {
for (let i = 0; i < swiper.slides.length; i++) {
let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i;
if (dimmedSlide) {
swiper.slides[i].classList.add(dimmedClass);
} else {
swiper.slides[i].classList.remove(dimmedClass);
}
}
}
},
slideChange: function () {
accessibility.slide(this);
eventList.resetVideo(this);
if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.setDimmedSlide(this);
if (this.realIndex > 0) eventList.setMedia(this, this.realIndex);
},
transitionEnd: function() {
if (this.slides.length < 3 && currDevice == 'mobile') return;
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length -1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize || carouselInfo.maxMoveSize == carouselInfo.isMoveSize) {
eventList.resetVideo(this);
lastSlide.classList.add('is-last-slide');
lastBeforeSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-dimmed');
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
} else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize == carouselInfo.isMoveSize) {
eventList.resetVideo(this);
lastSlide.classList.add('is-dimmed');
lastSlide.classList.remove('is-last-slide');
lastBeforeSlide.classList.remove('is-dimmed');
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
let swiperActiveSlide = els.section.querySelector('.swiper-slide-active');
let lastSlideActive = els.section.querySelector('.is-last-slide');
let isActiveSlide = !!lastSlideActive ? lastSlideActive : swiperActiveSlide;
let isActiveVideo = isActiveSlide.querySelector('video');
if (!!isActiveVideo && !isLowBand) isActiveVideo.play()
}, 0);
},
setScene: function() {
els.section.scene = SCROLLER({
trackElement: els.section
});
},
setVideoType: function() {
if (!!els.videos) {
for (let i = 0; i < els.videos.length; i++) {
els.videos[i].videoHandler.playType = 'scrollPlay';
}
}
},
scroll: function() {
els.section.scene.trackAnimation(function() {
let swiperActiveSlide = els.section.querySelector('.swiper-slide-active');
let lastSlideActive = els.section.querySelector('.is-last-slide');
let isActiveSlide = !!lastSlideActive ? lastSlideActive : swiperActiveSlide;
let isActiveVideo = isActiveSlide.querySelector('video');
if (!!isActiveVideo && !isLowBand) isActiveVideo.videoHandler.scrollActive(this.progress);
});
}
};
const accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.viewer = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize,
common = window.flagship.features.common,
isLow = utils.isLowNetwork();
let els = {},
currDevice = resize.checkResolution();
const init = function () {
els.viewerBtn = document.querySelector('.viewer-btn');
els.section = document.querySelector('.js-colors');
els.popup = document.querySelector('.js-viewer');
if (!!isLow) {
if (!els.viewerBtn) return;
els.currentWrap = els.popup;
setElements();
setProperty();
popupEvents.set();
bindEvents();
} else {
if (!els.section) return;
els.currentWrap = els.section;
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
els.wrapEl = document.querySelector('#wrap');
els.contents = document.querySelector('#contents');
// popup
els.popupWrap = els.currentWrap.querySelector('.js-viewer-wrap');
els.popupInner = els.currentWrap.querySelector('.js-viewer-inner');
els.closeCta = els.currentWrap.querySelector('.js-viewer-close');
els.popupContents = els.currentWrap.querySelector('.js-viewer-contents');
// popup-scroll
els.popupScroll = els.currentWrap.querySelector('.js-viewer-scroll');
els.popupScrollUpBtn = els.currentWrap.querySelector('.js-scroll-up');
els.popupScrollDownBtn = els.currentWrap.querySelector('.js-scroll-down');
// viewer
els.viewerIframe = els.currentWrap.querySelector('iframe');
els.foldBtn = els.currentWrap.querySelector('.js-fold-btn');
els.resetBtn = els.currentWrap.querySelector('.js-reset-btn');
// angle preset
els.presetOpen = els.currentWrap.querySelector('.js-preset-open');
els.presetClose = els.currentWrap.querySelector('.js-preset-close');
els.presetLayer = els.currentWrap.querySelector('.js-preset-layer');
els.angleCta = els.currentWrap.querySelectorAll('.js-angle-cta');
};
const setProperty = function () {
// timeout
els.resizeTimeout = null;
els.resizeInnerTimeout = null;
els.viewerOpener = null;
els.viewerIframe.isHash = false;
els.viewerIframe.isIntroposeReady = false;
els.viewerIframe.isFold = false;
els.viewerIframe.resetTimeout = null;
};
const bindEvents = function () {
eventHandler.load();
eventHandler.message();
eventHandler.click();
resize.add(eventList.resize);
if (!isLow) {
eventList.setScene();
}
};
const eventHandler = {
load: function () {
window.addEventListener('DOMContentLoaded', eventList.load, {
once: true
});
},
message: function () {
window.addEventListener('message', eventList.receiveV3DMessage, false);
},
click: function () {
if (!!isLow) {
els.popupScroll.addEventListener('click', eventList.clickLayerScroll);
}
els.foldBtn && els.foldBtn.addEventListener('click', eventList.clickFold);
els.resetBtn && els.resetBtn.addEventListener('click', eventList.clickReset);
els.presetOpen && els.presetOpen.addEventListener('click', eventList.openPresetPopup);
for (let i = 0; i < els.angleCta.length; i++) {
els.angleCta[i].addEventListener('click', eventList.setAngle);
}
els.contents.addEventListener('click', function (e) {
if (e.target.classList.contains('js-reset-btn') || e.target.classList.contains('js-fold-btn') || e.target.classList.contains('js-preset-open') || e.target.closest('.js-preset-layer')) return;
eventList.closePresetPopup();
});
},
scroll: function () {
window.addEventListener('scroll', eventList.runIntroPose);
}
};
const eventList = {
load: function () {
if (!!isLow) {
eventList.innerWrapHeight();
eventList.layerScroll();
}
accessibility.fold.ariaLabel();
eventList.setFoldClass();
},
receiveV3DMessage: function (e) {
if (e.data == 'V3D.state.popOpen') {
if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') {
if (els.closeCta) {
if (!els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.add('is-popup-opened');
els.closeCta.setAttribute('tabindex', '-1');
els.closeCta.setAttribute('aria-hidden', 'true');
els.closeCta.setAttribute('disabled', 'disabled');
}
}
} else if (e.data == 'V3D.state.popClose') {
if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') {
if (els.closeCta) {
if (els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.remove('is-popup-opened');
els.closeCta.removeAttribute('tabindex');
els.closeCta.removeAttribute('aria-hidden');
els.closeCta.removeAttribute('disabled');
}
}
} else if (e.data == 'V3D.state.introPose.ready') {
if (!isLow) {
els.viewerIframe.isIntroposeReady = true;
eventHandler.scroll();
eventList.runIntroPose();
} else {
els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*');
}
} else if (e.data == 'V3D.state.localData.ready') {
els.viewerIframe && els.viewerIframe.contentWindow.postMessage(JSON.stringify(V3DLOCALDATA), '*');
} else if (e.data == 'V3D.state.actionPose.0') {
els.viewerIframe.isFold = true;
eventList.setFoldClass();
} else if (e.data == 'V3D.state.actionPose.1') {
els.viewerIframe.isFold = false;
eventList.setFoldClass();
} else if (e.data == 'V3D.event.pointerdown') {
eventList.closePresetPopup();
}
},
resize: function (currRes) {
currDevice = currRes;
if (utils.detector.isTouchDevice && !utils.detector.isIosDevice) eventList.innerWrapHeight();
eventList.layerScroll();
},
innerWrapHeight: function () {
clearTimeout(els.resizeInnerTimeout);
els.resizeInnerTimeout = setTimeout(function () {
if (els.popupInner) {
els.popupInner.style.height = parseInt(window.innerHeight * 0.9) + 'px';
}
}, 0);
},
layerScroll: function () {
clearTimeout(els.resizeTimeout);
els.resizeTimeout = setTimeout(function () {
eventList.setLayerScroll();
}, 300);
},
setLayerScroll: function () {
if (!els.popupContents) return;
if (els.popupContents.scrollHeight > els.popupContents.clientHeight) {
utils.offAccessibility(els.popupScroll);
els.popupScroll && els.popupScroll.classList.add('is-scroll-btn');
} else {
utils.onAccessibility(els.popupScroll);
els.popupScroll && els.popupScroll.classList.remove('is-scroll-btn');
}
},
clickLayerScroll: function (e) {
e && e.preventDefault();
if (e.target.matches('.js-scroll-btn')) {
let scrollDown = e.target.classList.contains('js-scroll-down'),
$popupContents = $(els.popupContents);
if (scrollDown) {
$popupContents.stop().animate({
scrollTop: $popupContents.scrollTop() + 100
}, {
duration: 300,
complete: function () {
eventList.updateLayerScroll(true);
}
});
} else {
$popupContents.stop().animate({
scrollTop: $popupContents.scrollTop() - 100
}, {
duration: 300,
complete: function () {
eventList.updateLayerScroll(true);
}
});
}
}
},
updateLayerScroll: function (isClicked) {
const offsetTop = els.popupContents.scrollTop,
layerBottom = els.popupContents.scrollHeight - els.popupContents.clientHeight;
els.popupScrollUpBtn.removeAttribute('tabindex');
els.popupScrollUpBtn.removeAttribute('aria-hidden');
els.popupScrollUpBtn.removeAttribute('disabled');
els.popupScrollDownBtn.removeAttribute('tabindex');
els.popupScrollDownBtn.removeAttribute('aria-hidden');
els.popupScrollDownBtn.removeAttribute('disabled');
if (offsetTop == 0) {
isClicked && els.popupScrollDownBtn && els.popupScrollDownBtn.focus();
els.popupScrollUpBtn.setAttribute('tabindex', '-1');
els.popupScrollUpBtn.setAttribute('aria-hidden', 'true');
els.popupScrollUpBtn.setAttribute('disabled', 'disabled');
} else if (offsetTop >= layerBottom - 1) {
isClicked && els.popupScrollUpBtn && els.popupScrollUpBtn.focus();
els.popupScrollDownBtn.setAttribute('tabindex', '-1');
els.popupScrollDownBtn.setAttribute('aria-hidden', 'true');
els.popupScrollDownBtn.setAttribute('disabled', 'disabled');
}
},
setScene: function () {
els.sceneObj = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
runIntroPose: function () {
els.sceneObj.trackAnimation(function () {
let progress = currDevice.indexOf('mobile') > -1 ? 50 : 30;
if (this.progress >= progress && !!els.viewerIframe.isIntroposeReady) {
els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*');
window.removeEventListener('scroll', eventList.runIntroPose);
}
});
},
clickFold: function () {
if (!els.viewerIframe.isFold) {
els.viewerIframe.isFold = true;
els.viewerIframe.contentWindow.postMessage('V3D.action.reverse', '*');
} else {
els.viewerIframe.isFold = false;
els.viewerIframe.contentWindow.postMessage('V3D.action', '*');
}
accessibility.fold.ariaLabel();
eventList.setFoldClass();
accessibility.fold.tagging();
},
clickReset: function () {
let viewerSrc = els.viewerIframe.getAttribute('src');
els.viewerIframe.setAttribute('src', `${viewerSrc}#reset=1`);
clearTimeout(els.viewerIframe.resetTimeout);
els.viewerIframe.resetTimeout = setTimeout(function () {
viewerSrc = viewerSrc.split('#reset=1')[0];
els.viewerIframe.setAttribute('src', viewerSrc);
}, 300);
},
openPresetPopup: function () {
if (!els.presetLayer.classList.contains('is-active')) {
els.presetOpen.classList.add('is-open');
els.presetLayer.classList.add('is-active');
els.presetOpen.setAttribute('aria-expanded', true);
els.presetClose.focus();
} else {
eventList.closePresetPopup();
}
els.presetClose && els.presetClose.addEventListener('click', eventList.closePresetPopup);
},
closePresetPopup: function (e) {
if (els.presetLayer.classList.contains('is-active')) {
els.presetOpen.classList.remove('is-open');
els.presetLayer.classList.remove('is-active');
els.presetOpen.setAttribute('aria-expanded', false);
if (e && e.target.classList.contains('js-preset-close')) {
els.presetOpen.focus();
}
}
},
setFoldClass: function () {
if (!els.viewerIframe.isFold) {
if (els.foldBtn.classList.contains('is-folded')) els.foldBtn.classList.remove('is-folded');
els.foldBtn.classList.add('is-fold');
} else {
if (els.foldBtn.classList.contains('is-fold')) els.foldBtn.classList.remove('is-fold');
els.foldBtn.classList.add('is-folded');
}
},
setAngle: function () {
let target = this,
targetAngle = target.innerText.toLowerCase();
if (targetAngle == 'front') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 0', '*');
} else if (targetAngle == 'back') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 3.141592653589793', '*');
} else if (targetAngle == 'top') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 1.5707963267948966,angleY: 3.141592653589793', '*');
} else if (targetAngle == 'bottom') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: -1.5707963267948966,angleY: 0', '*');
} else if (targetAngle == 'left') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 1.5707963267948966', '*');
} else if (targetAngle == 'right') {
els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: -1.5707963267948966', '*');
}
accessibility.selected(target);
}
};
const popupEvents = {
set: function () {
utils.layerPopup({
layerPopup: els.popup,
layerPopupClass: '.js-viewer',
openerEvent: {
element: els.viewerBtn,
},
closeCtas: [els.closeCta],
dimmed: els.popupWrap,
moveTarget: document.documentElement,
contents: els.contents,
show: {
start: function (target) {
els.popup.classList.add('is-init');
popupEvents.show(target.openerCta);
},
end: function () {
if (utils.detector.isIosDevice) els.popup.style.display = 'block';
els.popup.classList.add('is-open');
}
},
hide: {
start: function () {
els.popup.classList.remove('is-open');
},
end: function () {
setTimeout(function () {
els.popup.classList.remove('is-init');
}, 300);
popupEvents.hide();
}
}
});
},
show: function (viewerOpener) {
if (viewerOpener.classList.contains('viewer-btn')) {
els.viewerIframe.isHash = false;
els.viewerOpener = viewerOpener;
} else {
els.viewerIframe.isHash = true;
els.viewerOpener = els.viewerBtn;
}
els.viewerIframe.setAttribute('src', common.getViewerUrl());
},
hide: function () {
els.viewerIframe.setAttribute('src', 'about:blank');
if (els.viewerIframe.isHash) {
setTimeout(function () {
els.viewerOpener.focus();
}, 300);
}
},
};
const accessibility = {
fold: {
ariaLabel: function () {
if (!els.viewerIframe.isFold) {
els.foldBtn.setAttribute('aria-label', `${els.foldBtn.getAttribute('data-unfolded')}`);
} else {
els.foldBtn.setAttribute('aria-label', `${els.foldBtn.getAttribute('data-folded')}`);
}
},
tagging: function () {
let dataOmni = els.foldBtn.getAttribute('data-omni'),
gaLa = els.foldBtn.getAttribute('ga-la');
if (!els.viewerIframe.isFold) {
els.foldBtn.setAttribute('data-omni', dataOmni.replace('folded', 'unfolded'));
els.foldBtn.setAttribute('ga-la', gaLa.replace('folded', 'unfolded'));
} else {
els.foldBtn.setAttribute('data-omni', dataOmni.replace('unfolded', 'folded'));
els.foldBtn.setAttribute('ga-la', gaLa.replace('unfolded', 'folded'));
}
},
},
selected: function (target) {
for (let i = 0; i < els.angleCta.length; i++) {
els.angleCta[i].removeAttribute('title');
if (els.angleCta[i].classList.contains('is-selected')) {
els.angleCta[i].classList.remove('is-selected');
}
}
if (!target.classList.contains('is-selected')) {
target.classList.add('is-selected');
}
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
};
return {
init: init
}
})();
})();
flagship.features.initialize = (function () {
window.flagship.common.resize.bindEvent();
const init = function () {
flagship.features.clickToVideo.init();
flagship.features.headline.init();
flagship.features.howtoPopup.init();
flagship.features.oneColumnCarousel.init();
flagship.features.scrollVideo.init();
flagship.features.threeColumnCarousel.init();
flagship.features.aiOverview.init();
flagship.features.cameraSpec.init();
flagship.features.faq.init();
flagship.features.highlightsZone.init();
flagship.features.interactiveCircleToSearch.init();
flagship.features.interactiveInterpreter.init();
flagship.features.interactiveNoteAssist.init();
flagship.features.interactive.init();
flagship.features.moveFeature.init();
flagship.features.performance.init();
flagship.features.photoAssist.init();
flagship.features.viewer.init();
};
return {
init: init
}
})();
flagship.features.initialize.init();
});
Pendaftaran Produk
Pendaftaran produk yang cepat dan mudah.. Dapatkan layanan dan kiat khusus terkini.
Serial Number / IMEI
Masukkan Nomor Seri Anda/IMEI
Pemindaian QR
Scan the QR code on your products for easy registration.
* Fitur ini hanya didukung pada Samsung Home Appliances dan monitor B2C non-pintar.
Masukkan Nomor Seri Anda/IMEI
Pendaftaran produk yang cepat dan mudah.
Harap masukkan 11 atau 15 digit angka.
Produk ini sudah terdaftar. Pastikan Anda memasukkan nomor seri atau IMEI yang benar.
Tipe
Subtipe
Kategori
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Pendaftaran produk hampir selesai! !
NS/IMEI yang dimasukkan benar. Sekarang pilih model produk Anda.
Pencarian yang Disarankan
No result. Please try again.
Galaxy Book3 Ultra
SM-G996BZKGEUA
Serial Number: R3CR508WNAH
Perangkat yang Anda gunakan saat ini tidak mendukung fungsi kamera.