Move data
fast and easy
with Smart Switch
The content on your previous phone or tablet - favorite photos, contacts, calendar events, notes, device settings and more
- stays with you when you switch to a new Samsung Galaxy.
* Transferable data may vary depending on the device OS (Android or iOS), OS version, and/or connection option.
Why Samsung Smart Switch?
Smart Switch seamlessly transfers multiple types of data to your new Samsung Galaxy from different devices in the way that works best for you.
Move data from different OS
Regardless of whether you’re coming from another Galaxy, iOS or other Android device, the data you care about can now be brought over to your new Galaxy effortlessly.
* Check technical requirements for Smart Switch compatible devices from the FAQ section.
Switch through many ways
Smart Switch lets you choose from many options to connect your devices - from a USB cable, wireless connection, storage device to PC and more.
* Available connection option may vary depending on device OS, manufacturer or availability of expandable storage.
Switch various types of data
Smart Switch migrates different types of files to your new Galaxy, including photos, videos, notes, calendar events and even device settings.
* Transferable data may vary depending on the device OS (Android or iOS), OS version, and/or connection option.
How to transfer
Ready to transfer data? First, prepare your previous device and then select the preferred way to connect your new Samsung Galaxy.
What is your previous device?
GALAXY
How would you like to connect?
Use Wi-Fi or a USB cable
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on both devices. The app is pre-installed but also downloadable from the Galaxy Store.
Smart Switch will run when devices are at least 20% charged to ensure safe data transfer.
Step 1 : Launch
On your new Galaxy device, open the Smart Switch app. Tap Receive data, and then tap Galaxy.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
Step 2 : Connect
Select a wireless connection or use a USB cable to connect your old device to your new Galaxy device.
- * If you have a large amount of data to transfer, a wired connection is recommended because it is relatively faster. Make sure your devices are properly charged beforehand since connecting to a charger is not available during such transfer.
- * If you have a large amount of data to transfer, a wired connection is recommended because it is relatively faster. Make sure your devices are properly charged beforehand since connecting to a charger is not available during such transfer.
Step 3 : Select
Select the data you want to transfer. When you are ready to start, tap Transfer.
Step 4 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
Backup and restore from external storage
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on your devices. The app is pre-installed but also downloadable from the Galaxy Store.
And then insert the microSD card or connect the USB storage device to your Galaxy phone or tablet.
Step 1 : Launch
On your phone, launch the Smart Switch app and tap the SD card icon in the upper right corner.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
Step 2 : Select
Tap SD Card under Back up to, and select the data you want to back up from your old device.
- * If there is not enough space on your external storage, you may need to deselect some items. Or, you may clear the external storage to get enough space for the data to transfer
- * If there is not enough space on your external storage, you may need to deselect some items. Or, you may clear the external storage to get enough space for the data to transfer
Step 3 : Back up
Follow the on-screen instructions. When finished, tap Done and then remove the external storage from the old device.
Step 4 : Connect
Next, insert the external storage into the new Galaxy device to receive data. Launch the Smart Switch app, and tap the SD card icon.
Step 5 : Restore
Tap Restore. Select what you want to restore, and then tap Next.
Step 6 : Transfer
The transfer will begin shortly. Tap Next and then Done when it’s finished.
Backup and restore from PC or Mac
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on your devices.
The app for Galaxy phone or tablet is pre-installed but also downloadable from the Galaxy Store. For the Smart Switch PC app, download and install it on your Windows PC or Mac.
Smart Switch PC download link :
WindowsMac
- * Smart Switch will run when devices are at least 20% charged to ensure safe data transfer.
- * Smart Switch will run when devices are at least 20% charged to ensure safe data transfer.
Step 1 : Connect and launch
Connect your previous phone or tablet to your PC using a USB cable.
On your PC, launch the Smart Switch app and tap Backup to save data from the old device.
Step 2 : Select to back up
Choose the data you want to back up. "Select all" is the default option, but you can deselect some items if you'd like. Clicking on a category will allow you to select specific items in that category. Tap Backup when you are ready.
Step 3 : Back up
The transfer will begin shortly. Tap Done when it’s finished.
Step 4 : Connect and restore
Next, connect your new Galaxy device to your PC using a USB cable.
On your PC, launch Smart Switch and tap Restore to transfer data to the new device.
Step 5 : Select to restore
Select the data you want to restore, and tap Restore.
Step 6 : Transfer
The transfer will begin shortly. Tap OK when the restore is complete.
IOS
How would you like to connect?
Use a USB cable
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on the Galaxy device. The app is pre-installed but also downloadable from the Galaxy Store. You don’t need to install the app on an iOS device.
Check if both devices are properly charged before connecting with a USB cable because connecting to a charger is not available during the transfer.
Step 1 : Launch
On your new Galaxy device, launch the Smart Switch app. Tap Receive data, and then tap iPhone/iPad.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
Step 2 : Connect
Use a Lightning-to-USB-C or USB-C-to-USB-C cable to connect your previous iOS device to your new Galaxy device. If you are using a USB-A cable like many standard charging cables, you can use the OTG adapter to plug into the USB-C port.
When the “Trust This Computer?” alert appears on your iPhone or iPad, tap “Trust”.
- * OTG adapter sold separately
- * OTG adapter sold separately
Step 3 : Select
Select the data you want to transfer. When you are ready to start, tap Transfer.
Step 4 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
Additional tips
You can also transfer your WhatsApp chats and photos on your iOS device to your new Samsung Galaxy.
Take the following steps:
- 1. When selecting the data to transfer, choose “WhatsApp” under the Apps menu, and tap Transfer.
- 2. Scan the QR code and tap Start on your iPhone.
- * Requires the latest version of WhatsApp on iOS device.
- * WhatsApp chat history can be transferred only before signing into WhatsApp on the new device. If WhatsApp is logged in before migration or before Smart Switch is done transferring the data, then the app data cannot be transferred.
- * Requires the latest version of WhatsApp on iOS device.
- * WhatsApp chat history can be transferred only before signing into WhatsApp on the new device. If WhatsApp is logged in before migration or before Smart Switch is done transferring the data, then the app data cannot be transferred.
Use Wi-Fi
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on both devices. The app comes pre-installed on new Galaxy devices but is also downloadable from the Galaxy Store. Download the Smart Switch app from Apple's App Store and install it on your old iPhone or iPad.
Smart Switch will run when devices are at least 20% charged to ensure safe data transfer.
Smart Switch mobile download link :
Step 1 : Launch
On your new Galaxy device, launch the Smart Switch app. Tap "Receive data" and then tap "iPhone/iPad."
- * You can find the Smart Switch app on your Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or by going to Settings > Accounts and backup > Smart Switch.
- * You can find the Smart Switch app on your Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or by going to Settings > Accounts and backup > Smart Switch.
Step 2 : Connect
Tap "Transfer wirelessly" to connect your iOS device to your new Galaxy device.
- * If you have a large amount of data to transfer, it is recommended to use a wired connection, as it can transfer a larger amount of data at once. Make sure your devices are properly charged beforehand since connecting to a charger is not available during such a transfer.
- * If you have a large amount of data to transfer, it is recommended to use a wired connection, as it can transfer a larger amount of data at once. Make sure your devices are properly charged beforehand since connecting to a charger is not available during such a transfer.
Step 2 : Connect
Download the Smart Switch app by tapping "Get Smart Switch on your iPhone or iPad" and scanning the QR code.
Step 2 : Connect
Open the Smart Switch app on your iPhone or iPad, and tap "Transfer wirelessly."
Then, scan the QR code on your new Samsung Galaxy phone.
Step 3 : Select
Select the data you want to transfer. When you are ready to start, tap "Transfer."
You can transfer your Contacts, Calendar, Images and Videos.
Step 4 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
- * Keep Smart Switch open on your iPhone or iPad while transferring
- * Keep Smart Switch open on your iPhone or iPad while transferring
Transfer iTunes (Finder) backup data from PC or Mac
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on your devices.
The app for Galaxy phone or tablet is pre-installed but also downloadable from the Galaxy Store. For the Smart Switch PC app, download and install it on your Windows PC or Mac.
Smart Switch PC download link :
WindowsMac
Step 1 : Back up
To make sure all of your latest data is ready for Smart Switch, back up your iOS device with iTunes (Finder) on your PC or Mac.
Step 2 : Connect
Connect your phone to your PC using a USB cable. Launch Smart Switch on your PC, and tap Restore.
Step 3 : Restore
Select the iTunes (Finder) backup data you would like to restore and tap Restore.
Step 4 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
Move iCloud data
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on your Galaxy phone or tablet. The app is pre-installed but also downloadable from the Galaxy Store.
Smart Switch will run when devices are at least 20% charged to ensure a safe data transfer.
Step 1 : Sync to iCloud
To make sure all of your latest data is ready for Smart Switch, sync your iOS device to iCloud.
- 1. On your iPhone or iPad, go to Settings, tap your name, then tap iCloud. Then tap Show All.
- 2. Select Photos and turn on Sync this iPhone (or iPad).
- 3. Go back to iCloud and select iCloud Drive, then turn on Sync this iPhone (or iPad).
- 4. Go back to iCloud and turn on Pages, Numbers and Keynote.
- 5. Go back to iCloud and select Notes, then turn on Sync this iPhone (or iPad).
- 6. Go back to iCloud and turn on Contacts, Calendars and Reminders.
Step 2 : Launch
On your new device, launch the Smart Switch app and tap Receive data. Then tap iPhone/iPad.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
Step 3 : Connect
Tap Get data from iCloud instead. Enter your Apple ID or email address and password, and tap Sign in to iCloud.
Step 4 : Select
Select the iCloud data you want to transfer, and then tap Transfer.
Step 5 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
Other Android
How would you like to connect?
Use Wi-Fi or a USB cable
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on both devices. The app is pre-installed on the new Galaxy device but also downloadable from the Galaxy Store or the Google Play Store.
Smart Switch will run when devices are at least 20% charged to ensure safe data transfer.
Step 1 : Launch
On your new Galaxy phone, launch the Smart Switch app and tap Receive data. And then tap Galaxy/Android.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
- * You can find the Smart Switch app on the Galaxy phone or tablet by navigating to the Samsung folder on the Apps screen, or going to Settings > Accounts and backup > Smart Switch.
Step 2 : Connect
Select a wireless connection or use a USB cable to connect your old device to your new Galaxy phone.
- * If you have a large amount of data to transfer, a wired connection is recommended because it is relatively faster. Make sure your devices are properly charged beforehand since connecting to a charger is not available during such transfer.
- * If you have a large amount of data to transfer, a wired connection is recommended because it is relatively faster. Make sure your devices are properly charged beforehand since connecting to a charger is not available during such transfer.
Step 3 : Select
Select the data you want to transfer. When you are ready to start, tap Transfer.
Step 4 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
Backup and restore from external storage
Before you begin
Make sure you have the most up-to-date version of the Smart Switch app installed on your devices. The app is pre-installed on the new Galaxy device but also downloadable from the Galaxy Store or the Google Play Store.
And then insert the microSD card or connect the USB storage device to your old device.
Step 1 : Launch
On your old device, launch the Smart Switch app and tap the SD card icon on the upper right corner. And then tap SD Card under Back up to.
- * The Smart Switch app is downloadable from Galaxy Store or Google Play Store.
- * The Smart Switch app is downloadable from Galaxy Store or Google Play Store.
Step 2 : Select and back up
Select the data you want to back up and tap Next. When transfer is complete, tap Done.
- * If there is not enough space on your external storage, you may need to deselect some items. Or, you may clear the external storage to get enough space for the data to transfer
- * If there is not enough space on your external storage, you may need to deselect some items. Or, you may clear the external storage to get enough space for the data to transfer
Step 3 : Connect
Next, insert a SD card or connect a USB storage device to your new Galaxy phone. Launch the Smart Switch app and tap the SD card icon on the upper right corner.
Step 4 : Restore
Tap Restore. Select what you want to restore, and then tap Next.
Step 5 : Transfer
The transfer will begin shortly. Tap Done when it’s finished.
').addClass(s.options.dotsClass), e = 0; e <= s.getDotCount(); e += 1) i.find("ul").append(t('
').append(s.options.customPaging.call(this, s, e))); s.$dots = i.appendTo(s.options.appendDots) } }, e.prototype.buildOut = function () { var e = this; e.$slides = e.$slider.children(e.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), e.slideCount = e.$slides.length, e.$slides.each(function (e, i) { t(i).attr("data-slick-index", e).data("originalStyling", t(i).attr("style") || "") }), e.$slider.addClass("slick-slider"), e.$slideTrack = 0 === e.slideCount ? t('
').appendTo(e.$slider) : e.$slides.wrapAll('
').parent(), e.$list = e.$slideTrack.wrap('
').parent(), e.$slideTrack.css("opacity", 0), (e.options.centerMode === !0 || e.options.swipeToSlide === !0) && (e.options.slidesToScroll = 1), t("img[data-lazy]", e.$slider).not("[src]").addClass("slick-loading"), e.setupInfinite(), e.buildArrows(), e.buildDots(), e.updateDots(), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), e.options.draggable === !0 && e.$list.addClass("draggable") }, e.prototype.buildRows = function () { var t, e, i, s, n, r, o, a = this; if (s = document.createDocumentFragment(), r = a.$slider.children(), a.options.rows > 1) { for (o = a.options.slidesPerRow * a.options.rows, n = Math.ceil(r.length / o), t = 0; n > t; t++) { var l = document.createElement("div"); for (e = 0; e < a.options.rows; e++) { var h = document.createElement("div"); for (i = 0; i < a.options.slidesPerRow; i++) { var c = t * o + (e * a.options.slidesPerRow + i); r.get(c) && h.appendChild(r.get(c)) } l.appendChild(h) } s.appendChild(l) } a.$slider.empty().append(s), a.$slider.children().children().children().css({ width: 100 / a.options.slidesPerRow + "%", display: "inline-block" }) } }, e.prototype.checkResponsive = function (e, i) { var s, n, r, o = this, a = !1, l = o.$slider.width(), h = window.innerWidth || t(window).width(); if ("window" === o.respondTo ? r = h : "slider" === o.respondTo ? r = l : "min" === o.respondTo && (r = Math.min(h, l)), o.options.responsive && o.options.responsive.length && null !== o.options.responsive) { n = null; for (s in o.breakpoints) o.breakpoints.hasOwnProperty(s) && (o.originalSettings.mobileFirst === !1 ? r < o.breakpoints[s] && (n = o.breakpoints[s]) : r > o.breakpoints[s] && (n = o.breakpoints[s])); null !== n ? null !== o.activeBreakpoint ? (n !== o.activeBreakpoint || i) && (o.activeBreakpoint = n, "unslick" === o.breakpointSettings[n] ? o.unslick(n) : (o.options = t.extend({}, o.originalSettings, o.breakpointSettings[n]), e === !0 && (o.currentSlide = o.options.initialSlide), o.refresh(e)), a = n) : (o.activeBreakpoint = n, "unslick" === o.breakpointSettings[n] ? o.unslick(n) : (o.options = t.extend({}, o.originalSettings, o.breakpointSettings[n]), e === !0 && (o.currentSlide = o.options.initialSlide), o.refresh(e)), a = n) : null !== o.activeBreakpoint && (o.activeBreakpoint = null, o.options = o.originalSettings, e === !0 && (o.currentSlide = o.options.initialSlide), o.refresh(e), a = n), e || a === !1 || o.$slider.trigger("breakpoint", [o, a]) } }, e.prototype.changeSlide = function (e, i) { var s, n, r, o = this, a = t(e.currentTarget); switch (a.is("a") && e.preventDefault(), a.is("li") || (a = a.closest("li")), r = o.slideCount % o.options.slidesToScroll !== 0, s = r ? 0 : (o.slideCount - o.currentSlide) % o.options.slidesToScroll, e.data.message) { case "previous": n = 0 === s ? o.options.slidesToScroll : o.options.slidesToShow - s, o.slideCount > o.options.slidesToShow && o.slideHandler(o.currentSlide - n, !1, i); break; case "next": n = 0 === s ? o.options.slidesToScroll : s, o.slideCount > o.options.slidesToShow && o.slideHandler(o.currentSlide + n, !1, i); break; case "index": var l = 0 === e.data.index ? 0 : e.data.index || a.index() * o.options.slidesToScroll; o.slideHandler(o.checkNavigable(l), !1, i), a.children().trigger("focus"); break; default: return } }, e.prototype.checkNavigable = function (t) { var e, i, s = this; if (e = s.getNavigableIndexes(), i = 0, t > e[e.length - 1]) t = e[e.length - 1]; else for (var n in e) { if (t < e[n]) { t = i; break } i = e[n] } return t }, e.prototype.cleanUpEvents = function () { var e = this; e.options.dots && null !== e.$dots && t("li", e.$dots).off("click.slick", e.changeSlide).off("mouseenter.slick", t.proxy(e.interrupt, e, !0)).off("mouseleave.slick", t.proxy(e.interrupt, e, !1)), e.$slider.off("focus.slick blur.slick"), e.options.arrows === !0 && e.slideCount > e.options.slidesToShow && (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide), e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide)), e.$list.off("touchstart.slick mousedown.slick", e.swipeHandler), e.$list.off("touchmove.slick mousemove.slick", e.swipeHandler), e.$list.off("touchend.slick mouseup.slick", e.swipeHandler), e.$list.off("touchcancel.slick mouseleave.slick", e.swipeHandler), e.$list.off("click.slick", e.clickHandler), t(document).off(e.visibilityChange, e.visibility), e.cleanUpSlideEvents(), e.options.accessibility === !0 && e.$list.off("keydown.slick", e.keyHandler), e.options.focusOnSelect === !0 && t(e.$slideTrack).children().off("click.slick", e.selectHandler), t(window).off("orientationchange.slick.slick-" + e.instanceUid, e.orientationChange), t(window).off("resize.slick.slick-" + e.instanceUid, e.resize), t("[draggable!=true]", e.$slideTrack).off("dragstart", e.preventDefault), t(window).off("load.slick.slick-" + e.instanceUid, e.setPosition), t(document).off("ready.slick.slick-" + e.instanceUid, e.setPosition) }, e.prototype.cleanUpSlideEvents = function () { var e = this; e.$list.off("mouseenter.slick", t.proxy(e.interrupt, e, !0)), e.$list.off("mouseleave.slick", t.proxy(e.interrupt, e, !1)) }, e.prototype.cleanUpRows = function () { var t, e = this; e.options.rows > 1 && (t = e.$slides.children().children(), t.removeAttr("style"), e.$slider.empty().append(t)) }, e.prototype.clickHandler = function (t) { var e = this; e.shouldClick === !1 && (t.stopImmediatePropagation(), t.stopPropagation(), t.preventDefault()) }, e.prototype.destroy = function (e) { var i = this; i.autoPlayClear(), i.touchObject = {}, i.cleanUpEvents(), t(".slick-cloned", i.$slider).detach(), i.$dots && i.$dots.remove(), i.$prevArrow && i.$prevArrow.length && (i.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), i.htmlExpr.test(i.options.prevArrow) && i.$prevArrow.remove()), i.$nextArrow && i.$nextArrow.length && (i.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), i.htmlExpr.test(i.options.nextArrow) && i.$nextArrow.remove()), i.$slides && (i.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function () { t(this).attr("style", t(this).data("originalStyling")) }).find("button").removeAttr("title"), i.$slideTrack.children(this.options.slide).detach(), i.$slideTrack.detach(), i.$list.detach(), i.$slider.append(i.$slides)), i.cleanUpRows(), i.$slider.removeClass("slick-slider"), i.$slider.removeClass("slick-initialized"), i.$slider.removeClass("slick-dotted"), i.unslicked = !0, e || i.$slider.trigger("destroy", [i]) }, e.prototype.disableTransition = function (t) { var e = this, i = {}; i[e.transitionType] = "", e.options.fade === !1 ? e.$slideTrack.css(i) : e.$slides.eq(t).css(i) }, e.prototype.fadeSlide = function (t, e) { var i = this; i.cssTransitions === !1 ? (i.$slides.eq(t).css({ zIndex: i.options.zIndex }), i.$slides.eq(t).animate({ opacity: 1 }, i.options.speed, i.options.easing, e)) : (i.applyTransition(t), i.$slides.eq(t).css({ opacity: 1, zIndex: i.options.zIndex }), e && setTimeout(function () { i.disableTransition(t), e.call() }, i.options.speed)) }, e.prototype.fadeSlideOut = function (t) { var e = this; e.cssTransitions === !1 ? e.$slides.eq(t).animate({ opacity: 0, zIndex: e.options.zIndex - 2 }, e.options.speed, e.options.easing) : (e.applyTransition(t), e.$slides.eq(t).css({ opacity: 0, zIndex: e.options.zIndex - 2 })) }, e.prototype.filterSlides = e.prototype.slickFilter = function (t) { var e = this; null !== t && (e.$slidesCache = e.$slides, e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.filter(t).appendTo(e.$slideTrack), e.reinit()) }, e.prototype.focusHandler = function () { var e = this; e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function (i) { i.stopImmediatePropagation(); var s = t(this); setTimeout(function () { e.options.pauseOnFocus && (e.focussed = s.is(":focus"), e.autoPlay()) }, 0) }) }, e.prototype.getCurrent = e.prototype.slickCurrentSlide = function () { var t = this; return t.currentSlide }, e.prototype.getDotCount = function () { var t = this, e = 0, i = 0, s = 0; if (t.options.infinite === !0) for (; e < t.slideCount;) ++s, e = i + t.options.slidesToScroll, i += t.options.slidesToScroll <= t.options.slidesToShow ? t.options.slidesToScroll : t.options.slidesToShow; else if (t.options.centerMode === !0) s = t.slideCount; else if (t.options.asNavFor) for (; e < t.slideCount;) ++s, e = i + t.options.slidesToScroll, i += t.options.slidesToScroll <= t.options.slidesToShow ? t.options.slidesToScroll : t.options.slidesToShow; else s = 1 + Math.ceil((t.slideCount - t.options.slidesToShow) / t.options.slidesToScroll); return s - 1 }, e.prototype.getLeft = function (t) { var e, i, s, n = this, r = 0; return n.slideOffset = 0, i = n.$slides.first().outerHeight(!0), n.options.infinite === !0 ? (n.slideCount > n.options.slidesToShow && (n.slideOffset = n.slideWidth * n.options.slidesToShow * -1, r = i * n.options.slidesToShow * -1), n.slideCount % n.options.slidesToScroll !== 0 && t + n.options.slidesToScroll > n.slideCount && n.slideCount > n.options.slidesToShow && (t > n.slideCount ? (n.slideOffset = (n.options.slidesToShow - (t - n.slideCount)) * n.slideWidth * -1, r = (n.options.slidesToShow - (t - n.slideCount)) * i * -1) : (n.slideOffset = n.slideCount % n.options.slidesToScroll * n.slideWidth * -1, r = n.slideCount % n.options.slidesToScroll * i * -1))) : t + n.options.slidesToShow > n.slideCount && (n.slideOffset = (t + n.options.slidesToShow - n.slideCount) * n.slideWidth, r = (t + n.options.slidesToShow - n.slideCount) * i), n.slideCount <= n.options.slidesToShow && (n.slideOffset = 0, r = 0), n.options.centerMode === !0 && n.options.infinite === !0 ? n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2) - n.slideWidth : n.options.centerMode === !0 && (n.slideOffset = 0, n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2)), e = n.options.vertical === !1 ? t * n.slideWidth * -1 + n.slideOffset : t * i * -1 + r, n.options.variableWidth === !0 && (s = n.slideCount <= n.options.slidesToShow || n.options.infinite === !1 ? n.$slideTrack.children(".slick-slide").eq(t) : n.$slideTrack.children(".slick-slide").eq(t + n.options.slidesToShow), e = n.options.rtl === !0 ? s[0] ? -1 * (n.$slideTrack.width() - s[0].offsetLeft - s.width()) : 0 : s[0] ? -1 * s[0].offsetLeft : 0, n.options.centerMode === !0 && (s = n.slideCount <= n.options.slidesToShow || n.options.infinite === !1 ? n.$slideTrack.children(".slick-slide").eq(t) : n.$slideTrack.children(".slick-slide").eq(t + n.options.slidesToShow + 1), e = n.options.rtl === !0 ? s[0] ? -1 * (n.$slideTrack.width() - s[0].offsetLeft - s.width()) : 0 : s[0] ? -1 * s[0].offsetLeft : 0, e += (n.$list.width() - s.outerWidth()) / 2)), e }, e.prototype.getOption = e.prototype.slickGetOption = function (t) { var e = this; return e.options[t] }, e.prototype.getNavigableIndexes = function () { var t, e = this, i = 0, s = 0, n = []; for (e.options.infinite === !1 ? t = e.slideCount : (i = -1 * e.options.slidesToScroll, s = -1 * e.options.slidesToScroll, t = 2 * e.slideCount); t > i;) n.push(i), i = s + e.options.slidesToScroll, s += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow; return n }, e.prototype.getSlick = function () { return this }, e.prototype.getSlideCount = function () { var e, i, s, n = this; return s = n.options.centerMode === !0 ? n.slideWidth * Math.floor(n.options.slidesToShow / 2) : 0, n.options.swipeToSlide === !0 ? (n.$slideTrack.find(".slick-slide").each(function (e, r) { if(n.options.rtl === true) return (t(n.$slideTrack[0]).outerWidth() - r.offsetLeft) - s - t(r).outerWidth() / 2 > -1 * n.swipeLeft ? (i = r, !1) : void 0; if(n.options.rtl === false) return r.offsetLeft - s + t(r).outerWidth() / 2 > -1 * n.swipeLeft ? (i = r, !1) : void 0; }), e = Math.abs(t(i).attr("data-slick-index") - n.currentSlide) || 1) : n.options.slidesToScroll }, e.prototype.goTo = e.prototype.slickGoTo = function (t, e) { var i = this; i.changeSlide({ data: { message: "index", index: parseInt(t) } }, e) }, e.prototype.init = function (e) { var i = this; t(i.$slider).hasClass("slick-initialized") || (t(i.$slider).addClass("slick-initialized"), i.buildRows(), i.buildOut(), i.setProps(), i.startLoad(), i.loadSlider(), i.initializeEvents(), i.updateArrows(), i.updateDots(), i.checkResponsive(!0), i.focusHandler()), e && i.$slider.trigger("init", [i]), i.options.accessibility === !0 && i.initADA(), i.options.autoplay && (i.paused = !1, i.autoPlay()) }, e.prototype.initADA = function () { var e = this; e.$slideTrack.find(".slick-cloned").attr({ tabindex: "-1" }), e.$slideTrack.attr("data-role", "listbox"), e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function (e) { t(this).attr({ "data-role": "option" }) }), null !== e.$dots && e.$dots.attr("data-role", "tablist").find("li").each(function (i) { t(this).attr({ "data-role": "presentation", id: "slick-slide" + e.instanceUid + i }) }).find("button").attr("data-role", "button").end().closest("div").attr("data-role", "toolbar"), e.activateADA() }, e.prototype.initArrowEvents = function () { var t = this; t.options.arrows === !0 && t.slideCount > t.options.slidesToShow && (t.$prevArrow.off("click.slick").on("click.slick", { message: "previous" }, t.changeSlide), t.$nextArrow.off("click.slick").on("click.slick", { message: "next" }, t.changeSlide)) }, e.prototype.initDotEvents = function () { var e = this; e.options.dots === !0 && e.slideCount > e.options.slidesToShow && t("li", e.$dots).on("click.slick", { message: "index" }, e.changeSlide), e.options.dots === !0 && e.options.pauseOnDotsHover === !0 && t("li", e.$dots).on("mouseenter.slick", t.proxy(e.interrupt, e, !0)).on("mouseleave.slick", t.proxy(e.interrupt, e, !1)) }, e.prototype.initSlideEvents = function () { var e = this; e.options.pauseOnHover && (e.$list.on("mouseenter.slick", t.proxy(e.interrupt, e, !0)), e.$list.on("mouseleave.slick", t.proxy(e.interrupt, e, !1))) }, e.prototype.initializeEvents = function () { var e = this; e.initArrowEvents(), e.initDotEvents(), e.initSlideEvents(), e.$list.on("touchstart.slick mousedown.slick", { action: "start" }, e.swipeHandler), e.$list.on("touchmove.slick mousemove.slick", { action: "move" }, e.swipeHandler), e.$list.on("touchend.slick mouseup.slick", { action: "end" }, e.swipeHandler), e.$list.on("touchcancel.slick mouseleave.slick", { action: "end" }, e.swipeHandler), e.$list.on("click.slick", e.clickHandler), t(document).on(e.visibilityChange, t.proxy(e.visibility, e)), e.options.accessibility === !0 && e.$list.on("keydown.slick", e.keyHandler), e.options.focusOnSelect === !0 && t(e.$slideTrack).children().on("click.slick", e.selectHandler), t(window).on("orientationchange.slick.slick-" + e.instanceUid, t.proxy(e.orientationChange, e)), t(window).on("resize.slick.slick-" + e.instanceUid, t.proxy(e.resize, e)), t("[draggable!=true]", e.$slideTrack).on("dragstart", e.preventDefault), t(window).on("load.slick.slick-" + e.instanceUid, e.setPosition), t(document).on("ready.slick.slick-" + e.instanceUid, e.setPosition) }, e.prototype.initUI = function () { var t = this; t.options.arrows === !0 && t.slideCount > t.options.slidesToShow && (t.$prevArrow.show(), t.$nextArrow.show()), t.options.dots === !0 && t.slideCount > t.options.slidesToShow && t.$dots.show() }, e.prototype.keyHandler = function (t) { var e = this; t.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === t.keyCode && e.options.accessibility === !0 ? e.changeSlide({ data: { message: e.options.rtl === !0 ? "next" : "previous" } }) : 39 === t.keyCode && e.options.accessibility === !0 && e.changeSlide({ data: { message: e.options.rtl === !0 ? "previous" : "next" } })) }, e.prototype.lazyLoad = function () { function e(e) { t("img[data-lazy]", e).each(function () { var e = t(this), i = t(this).attr("data-lazy"), s = document.createElement("img"); s.onload = function () { e.animate({ opacity: 0 }, 100, function () { e.attr("src", i).animate({ opacity: 1 }, 200, function () { e.removeAttr("data-lazy").removeClass("slick-loading") }), o.$slider.trigger("lazyLoaded", [o, e, i]) }) }, s.onerror = function () { e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), o.$slider.trigger("lazyLoadError", [o, e, i]) }, s.src = i }) } var i, s, n, r, o = this; o.options.centerMode === !0 ? o.options.infinite === !0 ? (n = o.currentSlide + (o.options.slidesToShow / 2 + 1), r = n + o.options.slidesToShow + 2) : (n = Math.max(0, o.currentSlide - (o.options.slidesToShow / 2 + 1)), r = 2 + (o.options.slidesToShow / 2 + 1) + o.currentSlide) : (n = o.options.infinite ? o.options.slidesToShow + o.currentSlide : o.currentSlide, r = Math.ceil(n + o.options.slidesToShow), o.options.fade === !0 && (n > 0 && n--, r <= o.slideCount && r++)), i = o.$slider.find(".slick-slide").slice(n, r), e(i), o.slideCount <= o.options.slidesToShow ? (s = o.$slider.find(".slick-slide"), e(s)) : o.currentSlide >= o.slideCount - o.options.slidesToShow ? (s = o.$slider.find(".slick-cloned").slice(0, o.options.slidesToShow), e(s)) : 0 === o.currentSlide && (s = o.$slider.find(".slick-cloned").slice(-1 * o.options.slidesToShow), e(s)) }, e.prototype.loadSlider = function () { var t = this; t.setPosition(), t.$slideTrack.css({ opacity: 1 }), t.$slider.removeClass("slick-loading"), t.initUI(), "progressive" === t.options.lazyLoad && t.progressiveLazyLoad() }, e.prototype.next = e.prototype.slickNext = function () { var t = this; t.changeSlide({ data: { message: "next" } }) }, e.prototype.orientationChange = function () { var t = this; t.checkResponsive(), t.setPosition() }, e.prototype.pause = e.prototype.slickPause = function () { var t = this; t.autoPlayClear(), t.paused = !0 }, e.prototype.play = e.prototype.slickPlay = function () { var t = this; t.autoPlay(), t.options.autoplay = !0, t.paused = !1, t.focussed = !1, t.interrupted = !1 }, e.prototype.postSlide = function (t) { var e = this; e.unslicked || (e.$slider.trigger("afterChange", [e, t]), e.animating = !1, e.setPosition(), e.swipeLeft = null, e.options.autoplay && e.autoPlay(), e.options.accessibility === !0 && e.initADA()) }, e.prototype.prev = e.prototype.slickPrev = function () { var t = this; t.changeSlide({ data: { message: "previous" } }) }, e.prototype.preventDefault = function (t) { t.preventDefault() }, e.prototype.progressiveLazyLoad = function (e) { e = e || 1; var i, s, n, r = this, o = t("img[data-lazy]", r.$slider); o.length ? (i = o.first(), s = i.attr("data-lazy"), n = document.createElement("img"), n.onload = function () { i.attr("src", s).removeAttr("data-lazy").removeClass("slick-loading"), r.options.adaptiveHeight === !0 && r.setPosition(), r.$slider.trigger("lazyLoaded", [r, i, s]), r.progressiveLazyLoad() }, n.onerror = function () { 3 > e ? setTimeout(function () { r.progressiveLazyLoad(e + 1) }, 500) : (i.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), r.$slider.trigger("lazyLoadError", [r, i, s]), r.progressiveLazyLoad()) }, n.src = s) : r.$slider.trigger("allImagesLoaded", [r]) }, e.prototype.refresh = function (e) { var i, s, n = this; s = n.slideCount - n.options.slidesToShow, !n.options.infinite && n.currentSlide > s && (n.currentSlide = s), n.slideCount <= n.options.slidesToShow && (n.currentSlide = 0), i = n.currentSlide, n.destroy(!0), t.extend(n, n.initials, { currentSlide: i }), n.init(), e || n.changeSlide({ data: { message: "index", index: i } }, !1) }, e.prototype.registerBreakpoints = function () { var e, i, s, n = this, r = n.options.responsive || null; if ("array" === t.type(r) && r.length) { n.respondTo = n.options.respondTo || "window"; for (e in r) if (s = n.breakpoints.length - 1, i = r[e].breakpoint, r.hasOwnProperty(e)) { for (; s >= 0;) n.breakpoints[s] && n.breakpoints[s] === i && n.breakpoints.splice(s, 1), s--; n.breakpoints.push(i), n.breakpointSettings[i] = r[e].settings } n.breakpoints.sort(function (t, e) { return n.options.mobileFirst ? t - e : e - t }) } }, e.prototype.reinit = function () { var e = this; e.$slides = e.$slideTrack.children(e.options.slide).addClass("slick-slide"), e.slideCount = e.$slides.length, e.currentSlide >= e.slideCount && 0 !== e.currentSlide && (e.currentSlide = e.currentSlide - e.options.slidesToScroll), e.slideCount <= e.options.slidesToShow && (e.currentSlide = 0), e.registerBreakpoints(), e.setProps(), e.setupInfinite(), e.buildArrows(), e.updateArrows(), e.initArrowEvents(), e.buildDots(), e.updateDots(), e.initDotEvents(), e.cleanUpSlideEvents(), e.initSlideEvents(), e.checkResponsive(!1, !0), e.options.focusOnSelect === !0 && t(e.$slideTrack).children().on("click.slick", e.selectHandler), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), e.setPosition(), e.focusHandler(), e.paused = !e.options.autoplay, e.autoPlay(), e.$slider.trigger("reInit", [e]) }, e.prototype.resize = function () { var e = this; t(window).width() !== e.windowWidth && (clearTimeout(e.windowDelay), e.windowDelay = window.setTimeout(function () { e.windowWidth = t(window).width(), e.checkResponsive(), e.unslicked || e.setPosition() }, 50)) }, e.prototype.removeSlide = e.prototype.slickRemove = function (t, e, i) { var s = this; return "boolean" == typeof t ? (e = t, t = e === !0 ? 0 : s.slideCount - 1) : t = e === !0 ? --t : t, s.slideCount < 1 || 0 > t || t > s.slideCount - 1 ? !1 : (s.unload(), i === !0 ? s.$slideTrack.children().remove() : s.$slideTrack.children(this.options.slide).eq(t).remove(), s.$slides = s.$slideTrack.children(this.options.slide), s.$slideTrack.children(this.options.slide).detach(), s.$slideTrack.append(s.$slides), s.$slidesCache = s.$slides, void s.reinit()) }, e.prototype.setCSS = function (t) { var e, i, s = this, n = {}; s.options.rtl === !0 && (t = -t), e = "left" == s.positionProp ? Math.ceil(t) + "px" : "0px", i = "top" == s.positionProp ? Math.ceil(t) + "px" : "0px", n[s.positionProp] = t, s.transformsEnabled === !1 ? s.$slideTrack.css(n) : (n = {}, s.cssTransitions === !1 ? (n[s.animType] = "translate(" + e + ", " + i + ")", s.$slideTrack.css(n)) : (n[s.animType] = "translate3d(" + e + ", " + i + ", 0px)", s.$slideTrack.css(n))) }, e.prototype.setDimensions = function () { var t = this; t.options.vertical === !1 ? t.options.centerMode === !0 && t.$list.css({ padding: "0px " + t.options.centerPadding }) : (t.$list.height(t.$slides.first().outerHeight(!0) * t.options.slidesToShow), t.options.centerMode === !0 && t.$list.css({ padding: t.options.centerPadding + " 0px" })), t.listWidth = t.$list.width(), t.listHeight = t.$list.height(), t.options.vertical === !1 && t.options.variableWidth === !1 ? (t.slideWidth = Math.ceil(t.listWidth / t.options.slidesToShow), t.$slideTrack.width(Math.ceil(t.slideWidth * t.$slideTrack.children(".slick-slide").length))) : t.options.variableWidth === !0 ? t.$slideTrack.width(5e3 * t.slideCount) : (t.slideWidth = Math.ceil(t.listWidth), t.$slideTrack.height(Math.ceil(t.$slides.first().outerHeight(!0) * t.$slideTrack.children(".slick-slide").length))); var e = t.$slides.first().outerWidth(!0) - t.$slides.first().width(); t.options.variableWidth === !1 && t.$slideTrack.children(".slick-slide").width(t.slideWidth - e) }, e.prototype.setFade = function () { var e, i = this; i.$slides.each(function (s, n) { e = i.slideWidth * s * -1, i.options.rtl === !0 ? t(n).css({ position: "relative", right: e, top: 0, zIndex: i.options.zIndex - 2, opacity: 0 }) : t(n).css({ position: "relative", left: e, top: 0, zIndex: i.options.zIndex - 2, opacity: 0 }) }), i.$slides.eq(i.currentSlide).css({ zIndex: i.options.zIndex - 1, opacity: 1 }) }, e.prototype.setHeight = function () { var t = this; if (1 === t.options.slidesToShow && t.options.adaptiveHeight === !0 && t.options.vertical === !1) { var e = t.$slides.eq(t.currentSlide).outerHeight(!0); t.$list.css("height", e) } }, e.prototype.setOption = e.prototype.slickSetOption = function () { var e, i, s, n, r, o = this, a = !1; if ("object" === t.type(arguments[0]) ? (s = arguments[0], a = arguments[1], r = "multiple") : "string" === t.type(arguments[0]) && (s = arguments[0], n = arguments[1], a = arguments[2], "responsive" === arguments[0] && "array" === t.type(arguments[1]) ? r = "responsive" : "undefined" != typeof arguments[1] && (r = "single")), "single" === r) o.options[s] = n; else if ("multiple" === r) t.each(s, function (t, e) { o.options[t] = e }); else if ("responsive" === r) for (i in n) if ("array" !== t.type(o.options.responsive)) o.options.responsive = [n[i]]; else { for (e = o.options.responsive.length - 1; e >= 0;) o.options.responsive[e].breakpoint === n[i].breakpoint && o.options.responsive.splice(e, 1), e--; o.options.responsive.push(n[i]) } a && (o.unload(), o.reinit()) }, e.prototype.setPosition = function () { var t = this; t.setDimensions(), t.setHeight(), t.options.fade === !1 ? t.setCSS(t.getLeft(t.currentSlide)) : t.setFade(), t.$slider.trigger("setPosition", [t]) }, e.prototype.setProps = function () { var t = this, e = document.body.style; t.positionProp = t.options.vertical === !0 ? "top" : "left", "top" === t.positionProp ? t.$slider.addClass("slick-vertical") : t.$slider.removeClass("slick-vertical"), (void 0 !== e.WebkitTransition || void 0 !== e.MozTransition || void 0 !== e.msTransition) && t.options.useCSS === !0 && (t.cssTransitions = !0), t.options.fade && ("number" == typeof t.options.zIndex ? t.options.zIndex < 3 && (t.options.zIndex = 3) : t.options.zIndex = t.defaults.zIndex), void 0 !== e.OTransform && (t.animType = "OTransform", t.transformType = "-o-transform", t.transitionType = "OTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (t.animType = !1)), void 0 !== e.MozTransform && (t.animType = "MozTransform", t.transformType = "-moz-transform", t.transitionType = "MozTransition", void 0 === e.perspectiveProperty && void 0 === e.MozPerspective && (t.animType = !1)), void 0 !== e.webkitTransform && (t.animType = "webkitTransform", t.transformType = "-webkit-transform", t.transitionType = "webkitTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (t.animType = !1)), void 0 !== e.msTransform && (t.animType = "msTransform", t.transformType = "-ms-transform", t.transitionType = "msTransition", void 0 === e.msTransform && (t.animType = !1)), void 0 !== e.transform && t.animType !== !1 && (t.animType = "transform", t.transformType = "transform", t.transitionType = "transition"), t.transformsEnabled = t.options.useTransform && null !== t.animType && t.animType !== !1 }, e.prototype.setSlideClasses = function (t) { var e, i, s, n, r = this; i = r.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current"), //r.$slides.eq(t).addClass("slick-current").attr("tabindex", "0"), r.$slides.eq(t).addClass("slick-current"), r.options.centerMode === !0 ? (e = Math.floor(r.options.slidesToShow / 2), r.options.infinite === !0 && (t >= e && t <= r.slideCount - 1 - e ? r.$slides.slice(t - e, t + e + 1).addClass("slick-active") : (s = r.options.slidesToShow + t, i.slice(s - e + 1, s + e + 2).addClass("slick-active")), 0 === t ? i.eq(i.length - 1 - r.options.slidesToShow).addClass("slick-center") : t === r.slideCount - 1 && i.eq(r.options.slidesToShow).addClass("slick-center")), r.$slides.eq(t).addClass("slick-center")) : t >= 0 && t <= r.slideCount - r.options.slidesToShow ? r.$slides.slice(t, t + r.options.slidesToShow).addClass("slick-active") : i.length <= r.options.slidesToShow ? i.addClass("slick-active") : (n = r.slideCount % r.options.slidesToShow, s = r.options.infinite === !0 ? r.options.slidesToShow + t : t, r.options.slidesToShow == r.options.slidesToScroll && r.slideCount - t < r.options.slidesToShow ? i.slice(s - (r.options.slidesToShow - n), s + n).addClass("slick-active") : i.slice(s, s + r.options.slidesToShow).addClass("slick-active")), "ondemand" === r.options.lazyLoad && r.lazyLoad() }, e.prototype.setupInfinite = function () { var e, i, s, n = this; if (n.options.fade === !0 && (n.options.centerMode = !1), n.options.infinite === !0 && n.options.fade === !1 && (i = null, n.slideCount > n.options.slidesToShow)) { for (s = n.options.centerMode === !0 ? n.options.slidesToShow + 1 : n.options.slidesToShow, e = n.slideCount; e > n.slideCount - s; e -= 1) i = e - 1, t(n.$slides[i]).clone(!0).attr("id", "").attr("data-slick-index", i - n.slideCount).prependTo(n.$slideTrack).addClass("slick-cloned"); for (e = 0; s > e; e += 1) i = e, t(n.$slides[i]).clone(!0).attr("id", "").attr("data-slick-index", i + n.slideCount).appendTo(n.$slideTrack).addClass("slick-cloned"); n.$slideTrack.find(".slick-cloned").find("[id]").each(function () { t(this).attr("id", "") }) } }, e.prototype.interrupt = function (t) { var e = this; t || e.autoPlay(), e.interrupted = t }, e.prototype.selectHandler = function (e) { var i = this, s = t(e.target).is(".slick-slide") ? t(e.target) : t(e.target).parents(".slick-slide"), n = parseInt(s.attr("data-slick-index")); return n || (n = 0), i.slideCount <= i.options.slidesToShow ? (i.setSlideClasses(n), void i.asNavFor(n)) : void i.slideHandler(n) }, e.prototype.slideHandler = function (t, e, i) { var s, n, r, o, a, l = null, h = this; return e = e || !1, h.animating === !0 && h.options.waitForAnimate === !0 || h.options.fade === !0 && h.currentSlide === t || h.slideCount <= h.options.slidesToShow ? void 0 : (e === !1 && h.asNavFor(t), s = t, l = h.getLeft(s), o = h.getLeft(h.currentSlide), h.currentLeft = null === h.swipeLeft ? o : h.swipeLeft, h.options.infinite === !1 && h.options.centerMode === !1 && (0 > t || t > h.getDotCount() * h.options.slidesToScroll) ? void(h.options.fade === !1 && (s = h.currentSlide, i !== !0 ? h.animateSlide(o, function () { h.postSlide(s) }) : h.postSlide(s))) : h.options.infinite === !1 && h.options.centerMode === !0 && (0 > t || t > h.slideCount - h.options.slidesToScroll) ? void(h.options.fade === !1 && (s = h.currentSlide, i !== !0 ? h.animateSlide(o, function () { h.postSlide(s) }) : h.postSlide(s))) : (h.options.autoplay && clearInterval(h.autoPlayTimer), n = 0 > s ? h.slideCount % h.options.slidesToScroll !== 0 ? h.slideCount - h.slideCount % h.options.slidesToScroll : h.slideCount + s : s >= h.slideCount ? h.slideCount % h.options.slidesToScroll !== 0 ? 0 : s - h.slideCount : s, h.animating = !0, h.$slider.trigger("beforeChange", [h, h.currentSlide, n]), r = h.currentSlide, h.currentSlide = n, h.setSlideClasses(h.currentSlide), h.options.asNavFor && (a = h.getNavTarget(), a = a.slick("getSlick"), a.slideCount <= a.options.slidesToShow && a.setSlideClasses(h.currentSlide)), h.updateDots(), h.updateArrows(), h.options.fade === !0 ? (i !== !0 ? (h.fadeSlideOut(r), h.fadeSlide(n, function () { h.postSlide(n) })) : h.postSlide(n), void h.animateHeight()) : void(i !== !0 ? h.animateSlide(l, function () { h.postSlide(n) }) : h.postSlide(n)))) }, e.prototype.startLoad = function () { var t = this; t.options.arrows === !0 && t.slideCount > t.options.slidesToShow && (t.$prevArrow.hide(), t.$nextArrow.hide()), t.options.dots === !0 && t.slideCount > t.options.slidesToShow && t.$dots.hide(), t.$slider.addClass("slick-loading") }, e.prototype.swipeDirection = function () { var t, e, i, s, n = this; return t = n.touchObject.startX - n.touchObject.curX, e = n.touchObject.startY - n.touchObject.curY, i = Math.atan2(e, t), s = Math.round(180 * i / Math.PI), 0 > s && (s = 360 - Math.abs(s)), 45 >= s && s >= 0 ? n.options.rtl === !1 ? "left" : "right" : 360 >= s && s >= 315 ? n.options.rtl === !1 ? "left" : "right" : s >= 135 && 225 >= s ? n.options.rtl === !1 ? "right" : "left" : n.options.verticalSwiping === !0 ? s >= 35 && 135 >= s ? "down" : "up" : "vertical" }, e.prototype.swipeEnd = function (t) { var e, i, s = this; if (s.dragging = !1, s.interrupted = !1, s.shouldClick = s.touchObject.swipeLength > 10 ? !1 : !0, void 0 === s.touchObject.curX) return !1; if (s.touchObject.edgeHit === !0 && s.$slider.trigger("edge", [s, s.swipeDirection()]), s.touchObject.swipeLength >= s.touchObject.minSwipe) { switch (i = s.swipeDirection()) { case "left": case "down": e = s.options.swipeToSlide ? s.checkNavigable(s.currentSlide + s.getSlideCount()) : s.currentSlide + s.getSlideCount(), s.currentDirection = 0; break; case "right": case "up": e = s.options.swipeToSlide ? s.checkNavigable(s.currentSlide - s.getSlideCount()) : s.currentSlide - s.getSlideCount(), s.currentDirection = 1 } "vertical" != i && (s.slideHandler(e), s.touchObject = {}, s.$slider.trigger("swipe", [s, i])) } else s.touchObject.startX !== s.touchObject.curX && (s.slideHandler(s.currentSlide), s.touchObject = {}) }, e.prototype.swipeHandler = function (t) { var e = this; if (!(e.options.swipe === !1 || "ontouchend" in document && e.options.swipe === !1 || e.options.draggable === !1 && -1 !== t.type.indexOf("mouse"))) switch (e.touchObject.fingerCount = t.originalEvent && void 0 !== t.originalEvent.touches ? t.originalEvent.touches.length : 1, e.touchObject.minSwipe = e.listWidth / e.options.touchThreshold, e.options.verticalSwiping === !0 && (e.touchObject.minSwipe = e.listHeight / e.options.touchThreshold), t.data.action) { case "start": e.swipeStart(t); break; case "move": e.swipeMove(t); break; case "end": e.swipeEnd(t) } }, e.prototype.swipeMove = function (t) { var e, i, s, n, r, o = this; return r = void 0 !== t.originalEvent ? t.originalEvent.touches : null, !o.dragging || r && 1 !== r.length ? !1 : (e = o.getLeft(o.currentSlide), o.touchObject.curX = void 0 !== r ? r[0].pageX : t.clientX, o.touchObject.curY = void 0 !== r ? r[0].pageY : t.clientY, o.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(o.touchObject.curX - o.touchObject.startX, 2))), o.options.verticalSwiping === !0 && (o.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(o.touchObject.curY - o.touchObject.startY, 2)))), i = o.swipeDirection(), "vertical" !== i ? (void 0 !== t.originalEvent && o.touchObject.swipeLength > 4 && t.preventDefault(), n = (o.options.rtl === !1 ? 1 : -1) * (o.touchObject.curX > o.touchObject.startX ? 1 : -1), o.options.verticalSwiping === !0 && (n = o.touchObject.curY > o.touchObject.startY ? 1 : -1), s = o.touchObject.swipeLength, o.touchObject.edgeHit = !1, o.options.infinite === !1 && (0 === o.currentSlide && "right" === i || o.currentSlide >= o.getDotCount() && "left" === i) && (s = o.touchObject.swipeLength * o.options.edgeFriction, o.touchObject.edgeHit = !0), o.options.vertical === !1 ? o.swipeLeft = e + s * n : o.swipeLeft = e + s * (o.$list.height() / o.listWidth) * n, o.options.verticalSwiping === !0 && (o.swipeLeft = e + s * n), o.options.fade === !0 || o.options.touchMove === !1 ? !1 : o.animating === !0 ? (o.swipeLeft = null, !1) : void o.setCSS(o.swipeLeft)) : void 0) }, e.prototype.swipeStart = function (t) { var e, i = this; return i.interrupted = !0, 1 !== i.touchObject.fingerCount || i.slideCount <= i.options.slidesToShow ? (i.touchObject = {}, !1) : (void 0 !== t.originalEvent && void 0 !== t.originalEvent.touches && (e = t.originalEvent.touches[0]), i.touchObject.startX = i.touchObject.curX = void 0 !== e ? e.pageX : t.clientX, i.touchObject.startY = i.touchObject.curY = void 0 !== e ? e.pageY : t.clientY, void(i.dragging = !0)) }, e.prototype.unfilterSlides = e.prototype.slickUnfilter = function () { var t = this; null !== t.$slidesCache && (t.unload(), t.$slideTrack.children(this.options.slide).detach(), t.$slidesCache.appendTo(t.$slideTrack), t.reinit()) }, e.prototype.unload = function () { var e = this; t(".slick-cloned", e.$slider).remove(), e.$dots && e.$dots.remove(), e.$prevArrow && e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.remove(), e.$nextArrow && e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.remove(), e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").css("width", "") }, e.prototype.unslick = function (t) { var e = this; e.$slider.trigger("unslick", [e, t]), e.destroy() }, e.prototype.updateArrows = function () { var t, e = this; t = Math.floor(e.options.slidesToShow / 2), e.options.arrows === !0 && e.slideCount > e.options.slidesToShow && !e.options.infinite && (e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === e.currentSlide ? (e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : e.currentSlide >= e.slideCount - e.options.slidesToShow && e.options.centerMode === !1 ? (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : e.currentSlide >= e.slideCount - 1 && e.options.centerMode === !0 && (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"))) }, e.prototype.updateDots = function () { var t = this; null !== t.$dots && (t.$dots.find("li").removeClass("slick-active").find("button").removeAttr("title"), t.$dots.find("li").eq(Math.floor(t.currentSlide / t.options.slidesToScroll)).addClass("slick-active").find("button").attr("title", "selected")) }, e.prototype.visibility = function () { var t = this; t.options.autoplay && (document[t.hidden] ? t.interrupted = !0 : t.interrupted = !1) }, t.fn.slick = function () { var t, i, s = this, n = arguments[0], r = Array.prototype.slice.call(arguments, 1), o = s.length; for (t = 0; o > t; t++) if ("object" == typeof n || "undefined" == typeof n ? s[t].slick = new e(s[t], n) : i = s[t].slick[n].apply(s[t].slick, r), "undefined" != typeof i) return i; return s } }), APPS_PLUGIN = !0; var smartSwitch = { isMobile: $.browser.mobile, areaWidth: 0, areaHeight: 0, prevSizeMode: -1, sizeMode: 0, resizeFunctions: [], initialized: false, eiwafDevice: { TYPE_DESKTOP: "desktop", TYPE_PHONE: "phone", TYPE_TABLET: "tablet", agent: { _mobile: (/Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(window.navigator.userAgent)), _tablet: (/iPad|tablet/i.test(window.navigator.userAgent)), _apple: (/iP(hone|od|ad)/i.test(window.navigator.userAgent)) }, detect: function () { var _userAgent = navigator.userAgent.toLowerCase(); _html = document.getElementsByTagName("html")[0]; //default add class _html.classList.add("default-apps"); //samsung-device check if (_userAgent.search("sm-") > -1) { _html.classList.add("samsung-device"); if (this.agent.mobile) _html.classList.add("samsung-mobile-device"); } if (this.agent_apple) { _html.classList.add("apple-mobile-device"); } if (this.type) return; if (this.agent._mobile) { if (_userAgent.search("android") > -1) { if (_userAgent.search("mobile") == -1) this.type = this.TYPE_TABLET; } if (!this.type) this.type = this.TYPE_PHONE; } if (this.agent._tablet) this.type = this.TYPE_TABLET; if (!this.type) this.type = this.TYPE_DESKTOP; switch (this.type) { case "phone": _html.classList.add("apps-device-phone"); break; case "tablet": _html.classList.add("apps-device-tablet"); break; case "desktop": _html.classList.add("apps-device-desktop"); break; default: break; } } }, addViewportEvent: function (param, target) { //해당 섹션에 들어갈때 or 벗어날때 이벤트 적용 var events = 'scroll.addViewportEvent load.addViewportEvent resize.addViewportEvent'; param = $.extend({ parent: window, a11y: false, triggerPosition: false, triggerPositionPercent: false, enter: false, leave: false, progress: false, visiblePercent: false, visible: false, invisible: false, fullVisible: false }, param || {}); if (typeof (param.triggerPosition && param.triggerPositionPercent) == 'number') { return true; } var methods = $.fn.extend({ destroy: function () { $(param.parent).off(events); } }); return target.each(function (idx, obj) { var isEnter = false; var isVisible = false; var isActive = false; var isFullVisible = false; var visiblePercent = 0; var parent = param.parent; //if(param.triggerPosition) $(parent).on(events, function () { var returnValue = { Height: $(obj).outerHeight(), ViewportHeight: $(parent).height(), ScrollTop: $(document).scrollTop(), OffsetTop: $(obj).offset().top }; var visiblePerTopPercent = ((returnValue.ScrollTop + returnValue.ViewportHeight - returnValue.OffsetTop) / returnValue.Height * 100).toFixed(2); var visiblePerBottomPercent = -((returnValue.ScrollTop - returnValue.OffsetTop - returnValue.Height) / returnValue.Height * 100).toFixed(2); var viewPortPosition = returnValue.OffsetTop - returnValue.ScrollTop - param.triggerPosition; var viewPortPositionPercent = (viewPortPosition / returnValue.ViewportHeight * 100 - param.triggerPositionPercent).toFixed(2); isVisible = visiblePerTopPercent >= 0 && visiblePerBottomPercent >= 0; if (viewPortPositionPercent >= 50) viewPortPositionPercent = 50; else if (viewPortPositionPercent <= -50) viewPortPositionPercent = -50; if (isVisible && visiblePerTopPercent <= 100) visiblePercent = visiblePerTopPercent; else if (isVisible && visiblePerBottomPercent <= 100) visiblePercent = visiblePerBottomPercent; else if (isVisible) visiblePercent = 100; else visiblePercent = 0; if (isVisible) { /* Set Property */ obj.isVisible = isVisible; obj.isEnter = isEnter; obj.viewPortPositionPercent = viewPortPositionPercent; obj.viewPortPosition = viewPortPosition; obj.visiblePercent = visiblePercent; } if (isVisible) { /* Set Trigger & Run */ if (!isEnter && (param.triggerPositionPercent !== false && viewPortPositionPercent <= 0) || (param.triggerPosition && viewPortPosition <= 0)) { $(obj).trigger('enter'); if ($.isFunction(param.enter)) param.enter(); } if (isEnter && (param.triggerPositionPercent !== false && viewPortPositionPercent > 0) || (param.triggerPosition && viewPortPosition > 0)) { $(obj).trigger('leave'); if ($.isFunction(param.leave)) param.leave(); } if ($.isFunction(param.progress)) { if (param.triggerPositionPercent) param.progress(Number(viewPortPositionPercent), returnValue); if (param.triggerPosition) param.progress(Number(viewPortPosition), returnValue); } } if (!isActive && visiblePercent > 0) { $(obj).trigger('visible'); if ($.isFunction(param.visible)) param.visible(); } if (isActive && visiblePercent == 0) { $(obj).trigger('invisible'); if ($.isFunction(param.invisible)) param.invisible(); $(obj).trigger('leave'); if ($.isFunction(param.leave)) param.leave(); } if (!isFullVisible && visiblePercent == 100) { $(obj).trigger('fullVisible'); if ($.isFunction(param.fullVisible)) param.fullVisible(); } if ($.isFunction(param.visiblePercent)) param.visiblePercent(Number(visiblePercent), returnValue); isActive = visiblePercent != 0; isEnter = ((param.triggerPositionPercent && viewPortPositionPercent <= 0) && isVisible) || ((param.triggerPosition && viewPortPosition <= 0) && isVisible); isFullVisible = visiblePercent >= 100; }); }); }, pdpImgReplace: function ($this) { //pdp 동적 구현시 해상도에 맞게 이미지 교체 var $pdp = $this, $figure = $pdp.find('figure img'); if (!$('html').hasClass('s1')) { $figure.each(function () { $(this).attr('src', $(this).data('desktop-src')); }); } else { $figure.each(function () { $(this).attr('src', $(this).data('mobile-src')); }); } }, imgLazyLoad: function (target) { function changeSrcPc(target) { if (target.attr("data-desktop-src")) { target.attr("src", target.attr("data-desktop-src")); } } function changeSrcMobile(target) { if (target.attr("data-mobile-src")) { target.attr("src", target.attr("data-mobile-src")); } } target.each(function () { var _this = $(this); var flag = true; smartSwitch.addViewportEvent({ triggerPositionPercent: 75, enter: function () { if (flag) { _this.addClass("lazy-load").find("img").each(function () { var __this = $(this); if (smartSwitch.sizeMode == 1) { if (__this.attr("data-mobile-src")) { __this.attr("src", __this.attr("data-mobile-src")); } else if (__this.attr("data-src")) { __this.attr("src", __this.attr("data-src")); } else { changeSrcPc(__this); } } else { if (__this.attr("data-desktop-src")) { __this.attr("src", __this.attr("data-desktop-src")); } else if (__this.attr("data-src")) { __this.attr("src", __this.attr("data-src")); } else { changeSrcPc(__this); } } }); } flag = false; } }, _this); }); }, resize: function (func, flag) { if (typeof (func) == 'function') { this.resizeFunctions.push(func); return this; } var documentElement = document.documentElement, width, height, sizeMode; width = documentElement.clientWidth; // if (smartSwitch.isPoorBrowser) {width = Math.max(document.getElementById('wrap').offsetWidth, width);} height = $(window).height(); // ignore Mode if (func !== true) { if (!$.browser.mobile && width == smartSwitch.areaWidth && height == smartSwitch.areaHeight) { return; } else if ($.browser.mobile && width == smartSwitch.areaWidth) { return; } } var windowSize = window.innerWidth != undefined ? window.innerWidth : $(window).innerWidth() + 17; sizeMode = windowSize > 1440 ? 3 : windowSize > 767 ? 2 : 1; smartSwitch.prevSizeMode = smartSwitch.sizeMode; if (sizeMode != smartSwitch.sizeMode) { smartSwitch.sizeMode = sizeMode; documentElement.className = documentElement.className.replace(/ *s[1-4][1-4]?/g, '') + ' s' + sizeMode; } documentElement.className = documentElement.className.replace(/ *s0/, '') + (360 > width ? ' s0' : ''); smartSwitch.areaWidth = width; smartSwitch.areaHeight = height; // smartSwitch.sections && smartSwitch.sections.resize && smartSwitch.sections.resize(flag); if (smartSwitch.resizeFunctions.length) { $.each(smartSwitch.resizeFunctions, function () {this();}); } smartSwitch.motion.resize(); }, checkOS : function(){ var mobileArr = new Array("iphone", "ipod", "blackberry", "android", "samsung", "ios", "ipad"); for (var txt in mobileArr) { if (navigator.userAgent.toLowerCase().indexOf(mobileArr[txt]) > -1 && !$('html').hasClass('mobile')) { $('html').addClass('mobile'); } else { $('html').addClass('desktop'); }} }, motion: { smartSwitch: { elem: { _winHoriz: window.innerWidth !== undefined ? window.innerWidth : document.documentElement.clientWidth, _extentionWrap: $(document).find(".smart-switch-how-wrap"), _accordianWrap: $(document).find('.smart-switch-faq-wrap'), _beforeClickDep1Idx : 0, _beforeClickIdx : 0, _beforeSizeMode: null, _afterSizeMode: null, _resizeIdx: 0, _content: null }, event: function () { var _switch = this, wrap = this.elem._extentionWrap, accWrap = this.elem._accordianWrap, accBtn = accWrap.find('.switch-accordion-list button'), tabBtn = wrap.find(".switch-tabs-list-depth1 button.switch-tabs-link"), tabDepBtn = wrap.find(".switch-tabs-list-depth2 button.switch-tabs-link"); accBtn.on('click', function () { let $this = $(this); if($this.closest('li').hasClass('active')){ $this.closest('li').removeClass('active'); $this.closest('li').find('.swicth-accordion-cont').slideUp(); $this.attr('aria-expanded', false); }else{ accBtn.closest('li').siblings().removeClass('active'); $('.swicth-accordion-cont').slideUp(); accBtn.attr('aria-expanded', false) $this.closest('li').addClass('active'); $this.closest('li').find('.swicth-accordion-cont').slideDown(); $this.attr('aria-expanded', true); setTimeout(function(){ $('html, body').stop().animate({scrollTop:$this.closest('li').offset().top}); },450); } }); tabBtn.on("click", function () { let $this = $(this), thisIdx = $this.parent().index(); if($this.hasClass('active')){ return false; } wrap.find(".switch-tabs-body .switch-tabs-conts").eq(thisIdx).find(".switch-tabs-conts-depth2").eq(0).find(".slick-list").removeAttr("style"); _switch.elem._beforeClickDep1Idx = $this.parent().siblings().find('button.active').parent().index(); _switch.elem._beforeClickIdx = 0; _switch.motion.elem._beforeHeight = wrap.find(".switch-slide-wrap").height(); tabBtn.removeClass("active"); $this.addClass("active"); _switch.change(thisIdx, 0,false); _switch.motion.click(thisIdx, 0); _switch.accessibility.click($this); }); tabDepBtn.on("click", function () { let $this = $(this), _thisIdx = $this.parent().index(), dep1Idx = $this.closest('.switch-tabs-conts').index(), contents = wrap.find(".switch-tabs-body > .switch-tabs-conts").eq(dep1Idx).find(".switch-tabs-conts-depth2"), content = contents.eq(_thisIdx); if($this.hasClass('active')){ return false; } content.find(".slick-list").removeAttr("style"); _switch.elem._beforeClickIdx = $this.parent().siblings().find('button.active').parent().index(); tabDepBtn.removeClass("active"); $this.addClass("active"); contents.removeClass('active'); content.addClass('active'); _switch.change(dep1Idx, _thisIdx,false); // _switch.slide(content, false); _switch.motion.click(dep1Idx, _thisIdx); _switch.accessibility.click($this); }); }, motion: { elem : { _beforeSizeMode: 0, _afterSizeMode: 0, _beforeHeight: 0, _afterHeight: 0 }, setting: function (_idx, _idx2) { var _wrap = smartSwitch.motion.smartSwitch.elem._extentionWrap, contents = _wrap.find('.switch-tabs-body > .switch-tabs-conts').eq(_idx), content = contents.find(".switch-tabs-conts-depth2").eq(_idx2); setTimeout(function () { content.find(".slick-list").removeAttr("style"); }, 100); }, click: function (_idx, _idx2) { var _switch = smartSwitch.motion.smartSwitch, _wrap = _switch.elem._extentionWrap, contents = _wrap.find('.switch-tabs-body > .switch-tabs-conts').eq(_idx), content = contents.find(".switch-tabs-conts-depth2").eq(_idx2), list = content.find(".switch-slide-list.slick-current"), _contentWrap = content.find(".slick-list"); content.find(".slick-list").css("height", list.find(".switch-slide-list-inner").outerHeight(true)); content.find(".switch-slide-wrap").on("beforeChange", function (event, slick, idx, nextIdx) { var _slickList = $(slick.$list[0]); _contentWrap.removeAttr("style"); _slickList.css({ "height" : _slickList.find(".switch-slide-list").eq(nextIdx).find(".switch-slide-list-inner").outerHeight(true) }); }); this.elem._afterHeight = _contentWrap.height(); _contentWrap.css("height", this.elem._beforeHeight); setTimeout(function () { _contentWrap.css("height", _switch.motion.elem._afterHeight); }, 0); }, resize: function (_idx, _idx2) { var _switch = smartSwitch.motion.smartSwitch, _wrap = _switch.elem._extentionWrap, contents = _wrap.find('.switch-tabs-body > .switch-tabs-conts').eq(_idx), content = contents.find(".switch-tabs-conts-depth2").eq(_idx2), _sizeMode = smartSwitch.sizeMode > 1 ? 2 : 1; setTimeout(function () { content.find(".slick-list").css({ "height" : content.find(".switch-slide-list.slick-current .switch-slide-list-inner").outerHeight(true) }); _switch.tagging(content); content.find(".switch-slide-wrap").slick("refresh"); }, 1000); this.elem._beforeSizeMode = _sizeMode; if (this.elem._beforeSizeMode != this.elem._afterSizeMode) { this.elem._afterSizeMode = _sizeMode; setTimeout(function () { if (_sizeMode === 1) _wrap.find('.slick-slide').css('visibility', 'visible'); content.find(".slick-list").css({ "height" : content.find(".switch-slide-list.slick-current .switch-slide-list-inner").outerHeight(true) }); _switch.tagging(content); }, 1000); } } }, /* tab contents change event */ change: function (_idx, _idx2,_resizeCheck) { var _switch = this, wrap = this.elem._extentionWrap, contents = wrap.find(".switch-tabs-body > .switch-tabs-conts"), contents_item = contents.eq(_idx), content = contents_item.find('.switch-tabs-conts-depth2').eq(_idx2); contents.removeClass("active"); contents_item.addClass("active"); contents_item.find('.switch-tabs-conts-depth2').removeClass("active"); content.addClass("active"); contents_item.find(".switch-tabs-list-depth2 .switch-tabs-item button").removeClass("active"); contents_item.find(".switch-tabs-list-depth2 .switch-tabs-item:eq("+_idx2+") button").addClass("active"); _switch.slide(content, _resizeCheck); _switch.elem._content = content; }, /* tab contents slide */ slide: function (content, _resizeCheck) {//int slide var _switch = this, _winHoriz = _switch.elem._winHoriz, wrap = _switch.elem._extentionWrap, _type = content.find(".card-list-wrap").data("role-slide"), _contentSlideCheck = content.find(".switch-slide-wrap").is(".slick-initialized"), _slideConfig = { centerMode: true, slidesToShow: 1, slidesToScroll: 1, infinite: false, accessibility: true, speed: 500, dots: true, arrows: true, // adaptiveHeight: true, rtl: $("html").is(".rtl") }, _beforeDep1Content = wrap.find(".switch-tabs-body > .switch-tabs-conts").eq(_switch.elem._beforeClickDep1Idx), _beforeDep1ContentSlideCheck = _beforeDep1Content.find('.switch-tabs-conts-depth2').eq(_switch.elem._beforeClickIdx).find(".switch-slide-wrap").is(".slick-initialized"), _beforeContent = wrap.find(".switch-tabs-body > .switch-tabs-conts.active").find('.switch-tabs-conts-depth2').eq(_switch.elem._beforeClickIdx), _beforeContentSlideCheck = _beforeContent.find(".switch-slide-wrap").is(".slick-initialized"); //before reset if (_beforeDep1ContentSlideCheck === true) { _beforeDep1Content.find('.switch-tabs-conts-depth2').eq(_switch.elem._beforeClickIdx).find(".switch-slide-wrap").slick("unslick"); _beforeDep1Content.find('.switch-tabs-conts-depth2').eq(_switch.elem._beforeClickIdx).find(".switch-slide-wrap").find('.switch-slide-list').not('.switch-slide-list:eq(0)').css({'visibility': 'hidden'}); } if (_beforeContentSlideCheck === true) { _beforeContent.find(".switch-slide-wrap").slick("unslick"); _beforeContent.find(".switch-slide-wrap").find('.switch-slide-list').not('.switch-slide-list:eq(0)').css({'visibility': 'hidden'}); } if (_resizeCheck === true && _contentSlideCheck) { content.find(".switch-slide-wrap").slick("unslick"); content.find('.switch-slide-list').not('.switch-slide-list:eq(0)').css({'visibility': 'hidden'}); } content.find('.switch-slide-list').css({'visibility': 'visible'}); //slide setting _contentSlideCheck = content.find(".switch-slide-wrap").is(".slick-initialized"); if (_contentSlideCheck === false) { if (this.elem._afterSizeMode !== 1) content.find('.switch-slide-list').not('.switch-slide-list:eq(0)').css({'visibility': 'hidden'}); setTimeout(function(){ content.find(".switch-slide-wrap").slick(_slideConfig); content.find(".switch-slide-wrap").slick("refresh"); content.find('.switch-slide-list').css({'visibility': 'visible'}); _switch.tagging(content); },100) } //switch접근성 - 화살표 포커스 이동 content.find(".switch-slide-wrap").on('click', '.slick-arrow', function(){ content.find(".switch-slide-wrap").on("afterChange", function (event, slick, current, next) { content.find(".switch-slide-wrap").find('.switch-slide-list').attr('aria-hidden',true); content.find(".switch-slide-wrap").find('.switch-slide-list.slick-current').attr('aria-hidden',false); if (_switch.elem._winHoriz > 768) { if(current == 0){ content.find('.slick-next.slick-arrow').focus(); } else if(current == (slick.slideCount-1)){ content.find('.slick-prev.slick-arrow').focus(); } } }); }); content.find(".switch-slide-wrap").on("afterChange", function (event, slick, current, next) { content.find(".switch-slide-wrap").find('.switch-slide-list').attr('aria-hidden',true); content.find(".switch-slide-wrap").find('.switch-slide-list.slick-current').attr('aria-hidden',false); content.find(".switch-slide-wrap").find('.switch-slide-list.slick-current').removeAttr('style'); }); }, tagging: function (content) { setTimeout(function(){ content.find(".switch-slide-wrap").find('.switch-slide-list').attr('aria-hidden',true); content.find(".switch-slide-wrap").find('.switch-slide-list.slick-current').attr('aria-hidden',false); content.find(".slick-dots li button").each(function (_i) { var _this = $(this),dotTitle = function() { var titleDom = content.find('.slick-slide').eq(_i).find('.switch-slide-tit')var dataTitle = titleDom.attr('data-switch-slide-tit');if (dataTitle) return dataTitle;if (!dataTitle) return titleDom.text();} _this.attr("data-omni-type", "microsite_pcontentinter"); _this.attr("data-omni", "carousel:index:" + (_i + 1)); _this.text(dotTitle); }); },1000) }, accessibility: { click: function (_this) { _this.attr("title", "selected").parent().siblings().find("button").attr("title", ""); } }, init: function () { if (this.elem._extentionWrap.length > 0) { this.event(); this.change(0,0); this.motion.click(0, 0); this.motion.setting(); } }, resize: function () { if (this.elem._extentionWrap.length > 0) { this.elem._winHoriz = window.innerWidth !== undefined ? window.innerWidth : document.documentElement.clientWidth; var _sizeMode = smartSwitch.sizeMode > 1 ? 2 : 1; var _activeIdx = this.elem._extentionWrap.find(".switch-tabs-body > .switch-tabs-conts.active").index(); var _activeIdx2 = this.elem._extentionWrap.find(".switch-tabs-body > .switch-tabs-conts").eq(_activeIdx).find(".switch-tabs-conts-depth2.active").index(); this.elem._beforeSizeMode = _sizeMode; if (this.elem._resizeIdx > 0) this.motion.resize(_activeIdx, _activeIdx2); if (this.elem._beforeSizeMode != this.elem._afterSizeMode && this.elem._resizeIdx > 0) { this.elem._afterSizeMode = _sizeMode; _activeIdx = this.elem._extentionWrap.find(".switch-tabs-body > .switch-tabs-conts.active").index(); _activeIdx2 = this.elem._extentionWrap.find(".switch-tabs-body > .switch-tabs-conts").eq(_activeIdx).find(".switch-tabs-conts-depth2.active").index(); this.elem._beforeClickDep1Idx = _activeIdx; this.elem._beforeClickIdx = _activeIdx2; this.change(_activeIdx, _activeIdx2, true); } else if (this.elem._resizeIdx < 1) { this.elem._afterSizeMode = _sizeMode; this.elem._resizeIdx = this.elem._resizeIdx + 1; } } } }, init: function () { this.smartSwitch.init(); }, resize: function () { this.smartSwitch.resize(); }, scroll: function () { } }, readyInit: function(){ this.eiwafDevice.detect(); this.checkOS(); this.imgLazyLoad($(".smart-switch-how-wrap")); }, loadInit: function () { //전체 스크립트 기본 실행 if (this.initialized) {return;} this.resize(true); this.initialized = true; this.motion.init(); } } $(document).ready(function () { smartSwitch.readyInit(); $(window).off('resize').on('resize', function () { smartSwitch.resize(true, 'resize') $('.smart-switch-how-wrap').each(function(){ if($(this).hasClass('lazy-load')){ smartSwitch.pdpImgReplace($(this)); } }) }); }); if (window.addEventListener) { window.addEventListener('load', smartSwitch.loadInit(), false); } else if (window.attachEvent) { window.attachEvent('onload', smartSwitch.loadInit()); } });