(function (win) { 'use strict'; win.KeyenceAnalytics = {}; win.KeyenceAnalytics.Analytics = (function () { var Analytics = function () { this.generalMeasureList = [ new win.KeyenceAnalytics.GroupTypeLeftNavi(), new win.KeyenceAnalytics.DownloadFilter(), new win.KeyenceAnalytics.ManualModal(), new win.KeyenceAnalytics.CTABanner(), new win.KeyenceAnalytics.SideCTA(), new win.KeyenceAnalytics.MykDeqwasModal(), new win.KeyenceAnalytics.MykOneMorePRBanner(), ]; }; Analytics.canNoticeEvent = function () { if (win.dataLayer && (typeof win.dataLayer.push === 'function')) { return true; } return false; }; Analytics.inherits = function (ctor, superCtor) { if (typeof ctor === 'function' && typeof superCtor === 'function') { ctor.prototype = Object.create(superCtor.prototype); Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, enumerable: false, writable: true, }); } }; Analytics.getRawEventAction = function (eventType) { var actionKey = ''; var actionName = ''; if (typeof eventType !== 'string') { return ''; } actionKey = eventType.match(/^.*?(?=_)/); if (!actionKey) { return ''; } switch (actionKey[0]) { case 'Focus': actionName = 'focus'; break; case 'Click': actionName = 'click'; break; case 'Error': actionName = 'error'; break; default: break; } return actionName; }; Analytics.prototype.getEventType = function (name) { return this.EVENT_TYPES[name]; }; Analytics.prototype.noticeEvent = function (funcName, eventType, element) { var i; var len; if (!Analytics.canNoticeEvent()) { return; } len = this.generalMeasureList.length; for (i = 0; i < len; i++) { if (this.generalMeasureList[i].constructor.name === funcName) { this.generalMeasureList[i].noticeEvent(eventType, element); break; } } }; Analytics.prototype.getRawEventCategory = function () { throw new Error('Not Implemented'); }; return Analytics; }()); win.KeyenceAnalytics.Form = (function () { var Analytics = win.KeyenceAnalytics.Analytics; var Form = function () { Analytics.call(this); this.EVENT_TYPES = { SIGNIN_FOCUS: 'Focus_SigninForm', SIGNIN_CLICK: 'Click_SigninForm', SIGNIN_ERROR: 'Error_SigninForm', RESET_FOCUS: 'Focus_ResetlForm', RESET_CLICK: 'Click_ResetlForm', RESET_ERROR: 'Error_ResetlForm', }; }; Analytics.inherits(Form, Analytics); Form.prototype.noticeEvent = function (eventType, element, prefix) { var rawEventCategory = ''; var rawEventAction = ''; var elementId = ''; if (typeof eventType !== 'string' || !element) { return; } rawEventCategory = this.getRawEventCategory(eventType); if (rawEventCategory === '') { return; } rawEventAction = Analytics.getRawEventAction(eventType); if (rawEventAction === '') { return; } if (element.id === '') { return; } elementId = typeof prefix === 'string' ? prefix + element.id : element.id; if (Analytics.canNoticeEvent()) { win.dataLayer.push({ event: 'GeneralFormEvent', generalFormCategory: rawEventCategory, generalFormAction: rawEventAction, 'gtm.element': element, 'gtm.elementClasses': element.className, 'gtm.elementId': elementId, }); } }; Form.prototype.getRawEventCategory = function (eventType) { var category = ''; switch (eventType) { case this.EVENT_TYPES.RESET_FOCUS: case this.EVENT_TYPES.RESET_CLICK: case this.EVENT_TYPES.RESET_ERROR: category = 'reset'; break; case this.EVENT_TYPES.SIGNIN_FOCUS: case this.EVENT_TYPES.SIGNIN_CLICK: case this.EVENT_TYPES.SIGNIN_ERROR: category = 'signin'; break; default: break; } return category; }; return Form; }()); win.KeyenceAnalytics.GeneralMeasure = (function () { var Analytics = win.KeyenceAnalytics.Analytics; var GeneralMeasure = function () { }; GeneralMeasure.EVENT_TYPES = { CLICK: 'click', }; GeneralMeasure.prototype.getRawEventCategory = function () { throw new Error('Not Implemented'); }; GeneralMeasure.prototype.getRawEventAction = function () { throw new Error('Not Implemented'); }; GeneralMeasure.prototype.getRawEventLabel = function () { throw new Error('Not Implemented'); }; GeneralMeasure.prototype.noticeEvent = function (eventType, element) { var rawEventCategory = ''; var rawEventAction = ''; var rawEventLabel = ''; if (typeof eventType !== 'string' || !element) { return; } rawEventCategory = this.getRawEventCategory(eventType); if (rawEventCategory === '') { return; } rawEventAction = this.getRawEventAction(eventType); rawEventLabel = this.getRawEventLabel(element); if (Analytics.canNoticeEvent()) { win.dataLayer.push({ event: 'GeneralMeasureEvent', gaGeneralMeasureCategory: 'General Measure:' + rawEventCategory, gaGeneralMeasureAction: rawEventAction, gaGeneralMeasureLabel: rawEventLabel, }); } }; return GeneralMeasure; }()); win.KeyenceAnalytics.GroupTypeLeftNavi = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var GroupTypeLeftNavi = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(GroupTypeLeftNavi, GeneralMeasure); GroupTypeLeftNavi.prototype.getRawEventCategory = function () { var category = 'group/type left navi'; return category; }; GeneralMeasure.prototype.getRawEventAction = function (eventType) { return eventType; }; GroupTypeLeftNavi.prototype.getRawEventLabel = function (element) { var eventLabel = ''; if (element && (element.href && element.href.length)) { eventLabel = element.href; } return eventLabel; }; return GroupTypeLeftNavi; }()); win.KeyenceAnalytics.DownloadFilter = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var DownloadFilter = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(DownloadFilter, GeneralMeasure); DownloadFilter.EVENT_TYPES = { CLICK: 'click', CLICK_MODELS: 'click_models', CLICK_FILE_TYPES: 'click_fileTypes', CLICK_CATEGORY: 'click_category', }; DownloadFilter.prototype.getRawEventCategory = function (eventType) { var category = ''; switch (eventType) { case DownloadFilter.EVENT_TYPES.CLICK_MODELS: category = 'Filter by Models'; break; case DownloadFilter.EVENT_TYPES.CLICK_FILE_TYPES: category = 'Filter by File Types'; break; case DownloadFilter.EVENT_TYPES.CLICK_CATEGORY: category = 'Filter by Manual Category'; break; default: break; } return category; }; DownloadFilter.prototype.getRawEventAction = function (eventType) { var actionName = ''; switch (eventType) { case DownloadFilter.EVENT_TYPES.CLICK_MODELS: case DownloadFilter.EVENT_TYPES.CLICK_FILE_TYPES: case DownloadFilter.EVENT_TYPES.CLICK_CATEGORY: actionName = DownloadFilter.EVENT_TYPES.CLICK; break; default: break; } return actionName; }; DownloadFilter.prototype.getRawEventLabel = function (element) { var eventLabel = ''; if (element) { if (element.value && element.value.length) { eventLabel = element.value; } else if (element.innerText && element.innerText.length) { eventLabel = element.innerText; } } return eventLabel; }; return DownloadFilter; }()); win.KeyenceAnalytics.ManualModal = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var ManualModal = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(ManualModal, GeneralMeasure); ManualModal.prototype.getRawEventCategory = function () { var category = 'Manual Type Notes'; return category; }; ManualModal.prototype.getRawEventAction = function (eventType) { return eventType; }; ManualModal.prototype.getRawEventLabel = function (element) { var eventLabel = ''; if (element && (element.href && element.href.length)) { eventLabel = element.href; } return eventLabel; }; return ManualModal; }()); win.KeyenceAnalytics.CTABanner = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var CTABanner = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(CTABanner, GeneralMeasure); CTABanner.EVENT_TYPES = { CLICK: 'click', CLICK_IMAGE_SCHEMA_LINK: 'click_image_schema_link', CLICK_MOVIE_SCHEMA_LINK: 'click_movie_schema_link', SHOW: 'show', SHOW_IMAGE_SCHEMA: 'show_image_schema', SHOW_MOVIE_SCHEMA: 'show_movie_schema', CLOSE: 'close', CLICK_IMAGE_SCHEMA_CLOSE: 'click_image_schema_close', CLICK_MOVIE_SCHEMA_CLOSE: 'click_movie_schema_close', }; CTABanner.prototype.getRawEventCategory = function (eventType) { var category = ''; switch (eventType) { case CTABanner.EVENT_TYPES.CLICK_IMAGE_SCHEMA_LINK: case CTABanner.EVENT_TYPES.CLICK_IMAGE_SCHEMA_CLOSE: case CTABanner.EVENT_TYPES.SHOW_IMAGE_SCHEMA: category = 'ModalCTA-image'; break; case CTABanner.EVENT_TYPES.CLICK_MOVIE_SCHEMA_LINK: case CTABanner.EVENT_TYPES.CLICK_MOVIE_SCHEMA_CLOSE: case CTABanner.EVENT_TYPES.SHOW_MOVIE_SCHEMA: category = 'ModalCTA-movie'; break; default: break; } return category; }; CTABanner.prototype.getRawEventAction = function (eventType) { var actionName = ''; switch (eventType) { case CTABanner.EVENT_TYPES.CLICK_IMAGE_SCHEMA_LINK: case CTABanner.EVENT_TYPES.CLICK_MOVIE_SCHEMA_LINK: actionName = CTABanner.EVENT_TYPES.CLICK; break; case CTABanner.EVENT_TYPES.SHOW_IMAGE_SCHEMA: case CTABanner.EVENT_TYPES.SHOW_MOVIE_SCHEMA: actionName = CTABanner.EVENT_TYPES.SHOW; break; case CTABanner.EVENT_TYPES.CLICK_IMAGE_SCHEMA_CLOSE: case CTABanner.EVENT_TYPES.CLICK_MOVIE_SCHEMA_CLOSE: actionName = CTABanner.EVENT_TYPES.CLOSE; break; default: break; } return actionName; }; CTABanner.prototype.getRawEventLabel = function (element) { var eventLabel = ''; var bannerName = ''; if (win.ctaSettings && win.ctaSettings.component_name) { bannerName = win.ctaSettings.component_name; } if (element) { if (element.href && element.href.length) { if (element.classList.contains('of-inquiry')) { eventLabel = bannerName + ' 鈥 ' + 'Price'; } else if (element.classList.contains('of-download')) { eventLabel = bannerName + ' 鈥 ' + 'Download'; } else { eventLabel = bannerName; } } else { eventLabel = bannerName; } } return eventLabel; }; return CTABanner; }()); win.KeyenceAnalytics.SideCTA = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var SideCTA = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(SideCTA, GeneralMeasure); SideCTA.EVENT_TYPES = { CLICK_LINK: 'click', CLICK_REMOVE_BUTTON: 'hide', }; SideCTA.prototype.getRawEventCategory = function () { var category = 'Side CTA'; return category; }; SideCTA.prototype.getRawEventAction = function (eventType) { var actionName = ''; switch (eventType) { case SideCTA.EVENT_TYPES.CLICK_LINK: actionName = SideCTA.EVENT_TYPES.CLICK_LINK; break; case SideCTA.EVENT_TYPES.CLICK_REMOVE_BUTTON: actionName = SideCTA.EVENT_TYPES.CLICK_REMOVE_BUTTON; break; default: break; } return actionName; }; SideCTA.prototype.getRawEventLabel = function (element) { var eventLabel = ''; if (element) { if (element.href && element.href.length) { eventLabel = element.href; } else if (element.classList.contains('js-menuConversion-removeButton')) { eventLabel = 'hide-sideCTA'; } } return eventLabel; }; return SideCTA; }()); win.KeyenceAnalytics.MykDeqwasModal = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var MykDeqwasModal = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(MykDeqwasModal, GeneralMeasure); MykDeqwasModal.EVENT_TYPES = { SHOW: 'show', CLOSE: 'close', CLICK_ASSET_LINK: 'click', }; MykDeqwasModal.prototype.getRawEventCategory = function (eventType) { var category = 'myK Deqwas Modal'; return category; }; MykDeqwasModal.prototype.getRawEventAction = function (eventType) { var actionName = ''; switch (eventType) { case MykDeqwasModal.EVENT_TYPES.SHOW: actionName = MykDeqwasModal.EVENT_TYPES.SHOW; break; case MykDeqwasModal.EVENT_TYPES.CLOSE: actionName = MykDeqwasModal.EVENT_TYPES.CLOSE; break; case MykDeqwasModal.EVENT_TYPES.CLICK_ASSET_LINK: actionName = MykDeqwasModal.EVENT_TYPES.CLICK_ASSET_LINK; break; default: break; } return actionName; }; MykDeqwasModal.prototype.getRawEventLabel = function (element) { var eventLabel = ''; var url; var params; if (element.href && element.href.length) { url = new URL(element.href); params = url.searchParams; eventLabel = params.get('dlAssetId'); } else if (element.dataset.recommendModalAsset) { eventLabel = element.dataset.recommendModalAsset; } return eventLabel; }; return MykDeqwasModal; }()); win.KeyenceAnalytics.MykOneMorePRBanner = (function () { var GeneralMeasure = win.KeyenceAnalytics.GeneralMeasure; var MykOneMorePRBanner = function () { GeneralMeasure.call(this); }; win.KeyenceAnalytics.Analytics.inherits(MykOneMorePRBanner, GeneralMeasure); MykOneMorePRBanner.EVENT_TYPES = { SHOW: 'show', CLICK: 'click', }; MykOneMorePRBanner.prototype.getRawEventCategory = function (eventType) { var category = 'myK OneMorePR Banner'; return category; }; MykOneMorePRBanner.prototype.getRawEventAction = function (eventType) { var actionName = ''; switch (eventType) { case MykOneMorePRBanner.EVENT_TYPES.SHOW: actionName = MykOneMorePRBanner.EVENT_TYPES.SHOW; break; case MykOneMorePRBanner.EVENT_TYPES.CLICK: actionName = MykOneMorePRBanner.EVENT_TYPES.CLICK; break; default: break; } return actionName; }; MykOneMorePRBanner.prototype.getRawEventLabel = function (element) { var eventLabel = ''; var src; var videoName; if (element.href && element.href.length) { eventLabel = element.href; } else if (element.src && element.src.length) { src = element.src.split('/'); videoName = src.length ? src[src.length - 1] : src; eventLabel = videoName; } return eventLabel; }; return MykOneMorePRBanner; }()); }(window));