1(function (win, doc, util) { 2 'use strict'; 3 4 var GLOBAL; 5 var KEYENCE_SEARCH = {}; 6 var K_S = KEYENCE_SEARCH; 7 8 K_S.init = function () { 9 var self = this; 10 11 GLOBAL = { 12 SITE_LANG: win.kpi_languageSettings.siteLang, 13 MANUAL_LANG: win.kpi_languageSettings.manualLang ? win.kpi_languageSettings.manualLang : win.kpi_languageSettings.siteLang, 14 SELECT_LANG: win.kpi_languageSettings.lang, 15 SELECT_LANG1: win.kpi_languageSettings.lang1, 16 SELECT_LANG2: win.kpi_languageSettings.lang2, 17 SELECT_FILE_TYPE: win.kpi_fileTypeSettings, 18 ORIGINAL_DOMAIN: win.kpi_originalDomain, 19 TRANSLATION: win.kpi_translation, 20 ASSET_TYPE_ID: win.kpi_assetTypeId ? win.kpi_assetTypeId : '', 21 CURRENT_SERIESE_ID: win.kpi_currentSeriesId ? win.kpi_currentSeriesId : '', 22 WEB_PRODUCT_ID: win.kpi_webProductId ? win.kpi_webProductId : '', 23 SITE_ID: win.kpi_siteSettings.siteId, 24 SITE_SETTINGS_LANG: win.kpi_siteSettings.siteLang, 25 API_VERSION: win.kpi_search_api?.version, 26 API_PATHNAME: win.kpi_search_api?.pathnames, 27 }; 28 self.AFFIX = { 29 COOKIE: encodeURIComponent(GLOBAL.ORIGINAL_DOMAIN.split('www.keyence.')[1]), 30 TLD: (() => { 31 const domainMarker = 'www.keyence.'; 32 const hostname = new URL(GLOBAL.ORIGINAL_DOMAIN).hostname; 33 34 return hostname.split(domainMarker)[1] ?? ""; 35 })(), 36 ENVIRONMENT: (() => { 37 let prefix = ''; 38 const envStr = GLOBAL.ORIGINAL_DOMAIN.match(/dev-|dev2-|dev3-|dev4-|stg-/)?.[0]; 39 40 switch (envStr) { 41 case undefined: 42 break; 43 case 'dev3-': 44 prefix = 'dev-'; 45 break; 46 case 'dev4-': 47 prefix = 'dev2-'; 48 break; 49 default: 50 prefix = envStr; 51 } 52 53 if (GLOBAL.API_VERSION === 2 && /^dev/.test(envStr)) { 54 prefix = 'dev-'; 55 } 56 57 return prefix; 58 })(), 59 }; 60 self.PARAMS = { 61 STG_FLAG: (() => { 62 let param = ''; 63 const key = 'stg_flag'; 64 const envStr = GLOBAL.ORIGINAL_DOMAIN.match(/dev-|dev2-|dev3-|dev4-|stg-/)?.[0]; 65 66 if (envStr === 'dev-' || envStr === 'dev3-') { 67 param = `${key}=0&`; 68 } else if (envStr === 'dev2-' || envStr === 'dev4-' || envStr === 'stg-') { 69 param = `${key}=1&`; 70 } 71 72 return param; 73 })(), 74 }; 75 self.CONFIG = { 76 SMALL_SCREEN_MQ: win.matchMedia('only screen and (max-width: 768px)'), 77 LARGE_SCREEN_MQ: win.matchMedia('only screen and (max-width: 969px)'), 78 FOCUSABLE: 'a, area, [tabindex], input, button, select, option, textarea, output, summary, video, audio, object, embed', 79 ONE_TIME_DATA_LOAD_MAX_NUM: 12, 80 ONE_TIME_DISPLAY_MAX_NUM: 12, 81 HISTORY_MAX_SAVED_NUM: 5, 82 HIDDEN_ATTR: 'IsHidden', 83 SHOW_ATTR: 'IsShow', 84 OPEN_ATTR: 'IsOpen', 85 LOAD_ATTR: 'IsLoad', 86 ACTIVE_ATTR: 'IsActive', 87 CHECKED_ATTR: 'IsChecked', 88 NORESULT_ATTR: 'IsNoResult', 89 SUGGEST_SHOW_ATTR: 'is-suggest-show', 90 SELECT_LANG_COOKIE_NAME: 'kpi_has_selectLang_' + self.AFFIX.COOKIE, 91 SELECT_MANUAL_LANG_COOKIE_NAME: 'kpi_has_selectLang_' + self.AFFIX.COOKIE + '_ma', 92 SELECT_FILE_COOKIE_NAME: 'kpi_has_selectFile_' + self.AFFIX.COOKIE, 93 SELECT_CATEGORY_COOKIE_NAME: 'kpi_has_selectCategory_' + self.AFFIX.COOKIE, 94 HISTORY_COOKIE_NAME: 'kpi_has_searchHistory_' + self.AFFIX.COOKIE, 95 DISCONTINUED_COOKIE_NAME: 'kpi_has_discontinued_' + self.AFFIX.COOKIE, 96 VIEW_COOKIE_NAME: 'kpi_has_view_' + self.AFFIX.COOKIE, 97 API_DOMAIN: GLOBAL.API_VERSION === 2 ? 98 `https://${self.AFFIX.ENVIRONMENT}api-web.keyence.${self.AFFIX.TLD}` : 99 GLOBAL.SITE_ID === 21 ? 100 `https://${self.AFFIX.ENVIRONMENT}api-web.keyence.com.cn` : 101 `https://${self.AFFIX.ENVIRONMENT}api-web.keyence.com`, 102 API_SITE_SETTINGS_PARAM: `${self.PARAMS.STG_FLAG}site_id=${GLOBAL.SITE_ID}&language_id=${GLOBAL.SITE_SETTINGS_LANG}`, 103 }; 104 self.API_PATHNAME = { 105 PAGE: GLOBAL.API_PATHNAME?.PAGE ?? '/ajax/search/content/', 106 ASSET: GLOBAL.API_PATHNAME?.ASSET ?? '/ajax/search/asset/', 107 PRODUCT: GLOBAL.API_PATHNAME?.PRODUCT ?? '/ajax/search/product/', 108 DATA_SHEET: GLOBAL.API_PATHNAME?.DATA_SHEET ?? '/ajax/search/datasheet/', 109 SUGGEST_SERIES: GLOBAL.API_PATHNAME?.SUGGEST_SERIES ?? '/ajax/suggest/product_series/', 110 SUGGEST_MODEL: GLOBAL.API_PATHNAME?.SUGGEST_MODEL ?? '/ajax/suggest/product_model/', 111 SUGGEST_PAGE: GLOBAL.API_PATHNAME?.SUGGEST_PAGE ?? '/ajax/suggest/keyword/', 112 SUGGEST_ASSET: GLOBAL.API_PATHNAME?.SUGGEST_ASSET ?? '/ajax/suggest/asset/', 113 PRODUCT_COMPLETE_MATCH: GLOBAL.API_PATHNAME?.PRODUCT_COMPLETE_MATCH ?? '/ajax/search/perfect_match_product/', 114 DID_YOU_MEAN_MODEL: GLOBAL.API_PATHNAME?.DID_YOU_MEAN_MODEL ?? '/ajax/didyoumean/product_model/', 115 }; 116 self.API_PATH = { 117 PAGE: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.PAGE}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 118 ASSET: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.ASSET}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 119 PRODUCT: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.PRODUCT}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 120 DATA_SHEET: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.DATA_SHEET}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 121 SUGGEST_SERIES: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.SUGGEST_SERIES}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 122 SUGGEST_MODEL: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.SUGGEST_MODEL}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 123 SUGGEST_PAGE: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.SUGGEST_PAGE}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 124 SUGGEST_ASSET: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.SUGGEST_ASSET}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 125 PRODUCT_COMPLETE_MATCH: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.PRODUCT_COMPLETE_MATCH}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 126 DID_YOU_MEAN_MODEL: `${self.CONFIG.API_DOMAIN}${self.API_PATHNAME.DID_YOU_MEAN_MODEL}?${self.CONFIG.API_SITE_SETTINGS_PARAM}&`, 127 }; 128 self.getElem = { 129 docElement: doc.documentElement ? doc.documentElement : doc.body,
130 loadMoreBtn: doc.getElementById('JSLoadMoreBtn') ? 131 doc.getElementById('JSLoadMoreBtn') : 132 doc.getElementById('js-loadMoreResults-button'), 133 loadMoreBtnWrap: doc.getElementById('JSSearchMoreBtnWrapper') ? 134 doc.getElementById('JSSearchMoreBtnWrapper') : 135 doc.getElementById('js-loadMoreResults'), 136 loadMoreBtnLabel: doc.getElementById('js-loadMoreResults-label'), 137 searchPageList: doc.getElementById('JSSearchPageList') ? 138 doc.getElementById('JSSearchPageList') : 139 doc.getElementById('js-loadPageList'), 140 searchPageListTemplate: doc.getElementById('JSSearchPageListTemplate'), 141 searchDL: doc.getElementById('JSSearchDownloadList') ? 142 doc.getElementById('JSSearchDownloadList') : 143 doc.getElementById('js-loadAssets'), 144 searchDLCA: doc.getElementById('JSSearchDownloadListCA'), 145 searchDLTG: doc.getElementById('JSSearchDownloadListTG'), 146 searchDLSo: doc.getElementById('js-loadSoAssets'), 147 searchDLCd: doc.getElementById('js-loadCdAssets'), 148 searchDLMa: doc.getElementById('js-loadMaAssets'), 149 searchDLCa: doc.getElementById('js-loadCaAssets'), 150 searchDLTemplate: doc.getElementById('JSSearchDownloadListTemplate'), 151 searchDLSoTemplate: doc.getElementById('JSSearchDownloadSoListTemplate'), 152 searchDLCdTemplate: doc.getElementById('JSSearchDownloadCdListTemplate'), 153 searchDataSheetList: doc.getElementById('js-loadDataSheets'), 154 searchDataSheetListTemplate: doc.getElementById('JSSearchDataSheetListTemplate'), 155 searchSeriesList: doc.getElementById('JSSearchSeriesList'), 156 searchSeriesListTemplate: doc.getElementById('JSSearchSeriesListTemplate'), 157 searchModelList: doc.getElementById('JSSearchModelList'), 158 searchProbablyModelList: doc.getElementById('JSSearchProbablyModelList'), 159 searchModelListTemplate: doc.getElementById('JSSearchModelListTemplate'), 160 searchKISeriesListTemplate: doc.getElementById('JSSearchKISeriesListTemplate'), 161 searchHistoryTemplate: doc.getElementById('JSSearchHistoryTemplate'), 162 suggestKeywordsTemplate: doc.getElementById('JSSuggestKeywordsTemplate'), 163 suggestSeriesTemplate: doc.getElementById('JSSuggestSeriesTemplate'), 164 suggestModelTemplate: doc.getElementById('JSSuggestModelTemplate'), 165 suggestAssetTemplate: doc.getElementById('JSSuggestAssetTemplate'), 166 modelsListTemplate: doc.getElementById('JSModelsListTemplate'), 167 selectedModelsTemplate: doc.getElementById('JSSelectedModelsTemplate'), 168 loadResultsNav: doc.getElementById('js-loadResults-navigation'), 169 changeView: doc.getElementById('JSChangeView'), 170 selectTypes: doc.getElementById('JSSelectTypes'), 171 langSelectWrap: doc.getElementById('js-selectAssetslanguage'), 172 filterModels: doc.getElementById('js-filterModels'), 173 filterModelsBtn: doc.getElementById('js-filterModels-button'), 174 selectModels: doc.getElementById('js-selectModels'), 175 ModelsList: doc.getElementById('js-setModelsList'), 176 filterFileTypes: doc.getElementById('js-filterFileTypes'), 177 filterCategories: doc.getElementById('js-filterCategories'), 178 selectTypesHook: doc.getElementById('JSSelectTypesHook'), 179 selectTypesPulldown: doc.getElementById('JSSelectTypesPulldown'), 180 selectTypesLabel: doc.getElementById('JSSelectTypesLabel'), 181 selectTypesLength: doc.getElementById('JSSelectTypesLength'), 182 selectTypesBox: doc.getElementById('JSSelectTypesBox'), 183 selectTypesBtn: doc.getElementById('JSSelectTypesBtn'), 184 langSelectOpener: doc.getElementById('js-selectAssetslanguage-opener'), 185 langList: doc.getElementById('JSLangList') ? 186 doc.getElementById('JSLangList') : 187 doc.getElementById('js-selectAssetslanguage-list'), 188 allLangTemp: doc.getElementById('JSAllLangTemplate'), 189 lang1Temp: doc.getElementById('JSLang1Template'), 190 lang2Temp: doc.getElementById('JSLang2Template'), 191 discontinuedToggle: doc.getElementById('JSDiscontinuedToggle'), 192 drillDownNav: doc.getElementById('JSDrillDownNav'), 193 groupListTemplate: doc.getElementById('JSDrillDownNavGroupListTemplate'), 194 typeListTemplate: doc.getElementById('JSDrillDownNavTypeListTemplate'), 195 seriesListTemplate: doc.getElementById('JSDrillDownNavSeriesListTemplate'), 196 utilSuggestSeriesList: doc.getElementById('JSUtilSuggestSeriesList'), 197 suggestSeriesListWithPrioritySort: doc.getElementById('js-loadSeriesWithPrioritySort-list'), 198 utilSuggestModelList: doc.getElementById('JSUtilSuggestModelList'), 199 suggestModelsListWithPrioritySort: doc.getElementById('js-loadModelsWithPrioritySort-list'), 200 utilSuggestKeywordsList: doc.getElementById('JSUtilSuggestKeywordsList'), 201 utilSuggestAssetList: doc.getElementById('JSUtilSuggestAssetList'), 202 headerSuggestSeriesList: doc.getElementById('JSHeaderSuggestSeriesList'), 203 headerSuggestModelList: doc.getElementById('JSHeaderSuggestModelList'), 204 headerSuggestKeywordsList: doc.getElementById('JSHeaderSuggestKeywordsList'), 205 mainContForm: doc.getElementById('form0'), 206 productsSuggestFilter: doc.getElementById('IncludeDiscontinuedProducts'), 207 categorySPLabel: doc.getElementById('JSCategorySPLabel'), 208 categoryPCLabel: doc.getElementById('JSCategoryPCLabel'), 209 drillDownSPButtonList: doc.getElementById('JSDrillDownSPButtonList'), 210 drillDownSPSelect: doc.getElementById('JSDrillDownSPSelect'), 211 drillDownSPReset: doc.getElementById('JSDrillDownSPReset'), 212 menuOverlay: doc.getElementById('js-menu-overlay'), 213 }; 214 self.getAttr = { 215 loadStartText: K_S.getElem.loadMoreBtn ? K_S.getElem.loadMoreBtn.getAttribute('data-load-text') : null, 216 loadingText: K_S.getElem.loadMoreBtn ? K_S.getElem.loadMoreBtn.getAttribute('data-loading-text') : null, 217 openText: K_S.getElem.drillDownNav ? K_S.getElem.drillDownNav.getAttribute('data-open-text') : null, 218 closeText: K_S.getElem.drillDownNav ? K_S.getElem.drillDownNav.getAttribute('data-close-text') : null, 219 groupHierarchy: K_S.getElem.groupListTemplate ? K_S.getElem.groupListTemplate.getAttribute('data-hierarchy') : null, 220 typeHierarchy: K_S.getElem.typeListTemplate ? K_S.getElem.typeListTemplate.getAttribute('data-hierarchy') : null, 221 seriesHierarchy: K_S.getElem.seriesListTemplate ? K_S.getElem.seriesListTemplate.getAttribute('data-hierarchy') : null, 222 }; 223 224 self.polyfill.setChildNodeRemove(); 225 self.polyfill.setNodeListForEach(); 226 self.polyfill.setElemClosest(); 227 self.polyfill.setObjectAssign(); 228 }; 229 230 doc.addEventListener('DOMContentLoaded', function () { 231 K_S.runDomReady(); 232 }, false); 233 234 win.addEventListener('popstate', function (e) { 235 if (e.state) { 236 return; 237 } 238 239 if (!win.location.search && win.location.hash) { 240 return; 241 } 242 243 if (!win.location.hash && win.location.href.split('#')[1] === '') { 244 return; 245 } 246 247 win.location.reload(); 248 }, false); 249 250 win.addEventListener('pageshow', function (e) { 251 var userAgent = win.navigator.userAgent.toLowerCase(); 252 253 if (userAgent.indexOf('safari') !== -1 && userAgent.indexOf('chrome') === -1 && userAgent.indexOf('edge') === -1) { 254 if (e.persisted) { 255 win.location.reload(); 256 } 257 } 258 }, false); 259 260 win.addEventListener('load', function () { 261 K_S.runLoad(); 262 }, false); 263 264 win.addEventListener('unload', function () { 265 }, false); 266 267 K_S.fn = {}; 268 K_S.fn.setSuggest = {}; 269 K_S.fn.setDrillDown = {}; 270 K_S.runDomReady = function () { 271 var self = this; 272 var promise = Promise.resolve(); 273 274 K_S.init(); 275 promise.then(function () { 276 self.fn.setChangeSubmitDestination(); 277 self.fn.setSearchQueryTakeover(); 278 self.fn.setLangPulldown(); 279 self.fn.setFilePulldown(); 280 self.fn.setFilterByFileTypes(); 281 self.fn.setFilterByCategories(); 282 self.fn.setFilterByModels(); 283 self.fn.setDiscontinuedCookie(); 284 self.fn.setToggleDiscontinued(); 285 self.fn.setSearchString(); 286 self.fn.setDrillDown.filterClear(); 287 K_S.fn.setDrillDown.selectTarget(); 288 }).then(function () { 289 self.fn.setSelectTypes(); 290 self.fn.updateAssetsByLangSelect(); 291 self.fn.updateAssetsByFileTypeSelect(); 292 self.fn.updateAssetsByCategorySelect(); 293 self.fn.updateAssetsByModelSelect();
294 self.fn.setLoadAssets(K_S.getElem.searchDL); 295 self.fn.setLoadAssets(K_S.getElem.searchDLCA); 296 self.fn.setLoadAssets(K_S.getElem.searchDLTG); 297 self.fn.setLoadAssets(K_S.getElem.searchDLSo); 298 self.fn.setLoadAssets(K_S.getElem.searchDLCd); 299 self.fn.setLoadAssets(K_S.getElem.searchDLMa); 300 self.fn.setLoadAssets(K_S.getElem.searchDLCa); 301 self.fn.setLoadDataSheets(); 302 self.fn.setLoadSeries(); 303 self.fn.setLoadPages(); 304 self.fn.setLoadModels(); 305 self.fn.setLoadProbablyTheseModels(); 306 self.fn.setSuggest.run(); 307 self.fn.setSubmit(); 308 self.fn.setChangeView(); 309 self.fn.setLoadMore(); 310 self.fn.setSearchModal(); 311 }); 312 }; 313 314 K_S.runLoad = function () { 315 }; 316 317 K_S.fn.setChangeSubmitDestination = function () { 318 var root = doc.querySelectorAll('.JSChangeSubmitDestination'); 319 var setWhenClick; 320 321 if (!root.length) { 322 return; 323 } 324 325 setWhenClick = function (e) { 326 var self = this; 327 var href = self.href; 328 var form = self.closest('form') ? self.closest('form') : self.closest('.JSSearchSuggest').querySelector('form'); 329 330 e.preventDefault(); 331 form.setAttribute('action', href); 332 form.submit(); 333 }; 334 335 root.forEach(function (selector) { 336 selector.querySelectorAll('a').forEach(function (items) { 337 items.addEventListener('click', setWhenClick, false); 338 }); 339 }); 340 }; 341 342 K_S.fn.setSearchQueryTakeover = function () { 343 var root = doc.querySelectorAll('.JSSearchQueryTakeover'); 344 var assetPageParamElm = doc.getElementById('JSAssetPageParam'); 345 var input; 346 var fn = {}; 347 348 if (!root.length || !K_S.getElem.mainContForm) { 349 return; 350 } 351 352 fn.createGroupIDHidden = function (dict) { 353 var groupIDInput = doc.createElement('input'); 354 355 groupIDInput.type = 'hidden'; 356 groupIDInput.id = 'JSGroupIDPageParam'; 357 groupIDInput.name = 'group_id'; 358 if (dict.group_id) { 359 groupIDInput.value = decodeURIComponent(dict.group_id); 360 K_S.getElem.mainContForm.appendChild(groupIDInput); 361 } 362 }; 363 364 fn.createTypeIDHidden = function (dict) { 365 var typeIDInput = doc.createElement('input'); 366 367 typeIDInput.type = 'hidden'; 368 typeIDInput.id = 'JSTypeIDPageParam'; 369 typeIDInput.name = 'type_id'; 370 if (dict.type_id) { 371 typeIDInput.value = decodeURIComponent(dict.type_id); 372 K_S.getElem.mainContForm.appendChild(typeIDInput); 373 } 374 }; 375 376 fn.createSeriesIDHidden = function (dict) { 377 var seriesIDInput = doc.createElement('input'); 378 379 seriesIDInput.type = 'hidden'; 380 seriesIDInput.id = 'JSSeriesIDPageParam'; 381 seriesIDInput.name = 'webseries_id'; 382 if (dict.webseries_id) { 383 seriesIDInput.value = decodeURIComponent(dict.webseries_id); 384 K_S.getElem.mainContForm.appendChild(seriesIDInput); 385 } 386 }; 387 388 input = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput'); 389 fn.setWhenClick = function (e) { 390 var self = this; 391 var href = self.href; 392 var dict = util.makeQueryIntoDict(); 393 var pageParam = ''; 394 var value; 395 396 e.preventDefault(); 397 value = input.value.trim(); 398 if (value) { 399 input.value = value; 400 } else { 401 input.value = ''; 402 } 403 404 if (href.split('mode=')[1]) { 405 pageParam = href.split('mode=')[1]; 406 pageParam = pageParam.slice(0, 2); 407 if (assetPageParamElm) { 408 assetPageParamElm.value = pageParam; 409 } 410 } else { 411 if (assetPageParamElm) { 412 assetPageParamElm.value = ''; 413 } 414 } 415 416 fn.createGroupIDHidden(dict); 417 fn.createTypeIDHidden(dict); 418 fn.createSeriesIDHidden(dict); 419 420 K_S.getElem.mainContForm.setAttribute('action', self.href); 421 K_S.getElem.mainContForm.submit(); 422 }; 423 424 root.forEach(function (selector) { 425 selector.querySelectorAll('a').forEach(function (items) { 426 items.addEventListener('click', fn.setWhenClick, false); 427 }); 428 }); 429 }; 430
431 K_S.fn.setLangPulldown = function () { 432 var siteLang = GLOBAL.SITE_LANG ? GLOBAL.SITE_LANG : []; 433 var manualLang = GLOBAL.MANUAL_LANG ? GLOBAL.MANUAL_LANG : []; 434 var lang1Vals = GLOBAL.SELECT_LANG1 ? GLOBAL.SELECT_LANG1 : {}; 435 var lang2Vals = GLOBAL.SELECT_LANG2 ? GLOBAL.SELECT_LANG2 : {}; 436 var allLangVals = GLOBAL.SELECT_LANG ? GLOBAL.SELECT_LANG : {}; 437 var lang1ValsKeys = Object.keys(lang1Vals); 438 var lang2ValsKeys = Object.keys(lang2Vals); 439 var allLangValsKeys = Object.keys(allLangVals); 440 var dict = util.makeQueryIntoDict(); 441 var langCookie = dict.mode === 'ma' ? 442 util.getCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME) : 443 util.getCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME); 444 var langParam = dict.language_type_id; 445 var optionDefautlVal = null; 446 var fragment = doc.createDocumentFragment(); 447 var defaultOptionElem = doc.createElement('option'); 448 var optionArr = []; 449 var cookieArr = []; 450 var lang1Arr = []; 451 var lang2Arr = []; 452 var langAllArr = []; 453 var fn = {}; 454 var selectedLangLabel = ''; 455 var unselectedLabel = ''; 456 457 if (!K_S.getElem.langList) { 458 return; 459 } 460 461 fn.setDefaultLang = function (langValue) { 462 var langArr = util.removeEmptyArr(langValue); 463 464 langArr.forEach(function (items) { 465 K_S.getElem.langList.querySelectorAll('[value="' + items + '"]').forEach(function (selector) { 466 if (selector.nodeName === 'OPTION') { 467 optionArr.push(selector); 468 } else { 469 selector.checked = true; 470 } 471 }); 472 }); 473 if (optionArr.length) { 474 if (K_S.getElem.selectTypesPulldown) { 475 K_S.getElem.selectTypesPulldown.disabled = false; 476 K_S.getElem.selectTypesPulldown.value = optionArr[0].value; 477 } 478 if (K_S.getElem.langList.querySelector('[value="other"]')) { 479 K_S.getElem.langList.querySelector('[value="other"]').checked = true; 480 } 481 } 482 }; 483 484 fn.createMainLangElem = function (target, array, callback) { 485 if (!K_S.getElem.lang1Temp) { 486 return; 487 } 488 489 target.forEach(function (items) { 490 var lang1NodeClone = util.createNodeClone(K_S.getElem.lang1Temp, 'li'); 491 var lang1Selector = lang1NodeClone.querySelector('[name="lang1"]'); 492 var lang1Label = lang1NodeClone.querySelector('.LangLabel'); 493 494 if (array && array.indexOf(items) > -1) { 495 return; 496 } 497 498 if (lang1Selector) { 499 lang1Selector.value = items; 500 } 501 if (lang1Label) { 502 lang1Label.textContent = lang1Vals[items] || lang2Vals[items]; 503 } 504 if (langCookie && lang1Selector) { 505 langCookie.forEach(function (cookies) { 506 if (items === cookies) { 507 lang1Selector.checked = true; 508 } 509 }); 510 } 511 fragment.appendChild(lang1NodeClone); 512 513 if (callback) { 514 callback(items); 515 } 516 }); 517 }; 518 519 fn.createOtherLangElem = function () { 520 if (!K_S.getElem.lang2Temp) { 521 return; 522 } 523 524 lang2ValsKeys.forEach(function (items) { 525 var lang2NodeClone = util.createNodeClone(K_S.getElem.lang2Temp, 'div'); 526 var lang2Selector = lang2NodeClone.querySelector('option'); 527 528 if (lang2Arr.indexOf(items) > -1) { 529 return; 530 } 531 532 if (lang2Selector) { 533 lang2Selector.value = items; 534 lang2Selector.textContent = lang2Vals[items]; 535 536 if (langCookie) { 537 langCookie.forEach(function (cookies) { 538 if (items === cookies) { 539 if (K_S.getElem.selectTypesPulldown) { 540 K_S.getElem.selectTypesPulldown.disabled = false; 541 } 542 lang2Selector.selected = true; 543 if (K_S.getElem.langList.querySelector('[value="other"]')) { 544 K_S.getElem.langList.querySelector('[value="other"]').checked = true; 545 } 546 } 547 }); 548 } 549 fragment.appendChild(lang2Selector); 550 } 551 }); 552 }; 553 554 fn.createAllLangElem = function (target, array, callback) { 555 if (K_S.getElem.lang1Temp || 556 !K_S.getElem.allLangTemp || 557 !K_S.getElem.langSelectWrap || 558 !K_S.getElem.langSelectOpener 559 ) { 560 return; 561 } 562 563 target.forEach(function (items) { 564 var langNodeClone = util.createNodeClone(K_S.getElem.allLangTemp, 'p'); 565 var langSelector = langNodeClone.querySelector('[name="lang"]'); 566 var langLabel = langNodeClone.querySelector('.js-selectAssetslanguage-label'); 567 568 if (array && array.indexOf(items) > -1) { 569 return; 570 } 571 572 if (langSelector) { 573 langSelector.value = items; 574 } 575 if (langLabel) { 576 langLabel.textContent = allLangVals[items]; 577 } 578 if (langCookie && langSelector) { 579 langCookie.forEach(function (cookies) { 580 if (items === cookies) { 581 langSelector.checked = true; 582 selectedLangLabel += ', ' + langLabel.textContent; 583 } 584 }); 585 } 586 fragment.appendChild(langNodeClone); 587 588 if (callback) { 589 callback(items); 590 } 591 }); 592 593 selectedLangLabel = selectedLangLabel.replace(/^, /, ''); 594 K_S.getElem.langSelectOpener.textContent = selectedLangLabel; 595 K_S.getElem.langSelectOpener.setAttribute('aria-label', GLOBAL.TRANSLATION.Selected + ': ' + selectedLangLabel); 596 }; 597
598 fn.setLangArr = function (items) { 599 if (lang1Vals.hasOwnProperty(items)) { 600 lang1Arr.push(items); 601 } 602 if (lang2Vals.hasOwnProperty(items)) { 603 lang2Arr.push(items); 604 } 605 }; 606 607 fn.setLangAllArr = function (items) { 608 if (allLangVals.hasOwnProperty(items)) { 609 langAllArr.push(items); 610 } 611 }; 612 613 fn.updateCookies = function () { 614 if (langParam) { 615 langParam.split(',').forEach(function (items) { 616 if (K_S.getElem.lang1Temp && lang1ValsKeys.indexOf(items) > -1) { 617 cookieArr.push(items); 618 } 619 if (K_S.getElem.lang2Temp && lang2ValsKeys.indexOf(items) > -1) { 620 cookieArr.push(items); 621 } 622 if (K_S.getElem.allLangTemp && allLangValsKeys.indexOf(items) > -1) { 623 cookieArr.push(items); 624 } 625 }); 626 if (cookieArr.length) { 627 if (dict.mode === 'ma') { 628 util.setCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME, JSON.stringify(cookieArr)); 629 } else { 630 util.setCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME, JSON.stringify(cookieArr)); 631 } 632 } else { 633 if (!langCookie) { 634 if (dict.mode === 'ma') { 635 util.setCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME, JSON.stringify(manualLang)); 636 } else { 637 util.setCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME, JSON.stringify(siteLang)); 638 } 639 } 640 } 641 } else { 642 if (!langCookie) { 643 if (dict.mode === 'ma') { 644 util.setCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME, JSON.stringify(manualLang)); 645 } else { 646 util.setCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME, JSON.stringify(siteLang)); 647 } 648 } 649 } 650 }; 651 652 fn.outputElems = function () { 653 langCookie = dict.mode === 'ma' ? 654 util.getCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME) : 655 util.getCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME); 656 657 if (langCookie) { 658 langCookie = JSON.parse(langCookie); 659 } 660 661 if (dict.mode === 'ma') { 662 fn.createMainLangElem(manualLang, null, fn.setLangArr); 663 fn.createAllLangElem(manualLang, null, fn.setLangAllArr); 664 } else { 665 fn.createMainLangElem(siteLang, null, fn.setLangArr); 666 fn.createAllLangElem(siteLang, null, fn.setLangAllArr); 667 } 668 669 fn.createMainLangElem(Object.keys(lang1Vals), lang1Arr, null); 670 fn.createAllLangElem(Object.keys(allLangVals), langAllArr, null); 671 672 if (!selectedLangLabel && K_S.getElem.langSelectWrap && 673 K_S.getElem.langSelectWrap.dataset.languagesSelectUnselectedLabelValue 674 ) { 675 unselectedLabel = K_S.getElem.langSelectWrap.dataset.languagesSelectUnselectedLabelValue; 676 K_S.getElem.langSelectOpener.textContent = unselectedLabel; 677 } 678 679 K_S.getElem.langList.insertBefore(fragment, K_S.getElem.langList.firstChild); 680 681 fn.createOtherLangElem(); 682 683 if (K_S.getElem.selectTypesPulldown) { 684 optionDefautlVal = K_S.getElem.selectTypesPulldown.getAttribute('data-default-value'); 685 } 686 defaultOptionElem.value = ''; 687 defaultOptionElem.textContent = optionDefautlVal; 688 if (K_S.getElem.selectTypesPulldown) { 689 K_S.getElem.selectTypesPulldown.appendChild(defaultOptionElem); 690 K_S.getElem.selectTypesPulldown.appendChild(fragment); 691 } 692 }; 693 694 fn.init = function () { 695 fn.updateCookies(); 696 fn.outputElems(); 697 }; 698 699 fn.init(); 700 }; 701 702 K_S.fn.setFilterByModels = function () { 703 var downloadsModels = win.tkt_downloadModels; 704 var listFragment = doc.createDocumentFragment(); 705 var selectedFragment = doc.createDocumentFragment(); 706 var dict = util.makeQueryIntoDict(); 707 var productIDParam = dict.modelId; 708 var fn = {}; 709 var disabledLength = 0; 710 711 if (!K_S.getElem.modelsListTemplate || 712 !K_S.getElem.selectedModelsTemplate || 713 !K_S.getElem.ModelsList || 714 !K_S.getElem.selectModels || 715 !K_S.getElem.filterModels || 716 !K_S.getElem.filterModelsBtn || 717 !downloadsModels 718 ) { 719 return; 720 } 721 722 fn.createPseudoFocusElem = function () { 723 var newElem = doc.createElement('div'); 724 var modelList = K_S.getElem.ModelsList; 725 726 newElem.tabIndex = 0; 727 newElem.style.outline = 0; 728 modelList.parentNode.insertBefore(newElem, modelList); 729 }; 730 731 fn.createModelsList = function () { 732 if (win.createModelsListCompleted === true) { 733 return; 734 } 735
736 downloadsModels.models.forEach(function (items) { 737 var modelsNodeClone = util.createNodeClone(K_S.getElem.modelsListTemplate, 'div'); 738 var models = util.checkSupportsTemp() ? 739 modelsNodeClone.querySelector('.js-setModelsList-child') : 740 modelsNodeClone; 741 var modelsCheckbox = modelsNodeClone.querySelector('.js-setModelsList-checkbox'); 742 var modelsLabel = modelsNodeClone.querySelector('.js-setModelsList-label'); 743 var selectedNodeClone = util.createNodeClone(K_S.getElem.selectedModelsTemplate, 'li'); 744 var selected = util.checkSupportsTemp() ? 745 selectedNodeClone.querySelector('.js-selectModels-child') : 746 selectedNodeClone; 747 var selectedLabel = selectedNodeClone.querySelector('.js-selectModels-label'); 748 var deleteButton = selectedNodeClone.querySelector('.js-selectModels-deleteButton'); 749 750 if (models) { 751 models.setAttribute('data-id', items.id); 752 } 753 754 if (modelsCheckbox) { 755 modelsCheckbox.value = items.name; 756 757 if (!items.hasAssets) { 758 modelsCheckbox.disabled = true; 759 disabledLength++; 760 } 761 } 762 763 if (modelsLabel) { 764 modelsLabel.textContent = items.name; 765 } 766 767 listFragment.appendChild(modelsNodeClone); 768 769 if (selected) { 770 selected.setAttribute('data-value', items.name); 771 selected.hidden = true; 772 selected.setAttribute('data-id', items.id); 773 } 774 775 if (selectedLabel) { 776 selectedLabel.textContent = items.name; 777 } 778 779 if (deleteButton) { 780 deleteButton.value = items.name; 781 deleteButton.setAttribute('aria-label', deleteButton.dataset.defaultLabel + ': ' + items.name); 782 } 783 784 selectedFragment.appendChild(selectedNodeClone); 785 }); 786 787 K_S.getElem.ModelsList.appendChild(listFragment); 788 K_S.getElem.selectModels.appendChild(selectedFragment); 789 790 if (downloadsModels.models.length === disabledLength) { 791 fn.createPseudoFocusElem(); 792 } 793 794 win.createModelsListCompleted = true; 795 }; 796 797 fn.setDefaultLabel = function () { 798 if (K_S.getElem.filterModels.dataset.downloadModelFilterUnselectedLabelValue 799 ) { 800 K_S.getElem.filterModelsBtn.textContent = K_S.getElem.filterModels.dataset.downloadModelFilterUnselectedLabelValue; 801 } 802 803 }; 804 805 fn.showSelectedModels = function () { 806 var selectedItems = K_S.getElem.selectModels.querySelectorAll('.js-selectModels-child'); 807 var models = K_S.getElem.ModelsList.querySelectorAll('.js-setModelsList-child'); 808 809 if (!selectedItems.length || 810 !models.length 811 ) { 812 return; 813 } 814 815 downloadsModels.selected.forEach(function (items) { 816 selectedItems.forEach(function (lists) { 817 if (items === lists.dataset.id) { 818 lists.hidden = false; 819 } 820 }); 821 822 models.forEach(function (lists) { 823 if (items === lists.dataset.id) { 824 lists.querySelector('.js-setModelsList-checkbox').checked = true; 825 } 826 }); 827 }); 828 }; 829 830 fn.initDisplayByParams = function () { 831 var selectedItems = K_S.getElem.selectModels.querySelectorAll('.js-selectModels-child'); 832 var models = K_S.getElem.ModelsList.querySelectorAll('.js-setModelsList-child'); 833 var uncheckAllButton = document.querySelector('[data-download-model-filter-target="uncheckAllButton"]'); 834 var uncheckFlag = false; 835 836 if (!selectedItems.length || 837 !models.length 838 ) { 839 return; 840 } 841 842 if (productIDParam) { 843 K_S.getElem.filterModelsBtn.textContent = ''; 844 productIDParam.split(',').forEach(function (items) {
845 selectedItems.forEach(function (lists) { 846 if (items === lists.dataset.id) { 847 lists.hidden = false; 848 } 849 }); 850 851 models.forEach(function (lists) { 852 if (items === lists.dataset.id) { 853 lists.querySelector('.js-setModelsList-checkbox').checked = true; 854 uncheckFlag = true; 855 } 856 }); 857 }); 858 859 if (uncheckAllButton) { 860 if (uncheckFlag) { 861 uncheckAllButton.disabled = false; 862 } 863 } 864 } 865 }; 866 867 fn.setModelsResultsNum = function () { 868 var resultsNumberElm = K_S.getElem.filterModels.querySelectorAll('.js-setModelsList-resultsNumber'); 869 870 if (!resultsNumberElm.length) { 871 return; 872 } 873 874 resultsNumberElm.forEach(function (items) { 875 items.textContent = downloadsModels.models.length; 876 }); 877 }; 878 879 fn.init = function () { 880 fn.createModelsList(); 881 fn.setDefaultLabel(); 882 fn.setModelsResultsNum(); 883 fn.initDisplayByParams(); 884 }; 885 886 fn.init(); 887 }; 888 889 K_S.fn.updateAssetsByModelSelect = function () { 890 var observer = null; 891 var observerConfig = { 892 subtree: true, 893 attributes: true, 894 }; 895 var fn = {}; 896 897 if (!K_S.getElem.selectModels) { 898 return; 899 } 900 901 fn.update = function () { 902 var dict = util.makeQueryIntoDict(); 903 var selectModelsList = K_S.getElem.selectModels.querySelectorAll('.js-selectModels-child:not([hidden])'); 904 var modelsArr = []; 905 906 selectModelsList.forEach(function (items) { 907 modelsArr.push(items.dataset.id); 908 }); 909 910 dict.modelId = modelsArr.join(','); 911 dict.o = 0; 912 913 util.updateBrowserHistory(dict); 914 915 setTimeout(function () { 916 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 917 }, 200); 918 }; 919 920 observer = new MutationObserver(function () { 921 fn.update(); 922 }); 923 924 observer.observe(K_S.getElem.selectModels, observerConfig); 925 }; 926 927 K_S.fn.setFilterByFileTypes = function () { 928 var defaultFileArr = []; 929 var cookieArr = []; 930 var fileCookie = util.getCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME); 931 var fileTypeKeys = Object.keys(GLOBAL.SELECT_FILE_TYPE); 932 var dict = util.makeQueryIntoDict(); 933 var fileParam = dict.assetdetail_type_id; 934 var fileTypes; 935 var checkedFileTypes; 936 var fileTypesGroup; 937 var checkedCount = 0; 938 939 if (!K_S.getElem.filterFileTypes) { 940 return; 941 } 942 943 fileTypes = K_S.getElem.filterFileTypes.querySelectorAll('[name="ft"]'); 944 checkedFileTypes = K_S.getElem.filterFileTypes.querySelectorAll('[name="ft"]:checked'); 945 fileTypesGroup = K_S.getElem.filterFileTypes.querySelector('[name="all"]'); 946 947 if (fileParam) { 948 fileParam.split(',').forEach(function (items) { 949 if (fileTypeKeys.indexOf(items) > -1) { 950 cookieArr.push(items); 951 } 952 }); 953 if (cookieArr.length) { 954 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify(cookieArr)); 955 } else { 956 if (!fileCookie) { 957 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify([])); 958 } 959 } 960 } else { 961 if (!fileCookie) { 962 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify([])); 963 } 964 } 965 966 fileCookie = util.getCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME); 967 968 if (fileCookie) { 969 fileCookie = JSON.parse(fileCookie); 970 971 if (!fileTypes.length) { 972 return; 973 } 974
975 fileTypes.forEach(function (items) { 976 items.checked = false; 977 fileCookie.forEach(function (cookies) { 978 if (items.value === cookies) { 979 items.checked = true; 980 checkedCount++; 981 } 982 }); 983 }); 984 985 if (checkedCount && fileTypesGroup) { 986 fileTypesGroup.indeterminate = true; 987 } 988 989 if (fileTypes.length === checkedCount && fileTypesGroup) { 990 fileTypesGroup.indeterminate = false; 991 fileTypesGroup.checked = true; 992 } 993 994 if (!checkedCount) { 995 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify([])); 996 } 997 } else { 998 if (checkedFileTypes.length) { 999 checkedFileTypes.forEach(function (items) { 1000 defaultFileArr.push(items.value); 1001 }); 1002 } 1003 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify(defaultFileArr)); 1004 } 1005 }; 1006 1007 K_S.fn.setFilePulldown = function () { 1008 var defaultFileArr = []; 1009 var selectTypesData; 1010 var changeElem; 1011 var checkedElem; 1012 var fileCookie = util.getCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME); 1013 var fileTypeKeys = Object.keys(GLOBAL.SELECT_FILE_TYPE); 1014 var dict = util.makeQueryIntoDict(); 1015 var fileParam = dict.assetdetail_type_id; 1016 var cookieArr = []; 1017 1018 if (!K_S.getElem.selectTypes) { 1019 return; 1020 } 1021 1022 selectTypesData = K_S.getElem.selectTypes.getAttribute('data-type'); 1023 changeElem = K_S.getElem.selectTypes.querySelectorAll('[type="checkbox"]'); 1024 checkedElem = K_S.getElem.selectTypes.querySelectorAll(':checked'); 1025 1026 if (selectTypesData === 'file') { 1027 if (fileParam) { 1028 fileParam.split(',').forEach(function (items) { 1029 if (fileTypeKeys.indexOf(items) > -1) { 1030 cookieArr.push(items); 1031 } 1032 }); 1033 if (cookieArr.length) { 1034 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify(cookieArr)); 1035 } else { 1036 if (!fileCookie) { 1037 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify([])); 1038 } 1039 } 1040 } else { 1041 if (!fileCookie) { 1042 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify([])); 1043 } 1044 } 1045 1046 fileCookie = util.getCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME); 1047 1048 if (fileCookie) { 1049 fileCookie = JSON.parse(fileCookie); 1050 changeElem.forEach(function (items) { 1051 items.checked = false; 1052 fileCookie.forEach(function (cookies) { 1053 if (items.value === cookies) { 1054 items.checked = true; 1055 } 1056 }); 1057 }); 1058 } else { 1059 if (checkedElem.length) { 1060 checkedElem.forEach(function (items) { 1061 defaultFileArr.push(items.value); 1062 }); 1063 } 1064 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify(defaultFileArr)); 1065 } 1066 } 1067 }; 1068 1069 K_S.fn.updateAssetsByFileTypeSelect = function () { 1070 var fileTypeCheckbox = null; 1071 var observer = null; 1072 var observerConfig = { 1073 attributes: true, 1074 attributeOldValue: true, 1075 }; 1076 var fn = {}; 1077 1078 if (!K_S.getElem.filterFileTypes) { 1079 return; 1080 } 1081 1082 fileTypeCheckbox = K_S.getElem.filterFileTypes.querySelectorAll('[name="ft"]'); 1083 1084 fn.writeDataChecked = function () { 1085 var fileTypeArr = []; 1086 1087 if (!fileTypeCheckbox.length) { 1088 return; 1089 } 1090 1091 K_S.getElem.filterFileTypes.querySelectorAll('[name="ft"]:checked').forEach(function (items) { 1092 fileTypeArr.push(items.value); 1093 }); 1094 K_S.getElem.filterFileTypes.setAttribute('data-checked', fileTypeArr.join(',')); 1095 }; 1096 1097 fn.update = function () { 1098 var dict = util.makeQueryIntoDict(); 1099 var checkedFileTypes = K_S.getElem.filterFileTypes.querySelectorAll('[name="ft"]:checked'); 1100 var fileArr = []; 1101
1102 checkedFileTypes.forEach(function (items) { 1103 fileArr.push(items.value); 1104 }); 1105 1106 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify(fileArr)); 1107 dict.assetdetail_type_id = fileArr.join(','); 1108 dict.o = 0; 1109 util.updateBrowserHistory(dict); 1110 1111 setTimeout(function () { 1112 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 1113 }, 200); 1114 }; 1115 1116 fileTypeCheckbox.forEach(function (items) { 1117 items.addEventListener('change', fn.writeDataChecked); 1118 }); 1119 1120 observer = new MutationObserver(function (e) { 1121 if (e[0].oldValue !== e[0].target.dataset.checked) { 1122 fn.update(); 1123 } 1124 }); 1125 1126 observer.observe(K_S.getElem.filterFileTypes, observerConfig); 1127 }; 1128 1129 K_S.fn.setFilterByCategories = function () { 1130 var elems = { 1131 root: K_S.getElem.filterCategories, 1132 }; 1133 var categoryCookieName = util.addAssetTypeToString(K_S.CONFIG.SELECT_CATEGORY_COOKIE_NAME); 1134 var categoryCookie = util.getCookie(categoryCookieName); 1135 var dict = util.makeQueryIntoDict(); 1136 var categoryParam = dict.mode === 'ds' ? dict.product_type_id : dict.assetdetail_type_id; 1137 var cookieArr = []; 1138 var categoryValues = []; 1139 var checkedCount = 0; 1140 var fn = {}; 1141 1142 if (!elems.root) { 1143 return; 1144 } 1145 1146 fn.configElems = function () { 1147 elems.categories = elems.root.querySelectorAll('[name="category"]'); 1148 elems.categoriesGroup = elems.root.querySelector('[name="all"]'); 1149 1150 elems.categories.forEach(function (items) { 1151 categoryValues.push(items.value); 1152 }); 1153 }; 1154 1155 fn.setCategoryCookie = function () { 1156 if (categoryParam) { 1157 categoryParam.split(',').forEach(function (items) { 1158 if (categoryValues.indexOf(items) > -1) { 1159 cookieArr.push(items); 1160 } 1161 }); 1162 if (cookieArr.length) { 1163 util.setCookie(categoryCookieName, JSON.stringify(cookieArr)); 1164 } else { 1165 if (!categoryCookie) { 1166 util.setCookie(categoryCookieName, JSON.stringify([])); 1167 } 1168 } 1169 } else { 1170 if (!categoryCookie) { 1171 util.setCookie(categoryCookieName, JSON.stringify([])); 1172 } 1173 } 1174 }; 1175 1176 fn.display = function () { 1177 categoryCookie = util.getCookie(categoryCookieName); 1178 1179 if (categoryCookie) { 1180 categoryCookie = JSON.parse(categoryCookie); 1181 1182 elems.categories.forEach(function (items) { 1183 items.checked = false; 1184 categoryCookie.forEach(function (cookies) { 1185 if (items.value === cookies) { 1186 items.checked = true; 1187 checkedCount++; 1188 } 1189 }); 1190 }); 1191 1192 if (checkedCount && elems.categoriesGroup) { 1193 elems.categoriesGroup.indeterminate = true; 1194 } 1195 1196 if (elems.categories.length === checkedCount && elems.categoriesGroup) { 1197 elems.categoriesGroup.indeterminate = false; 1198 elems.categoriesGroup.checked = true; 1199 } 1200 1201 if (!checkedCount) { 1202 util.setCookie(categoryCookieName, JSON.stringify([])); 1203 } 1204 } 1205 }; 1206 1207 fn.init = function () { 1208 fn.configElems(); 1209 fn.setCategoryCookie(); 1210 fn.display(); 1211 }; 1212 1213 fn.init(); 1214 }; 1215 1216 K_S.fn.updateAssetsByCategorySelect = function () { 1217 var elems = { 1218 root: K_S.getElem.filterCategories, 1219 }; 1220 var categoryCookieName = util.addAssetTypeToString(K_S.CONFIG.SELECT_CATEGORY_COOKIE_NAME); 1221 var observer = null; 1222 var observerConfig = { 1223 attributes: true, 1224 attributeOldValue: true, 1225 }; 1226 var fn = {}; 1227 1228 if (!elems.root) { 1229 return; 1230 } 1231 1232 elems.categories = elems.root.querySelectorAll('[name="category"]'); 1233 1234 fn.writeDataChecked = function () { 1235 var checkedCategories = elems.root.querySelectorAll('[name="category"]:checked'); 1236 var categories = []; 1237
1238 checkedCategories.forEach(function (items) { 1239 categories.push(items.value); 1240 }); 1241 elems.root.setAttribute('data-checked', categories.join(',')); 1242 }; 1243 1244 fn.update = function () { 1245 var checkedCategories = elems.root.querySelectorAll('[name="category"]:checked'); 1246 var dict = util.makeQueryIntoDict(); 1247 var categories = []; 1248 1249 checkedCategories.forEach(function (items) { 1250 categories.push(items.value); 1251 }); 1252 1253 util.setCookie(categoryCookieName, JSON.stringify(categories)); 1254 1255 if (dict.mode === 'ds') { 1256 dict.product_type_id = categories.join(','); 1257 } else { 1258 dict.assetdetail_type_id = categories.join(','); 1259 } 1260 1261 dict.o = 0; 1262 util.updateBrowserHistory(dict); 1263 1264 setTimeout(function () { 1265 if (dict.mode === 'ds') { 1266 K_S.fn.setLoadDataSheets('&o=0'); 1267 } else { 1268 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 1269 } 1270 }, 200); 1271 }; 1272 1273 elems.categories.forEach(function (items) { 1274 items.addEventListener('change', fn.writeDataChecked); 1275 }); 1276 1277 observer = new MutationObserver(function (e) { 1278 if (e[0].oldValue !== e[0].target.dataset.checked) { 1279 fn.update(); 1280 } 1281 }); 1282 1283 observer.observe(elems.root, observerConfig); 1284 }; 1285 1286 K_S.fn.updateAssetsByLangSelect = function () { 1287 var observer = null; 1288 var observerConfig = { 1289 childList: true, 1290 }; 1291 var fn = {}; 1292 1293 if (!K_S.getElem.langSelectWrap || 1294 !K_S.getElem.langSelectOpener 1295 ) { 1296 return; 1297 } 1298 1299 fn.update = function () { 1300 var dict = util.makeQueryIntoDict(); 1301 var checkedLangs = K_S.getElem.langSelectWrap.querySelectorAll('[type="checkbox"]:checked'); 1302 var langArr = []; 1303 1304 checkedLangs.forEach(function (items) { 1305 langArr.push(items.value); 1306 }); 1307 1308 if (dict.mode === 'ma') { 1309 util.setCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME, JSON.stringify(langArr)); 1310 } else { 1311 util.setCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME, JSON.stringify(langArr)); 1312 } 1313 1314 dict.language_type_id = langArr.join(','); 1315 dict.o = 0; 1316 util.updateBrowserHistory(dict); 1317 1318 setTimeout(function () { 1319 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 1320 }, 200); 1321 }; 1322 1323 observer = new MutationObserver(function () { 1324 fn.update(); 1325 }); 1326 1327 observer.observe(K_S.getElem.langSelectOpener, observerConfig); 1328 }; 1329 1330 K_S.fn.setSelectTypes = function () { 1331 var checkedArr = []; 1332 var height = 0; 1333 var isAnimate = false; 1334 var selectTypesData; 1335 var selectTypesDefaultLabel; 1336 var checkedElem; 1337 var cbOther; 1338 var isOpen; 1339 var slideToggle; 1340 var changeTxt; 1341 var updateData; 1342 var runForEachScreen; 1343 1344 if (!K_S.getElem.selectTypes || 1345 !K_S.getElem.selectTypesBtn || 1346 !K_S.getElem.selectTypesBox || 1347 !K_S.getElem.selectTypesLabel || 1348 !K_S.getElem.selectTypesLength || 1349 !K_S.getElem.selectTypesHook || 1350 !GLOBAL.SELECT_LANG1 || 1351 !GLOBAL.SELECT_LANG2 1352 ) { 1353 return; 1354 } 1355 1356 doc.querySelector('body').setAttribute('data-select-types', 'true'); 1357 selectTypesData = K_S.getElem.selectTypes.getAttribute('data-type'); 1358 selectTypesDefaultLabel = K_S.getElem.selectTypesLabel.getAttribute('data-label'); 1359 checkedElem = K_S.getElem.selectTypes.querySelectorAll(':checked'); 1360 changeTxt = function (label, checkedLen) { 1361 K_S.getElem.selectTypesLabel.textContent = label; 1362 K_S.getElem.selectTypesLength.textContent = checkedLen; 1363 }; 1364 1365 if (!checkedElem.length) { 1366 changeTxt(selectTypesDefaultLabel, ''); 1367 } 1368 1369 checkedElem.forEach(function (items) { 1370 if (items.value && items.value !== 'other') { 1371 checkedArr.push(items.value); 1372 } 1373 }); 1374 1375 if (checkedArr.length === 1) { 1376 if (GLOBAL.SELECT_LANG1[checkedArr[0]]) { 1377 changeTxt(GLOBAL.SELECT_LANG1[checkedArr[0]], ''); 1378 } else if (GLOBAL.SELECT_LANG2[checkedArr[0]]) { 1379 changeTxt(GLOBAL.SELECT_LANG2[checkedArr[0]], ''); 1380 } else { 1381 changeTxt(checkedArr[0], ''); 1382 } 1383 } 1384 1385 if (checkedArr.length > 1) { 1386 changeTxt(selectTypesDefaultLabel, checkedArr.length); 1387 K_S.getElem.selectTypesLength.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1388 } 1389 1390 if (checkedArr.length === 0) { 1391 changeTxt(selectTypesDefaultLabel, ''); 1392 } 1393 1394 slideToggle = { 1395 slideDown: function () { 1396 if (K_S.getElem.selectTypesBox.offsetHeight !== 0) { 1397 requestAnimationFrame(slideToggle.slideDown);
1398 1399 return; 1400 } 1401 K_S.getElem.selectTypesBox.style.height = height + 'px'; 1402 }, 1403 slideUp: function () { 1404 if (K_S.getElem.selectTypesBox.offsetHeight !== height) { 1405 requestAnimationFrame(slideToggle.slideUp); 1406 1407 return; 1408 } 1409 K_S.getElem.selectTypesBox.style.height = 0; 1410 }, 1411 init: function () { 1412 if (isAnimate) { 1413 return; 1414 } 1415 1416 isOpen = K_S.getElem.selectTypes.classList.contains(K_S.CONFIG.OPEN_ATTR); 1417 isAnimate = true; 1418 1419 if (isOpen) { 1420 height = K_S.getElem.selectTypesBox.offsetHeight; 1421 K_S.getElem.selectTypesBox.style.height = height + 'px'; 1422 slideToggle.slideUp(); 1423 1424 return; 1425 } 1426 1427 K_S.getElem.selectTypes.classList.add(K_S.CONFIG.OPEN_ATTR); 1428 height = K_S.getElem.selectTypesBox.offsetHeight; 1429 K_S.getElem.selectTypesBox.style.height = 0; 1430 slideToggle.slideDown(); 1431 }, 1432 }; 1433 1434 1435 runForEachScreen = function () { 1436 if (K_S.CONFIG.LARGE_SCREEN_MQ.matches) { 1437 K_S.getElem.selectTypesHook.removeEventListener('click', slideToggle.init, false); 1438 } else { 1439 K_S.getElem.selectTypesHook.addEventListener('click', slideToggle.init, false); 1440 } 1441 }; 1442 1443 runForEachScreen(); 1444 K_S.CONFIG.LARGE_SCREEN_MQ.addListener(runForEachScreen); 1445 1446 K_S.getElem.selectTypesBox.addEventListener('transitionend', function () { 1447 if (isOpen) { 1448 K_S.getElem.selectTypes.classList.remove(K_S.CONFIG.OPEN_ATTR); 1449 } 1450 K_S.getElem.selectTypesBox.style.height = ''; 1451 isAnimate = false; 1452 }, false); 1453 1454 if (K_S.getElem.selectTypesPulldown) { 1455 cbOther = K_S.getElem.selectTypes.querySelector('input[value="other"]'); 1456 K_S.getElem.selectTypesPulldown.addEventListener('change', function () { 1457 if (this.value) { 1458 cbOther.checked = true; 1459 } else { 1460 cbOther.checked = false; 1461 } 1462 }, false); 1463 } 1464 1465 updateData = function (e) { 1466 var cbChecked = K_S.getElem.selectTypes.querySelectorAll('[type="checkbox"]:checked'); 1467 var cbCheckedLen = cbChecked.length; 1468 var promise = Promise.resolve(); 1469 var dict = util.makeQueryIntoDict(); 1470 var langArr = []; 1471 var fileArr = []; 1472 1473 e.preventDefault(); 1474 cbChecked.forEach(function (items) { 1475 if (items.value === 'other') { 1476 if (Boolean(K_S.getElem.selectTypesPulldown.value) === false) { 1477 if ((cbCheckedLen - 1) > 1) { 1478 changeTxt(selectTypesDefaultLabel, (cbCheckedLen - 1)); 1479 K_S.getElem.selectTypesLength.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1480 } else if ((cbCheckedLen - 1) === 1) { 1481 changeTxt(GLOBAL.SELECT_LANG1[cbChecked[0].value], ''); 1482 K_S.getElem.selectTypesLength.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1483 } else { 1484 changeTxt(selectTypesDefaultLabel, ''); 1485 K_S.getElem.selectTypesLength.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1486 } 1487 } else { 1488 if (cbCheckedLen > 1) { 1489 changeTxt(selectTypesDefaultLabel, cbCheckedLen); 1490 K_S.getElem.selectTypesLength.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1491 } else { 1492 changeTxt(GLOBAL.SELECT_LANG2[K_S.getElem.selectTypesPulldown.value], ''); 1493 K_S.getElem.selectTypesLength.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1494 } 1495 if (selectTypesData !== 'file') { 1496 langArr.push(K_S.getElem.selectTypesPulldown.value); 1497 } 1498 } 1499 } else { 1500 if (cbCheckedLen > 1) { 1501 changeTxt(selectTypesDefaultLabel, cbCheckedLen); 1502 K_S.getElem.selectTypesLength.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1503 } else { 1504 if (GLOBAL.SELECT_LANG1[cbChecked[0].value]) { 1505 changeTxt(GLOBAL.SELECT_LANG1[cbChecked[0].value], ''); 1506 } else { 1507 changeTxt(cbChecked[0].nextElementSibling.textContent, ''); 1508 } 1509 K_S.getElem.selectTypesLength.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1510 } 1511 if (selectTypesData === 'file') { 1512 fileArr.push(items.value); 1513 } else { 1514 langArr.push(items.value); 1515 } 1516 } 1517 }); 1518 1519 if (!cbCheckedLen) { 1520 changeTxt(selectTypesDefaultLabel, ''); 1521 K_S.getElem.selectTypesLength.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1522 } 1523 1524 if (selectTypesData === 'file') { 1525 util.setCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME, JSON.stringify(fileArr));
1526 dict.assetdetail_type_id = fileArr.join(','); 1527 } else { 1528 if (dict.mode === 'ma') { 1529 util.setCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME, JSON.stringify(langArr)); 1530 } else { 1531 util.setCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME, JSON.stringify(langArr)); 1532 } 1533 dict.language_type_id = langArr.join(','); 1534 } 1535 1536 util.updateBrowserHistory(dict); 1537 1538 promise.then(function () { 1539 if (!doc.body.getAttribute('data-search-modal')) { 1540 slideToggle.init(); 1541 } 1542 }).then(function () { 1543 var modalWrapper = doc.getElementById('SearchModal'); 1544 var focusTarget = modalWrapper && modalWrapper.childNodes[1] ? 1545 doc.querySelector('[data-modal-target="' + modalWrapper.childNodes[1].id + '"]') : null; 1546 1547 if (focusTarget) { 1548 focusTarget.classList.add(K_S.CONFIG.ACTIVE_ATTR); 1549 focusTarget.addEventListener('animationend', function () { 1550 this.classList.remove(K_S.CONFIG.ACTIVE_ATTR); 1551 }, false); 1552 } 1553 K_S.fn.closeSearchModal(); 1554 setTimeout(function () { 1555 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 1556 }, 200); 1557 }); 1558 }; 1559 1560 K_S.getElem.selectTypesBtn.addEventListener('click', updateData, false); 1561 }; 1562 1563 K_S.fn.setChangeView = function () { 1564 var viewAttr = 'data-view'; 1565 var viewData1 = 'Grid'; 1566 var viewData2 = 'List'; 1567 var tabList; 1568 var activeHref; 1569 var setWhenClick; 1570 var changeViewList; 1571 var changeViewHook; 1572 var viewCookie; 1573 var pageParam; 1574 var setCtrlColumns; 1575 1576 if (!K_S.getElem.changeView || !K_S.getElem.searchDL) { 1577 return; 1578 } 1579 1580 tabList = doc.querySelector('.SearchTabList'); 1581 changeViewList = K_S.getElem.changeView.querySelectorAll('#' + K_S.getElem.changeView.id + '>li'); 1582 if (tabList) { 1583 activeHref = tabList.querySelector('li.' + K_S.CONFIG.ACTIVE_ATTR + '> a').href; 1584 pageParam = activeHref.split('mode=')[1].slice(0, 2); 1585 viewCookie = util.getCookie(K_S.CONFIG.VIEW_COOKIE_NAME + '_' + pageParam); 1586 } 1587 1588 setCtrlColumns = function (targetVal) { 1589 if (targetVal === viewData1 + '_2') { 1590 K_S.getElem.searchDL.classList.remove('Col4'); 1591 K_S.getElem.searchDL.classList.add('Col2'); 1592 } else if (targetVal === viewData1 + '_4') { 1593 K_S.getElem.searchDL.classList.remove('Col2'); 1594 K_S.getElem.searchDL.classList.add('Col4'); 1595 } 1596 }; 1597 1598 if (viewCookie && viewCookie !== viewData1) { 1599 K_S.getElem.changeView.querySelector('li.' + K_S.CONFIG.ACTIVE_ATTR).classList.remove(K_S.CONFIG.ACTIVE_ATTR); 1600 K_S.getElem.changeView.querySelector('[' + viewAttr + '="' + viewCookie + '"]').parentNode.classList.add(K_S.CONFIG.ACTIVE_ATTR); 1601 if (viewCookie.indexOf(viewData1) > -1) { 1602 setCtrlColumns(viewCookie); 1603 viewCookie = viewData1; 1604 } 1605 K_S.getElem.searchDL.setAttribute(viewAttr, viewCookie); 1606 } 1607 1608 setWhenClick = function (e) { 1609 var self = this; 1610 var btnData = self.getAttribute(viewAttr); 1611 var activeList = K_S.getElem.changeView.querySelector('.' + K_S.CONFIG.ACTIVE_ATTR); 1612 var parent = self.parentNode; 1613 1614 e.preventDefault(); 1615 if (!parent.classList.contains(K_S.CONFIG.ACTIVE_ATTR)) { 1616 activeList.classList.remove(K_S.CONFIG.ACTIVE_ATTR); 1617 parent.classList.add(K_S.CONFIG.ACTIVE_ATTR); 1618 1619 if (btnData.indexOf(viewData1) > -1) { 1620 setCtrlColumns(btnData); 1621 K_S.getElem.searchDL.setAttribute(viewAttr, viewData1); 1622 } else { 1623 K_S.getElem.searchDL.setAttribute(viewAttr, viewData2); 1624 } 1625 } 1626 1627 if (tabList) { 1628 util.setCookie(K_S.CONFIG.VIEW_COOKIE_NAME + '_' + pageParam, btnData); 1629 } 1630 }; 1631 1632 changeViewList.forEach(function (items) { 1633 changeViewHook = items.querySelector('button'); 1634 changeViewHook.addEventListener('click', setWhenClick, false); 1635 }); 1636 }; 1637 1638 K_S.fn.setSuggest.run = function () { 1639 var setSuggest = this; 1640 var dict = util.makeQueryIntoDict(); 1641 var searchSuggest = doc.querySelectorAll('.JSSearchSuggest'); 1642 var timer = null; 1643 var loadMS = 400; 1644 var historyStr = 'History'; 1645 var eventFn = {}; 1646 var langCookie; 1647 var fileCookie; 1648 var discontinuedCookie; 1649 var loadData; 1650 var assetParam; 1651 var seriesParam; 1652 var modelParam; 1653 var keywordsParam; 1654 var setParam; 1655 var selectLangParam; 1656 var selectFileParam; 1657 var discontinuedParam; 1658 var setFilter; 1659 1660 if (!searchSuggest.length) { 1661 return; 1662 } 1663 1664 setFilter = function () { 1665 langCookie = dict.mode === 'ma' ? util.getCookie(K_S.CONFIG.SELECT_MANUA
1665L_LANG_COOKIE_NAME) : util.getCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME); 1666 fileCookie = util.getCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME); 1667 discontinuedCookie = util.getCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME); 1668 selectLangParam = ''; 1669 selectFileParam = ''; 1670 if (langCookie) { 1671 langCookie = JSON.parse(langCookie); 1672 langCookie.forEach(function (cookies) { 1673 selectLangParam += cookies + ','; 1674 }); 1675 selectLangParam = selectLangParam.slice(0, -1); 1676 } 1677 1678 if (fileCookie) { 1679 fileCookie = JSON.parse(fileCookie); 1680 fileCookie.forEach(function (cookies) { 1681 selectFileParam += GLOBAL.SELECT_FILE_TYPE[cookies] + ','; 1682 }); 1683 selectFileParam = selectFileParam.slice(0, -1); 1684 } 1685 1686 if (typeof discontinuedCookie !== 'undefined') { 1687 if (discontinuedCookie === '1') { 1688 discontinuedParam = 1; 1689 } else { 1690 discontinuedParam = 0; 1691 } 1692 } else { 1693 discontinuedParam = 0; 1694 } 1695 1696 if (!K_S.getElem.selectTypes) { 1697 if (!K_S.getElem.langSelectWrap) { 1698 selectLangParam = ''; 1699 1700 if (!K_S.getElem.filterFileTypes) { 1701 selectFileParam = ''; 1702 } 1703 } 1704 1705 if (K_S.getElem.langSelectWrap || !K_S.getElem.filterFileTypes) { 1706 selectFileParam = ''; 1707 } 1708 } 1709 1710 if (K_S.getElem.selectTypes) { 1711 if (K_S.getElem.selectTypes.getAttribute('data-type') === 'file') { 1712 selectLangParam = ''; 1713 } else { 1714 selectFileParam = ''; 1715 } 1716 } 1717 }; 1718 1719 setParam = function (trimVal) { 1720 setFilter(); 1721 assetParam = K_S.API_PATH.SUGGEST_ASSET 1722 + 'language_type_id=' 1723 + selectLangParam 1724 + '&assetdetail_type_id=' 1725 + selectFileParam 1726 + '&asset_type_id=' 1727 + GLOBAL.ASSET_TYPE_ID 1728 + '&q=' 1729 + trimVal 1730 + '&l=' 1731 + 4; 1732 seriesParam = K_S.API_PATH.SUGGEST_SERIES 1733 + 'discontinued_flag=' 1734 + discontinuedParam 1735 + '&q=' 1736 + trimVal; 1737 modelParam = K_S.API_PATH.SUGGEST_MODEL 1738 + 'discontinued_flag=' 1739 + discontinuedParam 1740 + '&q=' 1741 + trimVal 1742 + '&l=' 1743 + 10; 1744 keywordsParam = K_S.API_PATH.SUGGEST_PAGE 1745 + 'q_word=' 1746 + trimVal 1747 + '&l=' 1748 + 10; 1749 }; 1750 1751 loadData = function (root, suggestTarget) { 1752 if (!suggestTarget.classList.contains('SearchAllCategory')) { 1753 if (root.classList.contains('JSUtilSuggest')) { 1754 setSuggest.loadAssets(K_S.getElem.utilSuggestAssetList, assetParam); 1755 setSuggest.loadSeries(K_S.getElem.utilSuggestSeriesList, seriesParam + '&l=4'); 1756 setSuggest.loadModels(K_S.getElem.utilSuggestModelList, modelParam); 1757 setSuggest.loadSeriesWithPrioritySort(K_S.getElem.suggestSeriesListWithPrioritySort, seriesParam + '&l=3'); 1758 setSuggest.loadModelsWithPrioritySort(K_S.getElem.suggestModelsListWithPrioritySort, modelParam); 1759 } 1760 } else { 1761 if (root.classList.contains('JSHeaderSuggest')) { 1762 setSuggest.loadSeries(K_S.getElem.headerSuggestSeriesList, seriesParam + '&l=3'); 1763 setSuggest.loadModels(K_S.getElem.headerSuggestModelList, modelParam); 1764 } 1765 if (root.classList.contains('JSUtilSuggest')) { 1766 setSuggest.loadSeries(K_S.getElem.utilSuggestSeriesList, seriesParam + '&l=3'); 1767 setSuggest.loadModels(K_S.getElem.utilSuggestModelList, modelParam); 1768 } 1769 } 1770 }; 1771 1772 searchSuggest.forEach(function (selector) { 1773 var suggestInput = selector.querySelector('.JSSearchSuggestInput'); 1774 var suggestTarget = selector.querySelector('.JSSearchSuggestTarget'); 1775 var suggestHistory = selector.querySelector('.JSSearchHistory'); 1776 var suggestHistoryList = selector.querySelector('.JSSearchHistoryList'); 1777 var suggestColumn = selector.querySelector('.JSSuggestColumn'); 1778 var arrPageX = []; 1779 var arrPageY = []; 1780 1781 if (suggestInput && suggestInput.placeholder) { 1782 suggestInput.setAttribute('data-placeholder', suggestInput.placeholder); 1783 } 1784 1785 eventFn = { 1786 runWhenInput: function (e) { 1787 var self = this; 1788 1789 if (timer !== null) { 1790 clearTimeout(timer); 1791 } 1792 1793 timer = setTimeout(function () { 1794 var trimVal = encodeURIComponent(self.value.trim()); 1795 1796 setParam(trimVal); 1797 if (!trimVal.length) { 1798 if (suggestHistory && util.getCookie(K_S.CONFIG.HISTORY_COOKIE_NAME)) { 1799 if (suggestHistoryList && suggestInput) { 1800 setSuggest.loadHistory(suggestHistoryList, suggestInput); 1801 } 1802 if (suggestTarget) { 1803 suggestTarget.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1804 suggestTarget.classList.add(historyStr); 1805 } 1806 if (suggestColumn) { 1807 suggestColumn.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1808 } 1809 suggestHistory.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1810 if (e.target.closest('.JSHeaderSuggest')) { 1811 doc.body.classList.add(K_S.CONFIG.SUGGEST_SHOW_ATTR); 1812 if (K_S.getElem.menuOverlay) { 1813 K_S.getElem.menuOverlay.setAttribute('data-owner', 'suggest'); 1814 } 1815 } 1816 } else { 1817 if (suggestTarget) { 1818 suggestTarget.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1819 } 1820 if (suggestColumn) { 1821 suggestColumn.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1822 } 1823 if (e.target.closest('.JSHeaderSuggest')) { 1824 doc.body.classList.remove(K_S.CONFIG.SUGGEST_SHOW_ATTR); 1825 } 1826 if (suggestHistory) { 1827 suggestHistory.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1828 } 1829 } 1830 } else { 1831 if (suggestTarget) {
1832 loadData(selector, suggestTarget); 1833 } 1834 } 1835 }, loadMS); 1836 }, 1837 runWhenFocusin: function (e) { 1838 var self = this; 1839 1840 if (timer !== null) { 1841 clearTimeout(timer); 1842 } 1843 1844 self.placeholder = ''; 1845 doc.querySelectorAll('.JSSearchSuggestTarget').forEach(function (items) { 1846 items.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1847 }); 1848 1849 timer = setTimeout(function () { 1850 var trimVal = encodeURIComponent(self.value.trim()); 1851 1852 setParam(trimVal); 1853 if (!trimVal.length) { 1854 if (suggestHistory && util.getCookie(K_S.CONFIG.HISTORY_COOKIE_NAME)) { 1855 if (suggestHistoryList && suggestInput) { 1856 setSuggest.loadHistory(suggestHistoryList, suggestInput); 1857 } 1858 if (suggestTarget) { 1859 suggestTarget.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1860 suggestTarget.classList.add(historyStr); 1861 } 1862 if (suggestColumn) { 1863 suggestColumn.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1864 } 1865 if (suggestHistory) { 1866 suggestHistory.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 1867 } 1868 if (e.target.closest('.JSHeaderSuggest')) { 1869 doc.body.classList.add(K_S.CONFIG.SUGGEST_SHOW_ATTR); 1870 if (K_S.getElem.menuOverlay) { 1871 K_S.getElem.menuOverlay.setAttribute('data-owner', 'suggest'); 1872 } 1873 } 1874 } 1875 } else { 1876 if (suggestHistory) { 1877 if (suggestTarget) { 1878 suggestTarget.classList.remove(historyStr); 1879 } 1880 suggestHistory.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1881 } 1882 if (suggestTarget) { 1883 loadData(selector, suggestTarget); 1884 } 1885 } 1886 }, loadMS); 1887 }, 1888 closeSuggestBox: function (e) { 1889 if (!e.target.closest('.JSSearchSuggestTarget') && 1890 !e.target.classList.contains('JSSearchSuggestInput')) { 1891 clearTimeout(timer); 1892 if (suggestTarget) { 1893 suggestTarget.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1894 } 1895 doc.body.classList.remove(K_S.CONFIG.SUGGEST_SHOW_ATTR); 1896 } 1897 }, 1898 restorePlaceholder: function () { 1899 var self = this; 1900 var dataPlaceholder = self.getAttribute('data-placeholder'); 1901 1902 if (!dataPlaceholder) { 1903 return; 1904 } 1905 1906 if (!encodeURIComponent(self.value.trim()).length) { 1907 self.placeholder = dataPlaceholder; 1908 } 1909 }, 1910 onTouchstart: function (e) { 1911 arrPageX.length = 0; 1912 arrPageY.length = 0; 1913 arrPageX.push(e.touches[0].pageX); 1914 arrPageY.push(e.touches[0].pageY); 1915 }, 1916 onTouchend: function (e) { 1917 if (e.changedTouches[0].pageX === arrPageX[0] || e.changedTouches[0].pageY === arrPageY[0]) { 1918 if (!e.target.closest('.JSSearchSuggestTarget') && 1919 !e.target.classList.contains('JSSearchSuggestInput')) { 1920 clearTimeout(timer); 1921 if (suggestTarget) { 1922 suggestTarget.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1923 } 1924 doc.body.classList.remove(K_S.CONFIG.SUGGEST_SHOW_ATTR); 1925 } 1926 } 1927 }, 1928 }; 1929 1930 if (suggestInput) { 1931 suggestInput.addEventListener('input', eventFn.runWhenInput, false); 1932 suggestInput.addEventListener('focusin', eventFn.runWhenFocusin, false); 1933 suggestInput.addEventListener('focusout', eventFn.restorePlaceholder, false); 1934 } 1935 doc.addEventListener('click', eventFn.closeSuggestBox, false); 1936 doc.addEventListener('touchstart', eventFn.onTouchstart, false); 1937 doc.addEventListener('touchend', eventFn.onTouchend, false);
1938 doc.querySelectorAll(K_S.CONFIG.FOCUSABLE).forEach(function (selectors) { 1939 selectors.addEventListener('focusin', function (e) { 1940 if (!e.target.closest('.JSSearchSuggest')) { 1941 clearTimeout(timer); 1942 if (suggestTarget) { 1943 suggestTarget.classList.add(K_S.CONFIG.HIDDEN_ATTR); 1944 } 1945 doc.body.classList.remove(K_S.CONFIG.SUGGEST_SHOW_ATTR); 1946 } 1947 }, false); 1948 }); 1949 }); 1950 }; 1951 1952 K_S.fn.setSuggest.loadKeywords = function (outputSelector, loadPath) { 1953 var setSuggest = this; 1954 var fragment = doc.createDocumentFragment(); 1955 var nodeClone; 1956 var keywords; 1957 var setWhenClick; 1958 var suggestBox; 1959 1960 if (!K_S.getElem.suggestKeywordsTemplate || !outputSelector) { 1961 return; 1962 } 1963 1964 setWhenClick = function (e) { 1965 var self = this; 1966 var suggestWrapper = self.closest('.JSSearchSuggest'); 1967 1968 e.preventDefault(); 1969 setSuggest.saveHistory(self); 1970 suggestWrapper.querySelector('.JSSearchSuggestInput').value = self.textContent; 1971 suggestWrapper.querySelector('.JSSearchButton').click(); 1972 }; 1973 1974 suggestBox = outputSelector.closest('.JSSearchSuggestTarget'); 1975 outputSelector.querySelectorAll('#' + outputSelector.id + '>li').forEach(function (items) { 1976 items.remove(); 1977 }); 1978 1979 util.getJSON(loadPath).then(function (response) { 1980 if (response.length) { 1981 console.log('Keywords Suggest API: ' + loadPath); 1982 response.forEach(function (items) { 1983 nodeClone = util.createNodeClone(K_S.getElem.suggestKeywordsTemplate, 'li'); 1984 keywords = nodeClone.querySelector('.Keywords'); 1985 1986 if (keywords) { 1987 keywords.textContent = items.label; 1988 keywords.addEventListener('click', setWhenClick, false); 1989 } 1990 1991 fragment.appendChild(nodeClone); 1992 }); 1993 1994 outputSelector.appendChild(fragment); 1995 } 1996 1997 if (suggestBox) { 1998 setSuggest.changeDisplay(response, suggestBox, '.KeywordArea'); 1999 } 2000 2001 if (!response.length) { 2002 if (suggestBox.classList.contains('SearchAllCategory')) { 2003 suggestBox.querySelector('.KeywordArea').closest('.Column').classList.add(K_S.CONFIG.HIDDEN_ATTR); 2004 } 2005 } 2006 }).catch(function (error) { 2007 console.log(error); 2008 }); 2009 }; 2010 2011 K_S.fn.setSuggest.loadSeries = function (outputSelector, loadPath) { 2012 var setSuggest = this; 2013 var fragment = doc.createDocumentFragment(); 2014 var trackingParam = 'search_sl'; 2015 var trackingVal = 1; 2016 var nodeClone; 2017 var series; 2018 var thumbnail; 2019 var thumbnailLink; 2020 var catalog; 2021 var spec; 2022 var model; 2023 var price; 2024 var setWhenClick; 2025 var commonName; 2026 var name; 2027 var disconLabel; 2028 var suggestBox; 2029 var dlAssetId; 2030 2031 if (!K_S.getElem.suggestSeriesTemplate || !outputSelector) { 2032 return; 2033 } 2034 2035 setWhenClick = function (e) { 2036 var self = this; 2037 2038 e.preventDefault(); 2039 setSuggest.saveHistory(self); 2040 location.href = self.href; 2041 }; 2042 2043 suggestBox = outputSelector.closest('.JSSearchSuggestTarget'); 2044 2045 util.getJSON(loadPath).then(function (response) { 2046 outputSelector.querySelectorAll('#' + outputSelector.id + '>li').forEach(function (items) { 2047 items.remove(); 2048 }); 2049 if (response.result.series.length) { 2050 console.log('Series Suggest API: ' + loadPath); 2051 suggestBox.querySelectorAll('.JSSuggestSeriesResultNum').forEach(function (items) { 2052 items.textContent = response.result.attribute.total; 2053 });
2054 response.result.series.forEach(function (items) { 2055 nodeClone = util.createNodeClone(K_S.getElem.suggestSeriesTemplate, 'li'); 2056 series = nodeClone.querySelector('.Series'); 2057 commonName = nodeClone.querySelector('.CommonName'); 2058 name = nodeClone.querySelector('.Name'); 2059 disconLabel = nodeClone.querySelector('.DisconLabel'); 2060 thumbnailLink = nodeClone.querySelector('.ThumbnailLink'); 2061 thumbnail = nodeClone.querySelector('.Thumbnail img'); 2062 catalog = nodeClone.querySelector('.Catalog'); 2063 spec = nodeClone.querySelector('.Spec'); 2064 model = nodeClone.querySelector('.Model'); 2065 price = nodeClone.querySelector('.Price'); 2066 dlAssetId = ''; 2067 2068 if (series) { 2069 series.href = items.url + '?' + trackingParam + '=' + trackingVal; 2070 series.addEventListener('click', setWhenClick, false); 2071 } 2072 2073 if (commonName) { 2074 commonName.textContent = items.webseriescommon_name; 2075 } 2076 2077 if (name) { 2078 name.textContent = ' ' + items.display_name; 2079 } 2080 2081 if (thumbnail) { 2082 thumbnail.src = GLOBAL.ORIGINAL_DOMAIN 2083 + '/img/products/series/' 2084 + items.product_thumbnail_id 2085 + '_M.jpg'; 2086 2087 if (thumbnailLink) { 2088 thumbnailLink.href = items.url + '?' + trackingParam + '=' + trackingVal; 2089 } 2090 } 2091 2092 if (catalog) { 2093 if (items.catalog_id) { 2094 items.catalog_id.split(',').forEach(function (assetId) { 2095 dlAssetId += 'dlAssetId=' + assetId + '&'; 2096 }); 2097 catalog.href = GLOBAL.ORIGINAL_DOMAIN 2098 + '/download/download/confirmation/?' 2099 + dlAssetId.slice(0, -1) 2100 + '&' + trackingParam + '=' + trackingVal; 2101 } else { 2102 catalog.parentNode.remove(); 2103 } 2104 } 2105 2106 if (disconLabel) { 2107 disconLabel.remove(); 2108 } 2109 2110 if (spec) { 2111 if (items.spec_url) { 2112 spec.href = items.spec_url + '?' + trackingParam + '=' + trackingVal; 2113 } else { 2114 spec.parentNode.remove(); 2115 } 2116 } 2117 2118 if (model) { 2119 if (items.model_url) { 2120 model.href = items.model_url + '?' + trackingParam + '=' + trackingVal; 2121 } else { 2122 model.parentNode.remove(); 2123 } 2124 } 2125 2126 if (price) { 2127 price.href = `${items.url}get-pricing/?${trackingParam}=${trackingVal}`; 2128 } 2129 2130 fragment.appendChild(nodeClone); 2131 }); 2132 2133 outputSelector.appendChild(fragment); 2134 } 2135 2136 if (suggestBox) { 2137 setSuggest.changeDisplay(response.result.series, suggestBox, '.SeriesArea'); 2138 } 2139 }).catch(function (error) { 2140 console.log(error); 2141 }); 2142 }; 2143 2144 K_S.fn.setSuggest.loadSeriesWithPrioritySort = function (outputSelector, loadPath) { 2145 const setSuggest = this; 2146 const seriesArea = doc.querySelector('.js-loadSeriesWithPrioritySort-target'); 2147 const suggestBox = outputSelector ? outputSelector.closest('.JSSearchSuggestTarget') : null; 2148 const template = K_S.getElem.suggestSeriesTemplate; 2149 const fragment = doc.createDocumentFragment(); 2150 const fn = {}; 2151 2152 if (!seriesArea || !template || !outputSelector || !suggestBox) { 2153 return; 2154 } 2155 2156 fn.setWhenClick = function (e) { 2157 const self = this; 2158 const inputElm = self.closest('.JSSearchSuggest') ? 2159 self.closest('.JSSearchSuggest').querySelector('.JSSearchSuggestInput') : null; 2160 2161 e.preventDefault(); 2162 if (inputElm) { 2163 inputElm.value = self.dataset.webseriesName; 2164 } 2165 suggestBox.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2166 2167 const dict = util.makeQueryIntoDict(); 2168 const promise = Promise.resolve();
2169 const loadMoreTarget = doc.querySelector('.JSLoadMoreTarget'); 2170 const searchLinkList = K_S.getElem.drillDownNav ? K_S.getElem.drillDownNav.querySelector('.SearchLinkList01') : null; 2171 const webSeriesId = self.dataset.webseriesId; 2172 2173 if (!loadMoreTarget || !searchLinkList) { 2174 return; 2175 } 2176 2177 promise.then(() => { 2178 loadMoreTarget.setAttribute('data-group-id', ''); 2179 loadMoreTarget.setAttribute('data-type-id', ''); 2180 loadMoreTarget.setAttribute('data-series-id', webSeriesId); 2181 dict.q = ''; 2182 dict.s = 1; 2183 dict.group_id = ''; 2184 dict.type_id = ''; 2185 dict.webseries_id = webSeriesId; 2186 dict.o = 0; 2187 2188 util.updateBrowserHistory(dict); 2189 if (K_S.getElem.categorySPLabel && K_S.getElem.categoryPCLabel) { 2190 K_S.getElem.categorySPLabel.textContent = K_S.getElem.categoryPCLabel.textContent; 2191 } 2192 }).then(() => { 2193 K_S.fn.setSuggest.saveHistory(self); 2194 K_S.fn.setLoadAssets(K_S.getElem.searchDL, `&webseries_id=${webSeriesId}&s=1&o=0`, false, false, true); 2195 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2196 }); 2197 }; 2198 2199 util.getJSON(loadPath).then((response) => { 2200 outputSelector.textContent = ''; 2201 outputSelector.dataset.hasResults = false; 2202 2203 if (response.result.series.length) { 2204 win.console.log(`Series Suggest API: ${loadPath}`); 2205 outputSelector.dataset.hasResults = true; 2206 2207 response.result.series.forEach((item) => { 2208 const nodeClone = util.createNodeClone(template); 2209 const series = nodeClone.querySelector('.Series'); 2210 const commonName = nodeClone.querySelector('.CommonName'); 2211 const name = nodeClone.querySelector('.Name'); 2212 const disconLabel = nodeClone.querySelector('.DisconLabel'); 2213 const thumbnail = nodeClone.querySelector('.Thumbnail img'); 2214 const catalog = nodeClone.querySelector('.Catalog'); 2215 const price = nodeClone.querySelector('.Price'); 2216 const list = nodeClone.querySelector('.prd-layout-cluster'); 2217 2218 if (series) { 2219 series.dataset.webseriesId = item.webseries_id; 2220 series.dataset.webseriesName = item.webseries_name; 2221 series.addEventListener('click', fn.setWhenClick, false); 2222 } 2223 2224 if (commonName) { 2225 commonName.textContent = item.webseriescommon_name; 2226 } 2227 2228 if (name) { 2229 name.textContent = item.display_name; 2230 } 2231 2232 if (thumbnail) { 2233 thumbnail.src = `${GLOBAL.ORIGINAL_DOMAIN}/img/products/series/${item.product_thumbnail_id}_M.jpg`; 2234 } 2235 2236 if (disconLabel) { 2237 disconLabel.remove(); 2238 } 2239 2240 if (catalog) { 2241 if (catalog.closest('li')) { 2242 catalog.closest('li').remove(); 2243 } 2244 } 2245 2246 if (price) { 2247 if (price.closest('li')) { 2248 price.closest('li').remove(); 2249 } 2250 } 2251 2252 if (list) { 2253 if (!list.children.length) { 2254 list.remove(); 2255 } 2256 } 2257 2258 fragment.appendChild(nodeClone); 2259 }); 2260 2261 outputSelector.appendChild(fragment); 2262 } 2263 2264 setSuggest.changeDisplay(response.result.series, suggestBox, '.js-loadSeriesWithPrioritySort-target'); 2265 }).catch((error) => { 2266 win.console.log(error); 2267 }); 2268 }; 2269 2270 K_S.fn.setSuggest.loadModels = function (outputSelector, loadPath) { 2271 var setSuggest = this; 2272 var fragment = doc.createDocumentFragment(); 2273 var trackingParam = 'search_sl'; 2274 var trackingVal = 1; 2275 var nodeClone; 2276 var model; 2277 var modelName; 2278 var setWhenClick; 2279 var suggestBox; 2280 2281 if (!K_S.getElem.suggestModelTemplate || !outputSelector) { 2282 return; 2283 } 2284 2285 setWhenClick = function (e) { 2286 var self = this; 2287 2288 e.preventDefault(); 2289 setSuggest.saveHistory(self); 2290 location.href = self.href; 2291 }; 2292 2293 suggestBox = outputSelector.closest('.JSSearchSuggestTarget'); 2294 2295 util.getJSON(loadPath).then(function (response) { 2296 outputSelector.querySelectorAll('#' + outputSelector.id + '>li').forEach(function (items) { 2297 items.remove(); 2298 }); 2299 if (response.result.models.length) { 2300 console.log('Model Suggest API: ' + loadPath); 2301 suggestBox.querySelectorAll('.JSSuggestModelResultNum').forEach(function (items) { 2302 items.textContent = response.result.attribute.total; 2303 });
2304 response.result.models.forEach(function (items) { 2305 nodeClone = util.createNodeClone(K_S.getElem.suggestModelTemplate, 'li'); 2306 model = nodeClone.querySelector('.Model'); 2307 modelName = nodeClone.querySelector('.Name'); 2308 2309 if (model) { 2310 if (!modelName) { 2311 model.textContent = items.webproduct_name; 2312 } 2313 model.href = items.url + '?' + trackingParam + '=' + trackingVal; 2314 model.addEventListener('click', setWhenClick, false); 2315 } 2316 2317 if (modelName) { 2318 modelName.textContent = items.webproduct_name; 2319 } 2320 2321 fragment.appendChild(nodeClone); 2322 }); 2323 2324 outputSelector.appendChild(fragment); 2325 } 2326 if (suggestBox) { 2327 setSuggest.changeDisplay(response.result.models, suggestBox, '.ModelArea'); 2328 } 2329 }).catch(function (error) { 2330 console.log(error); 2331 }); 2332 }; 2333 2334 K_S.fn.setSuggest.loadModelsWithPrioritySort = function (outputSelector, loadPath) { 2335 const setSuggest = this; 2336 const modelsArea = doc.querySelector('.js-loadModelsWithPrioritySort-target'); 2337 const suggestBox = outputSelector ? outputSelector.closest('.JSSearchSuggestTarget') : null; 2338 const template = K_S.getElem.suggestModelTemplate; 2339 const fragment = doc.createDocumentFragment(); 2340 const fn = {}; 2341 2342 if (!modelsArea || !template || !outputSelector || !suggestBox) { 2343 return; 2344 } 2345 2346 fn.setWhenClick = function (e) { 2347 const self = this; 2348 const inputElm = self.closest('.JSSearchSuggest') ? 2349 self.closest('.JSSearchSuggest').querySelector('.JSSearchSuggestInput') : null; 2350 const displayName = self.querySelector('.Name').innerHTML; 2351 2352 e.preventDefault(); 2353 if (inputElm) { 2354 inputElm.value = displayName; 2355 } 2356 suggestBox.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2357 2358 const dict = util.makeQueryIntoDict(); 2359 const promise = Promise.resolve();
2360 const loadMoreTarget = doc.querySelector('.JSLoadMoreTarget'); 2361 const searchLinkList = K_S.getElem.drillDownNav ? K_S.getElem.drillDownNav.querySelector('.SearchLinkList01') : null; 2362 const webProductId = self.dataset.webproductId; 2363 2364 if (!loadMoreTarget || !searchLinkList) { 2365 return; 2366 } 2367 2368 promise.then(() => { 2369 loadMoreTarget.setAttribute('data-group-id', ''); 2370 loadMoreTarget.setAttribute('data-type-id', ''); 2371 loadMoreTarget.setAttribute('data-series-id', ''); 2372 dict.q = ''; 2373 dict.s = 2; 2374 dict.group_id = ''; 2375 dict.type_id = ''; 2376 dict.webseries_id = ''; 2377 dict.o = 0; 2378 2379 util.updateBrowserHistory(dict); 2380 if (K_S.getElem.categorySPLabel && K_S.getElem.categoryPCLabel) { 2381 K_S.getElem.categorySPLabel.textContent = K_S.getElem.categoryPCLabel.textContent; 2382 } 2383 }).then(() => { 2384 K_S.fn.setSuggest.saveHistory(self); 2385 K_S.fn.setLoadAssets(K_S.getElem.searchDL, `&webproduct_id=${webProductId}&s=2&o=0`, false, false, true); 2386 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2387 }); 2388 }; 2389 2390 util.getJSON(loadPath).then((response) => { 2391 outputSelector.textContent = ''; 2392 outputSelector.dataset.hasResults = false; 2393 2394 if (response.result.models.length) { 2395 win.console.log(`Model Suggest API: ${loadPath}`); 2396 outputSelector.dataset.hasResults = true; 2397 2398 response.result.models.forEach((item) => { 2399 const nodeClone = util.createNodeClone(template); 2400 const modelLink = nodeClone.querySelector('.Model'); 2401 const modelText = nodeClone.querySelector('.Name'); 2402 2403 if (modelLink) { 2404 modelLink.dataset.webproductId = item.webproduct_id; 2405 modelLink.addEventListener('click', fn.setWhenClick, false); 2406 } 2407 2408 if (modelText) { 2409 modelText.textContent = item.webproduct_name; 2410 } 2411 2412 fragment.appendChild(nodeClone); 2413 }); 2414 2415 outputSelector.appendChild(fragment); 2416 } 2417 setSuggest.changeDisplay(response.result.models, suggestBox, '.js-loadModelsWithPrioritySort-target'); 2418 }).catch((error) => { 2419 win.console.log(error); 2420 }); 2421 }; 2422 2423 K_S.fn.setSuggest.changeDisplay = function (response, suggestBox, selfArea) { 2424 var suggestColumn = suggestBox.querySelector('.JSSuggestColumn'); 2425 var searchHistory = suggestBox.querySelector('.JSSearchHistory'); 2426 var seriesArea = suggestBox.querySelector('.SeriesArea'); 2427 var modelArea = suggestBox.querySelector('.ModelArea'); 2428 var keywordArea = suggestBox.querySelector('.KeywordArea'); 2429 2430 if (keywordArea) { 2431 keywordArea.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2432 } 2433 2434 if (response.length) { 2435 suggestBox.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2436 if (suggestColumn) { 2437 suggestColumn.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2438 } 2439 if (suggestBox.classList.contains('SearchAllCategory')) { 2440 if (searchHistory) { 2441 suggestBox.classList.remove('History'); 2442 searchHistory.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2443 } 2444 if (suggestBox.querySelector(selfArea)) { 2445 suggestBox.querySelector(selfArea).classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2446 suggestBox.querySelector(selfArea).closest('.Column').classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2447 if (suggestBox.closest('.JSHeaderSuggest')) { 2448 doc.body.classList.add(K_S.CONFIG.SUGGEST_SHOW_ATTR); 2449 if (K_S.getElem.menuOverlay) { 2450 K_S.getElem.menuOverlay.setAttribute('data-owner', 'suggest'); 2451 } 2452 } 2453 } 2454 } else { 2455 if (suggestBox.querySelector(selfArea)) { 2456 suggestBox.querySelector(selfArea).classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2457 if (suggestBox.closest('.JSHeaderSuggest')) { 2458 doc.body.classList.add(K_S.CONFIG.SUGGEST_SHOW_ATTR); 2459 if (K_S.getElem.menuOverlay) { 2460 K_S.getElem.menuOverlay.setAttribute('data-owner', 'suggest'); 2461 } 2462 } 2463 } 2464 } 2465 } else { 2466 if (suggestBox.classList.contains('SearchAllCategory')) { 2467 if (suggestBox.querySelector(selfArea)) { 2468 suggestBox.querySelector(selfArea).classList.add(K_S.CONFIG.HIDDEN_ATTR); 2469 } 2470 if (seriesArea && seriesArea.classList.contains(K_S.CONFIG.HIDDEN_ATTR) 2471 && modelArea && modelArea.classList.contains(K_S.CONFIG.HIDDEN_ATTR)) { 2472 seriesArea.closest('.Column').classList.add(K_S.CONFIG.HIDDEN_ATTR); 2473 if (suggestBox.closest('.JSHeaderSuggest')) { 2474 doc.body.classList.remove(K_S.CONFIG.SUGGEST_SHOW_ATTR); 2475 } 2476 } 2477 if (seriesArea && seriesArea.classList.contains(K_S.CONFIG.HIDDEN_ATTR) 2478 && modelArea && modelArea.classList.contains(K_S.CONFIG.HIDDEN_ATTR) 2479 && keywordArea && keywordArea.classList.contains(K_S.CONFIG.HIDDEN_ATTR)) { 2480 suggestBox.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2481 if (suggestColumn) { 2482 suggestColumn.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2483 } 2484 if (suggestBox.closest('.JSHeaderSuggest')) { 2485 doc.body.classList.remove(K_S.CONFIG.SUGGEST_SHOW_ATTR); 2486 } 2487 } 2488 } else { 2489 if (suggestBox.querySelector(selfArea)) { 2490 suggestBox.querySelector(selfArea).classList.add(K_S.CONFIG.HIDDEN_ATTR); 2491 } 2492 2493 if (suggestBox.querySelectorAll('[data-has-results="true"]').length) { 2494 suggestBox.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2495 } else { 2496 suggestBox.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2497 } 2498 } 2499 } 2500 }; 2501 2502 K_S.fn.setSuggest.loadAssets = function (outputSelector, loadPath) { 2503 var setSuggest = this; 2504 var fragment = doc.createDocumentFragment(); 2505 var nodeClone; 2506 var link; 2507 var title; 2508 var lang; 2509 var thumbnail; 2510 var setWhenClick; 2511 var suggestBox; 2512 var assetArea; 2513 2514 if (!K_S.getElem.suggestAssetTemplate || !outputSelector) { 2515 return; 2516 } 2517 2518 setWhenClick = function (e) { 2519 var self = this; 2520 2521 e.preventDefault(); 2522 setSuggest.saveHistory(self); 2523 location.href = self.href; 2524 }; 2525 2526 suggestBox = outputSelector.closest('.JSSearchSuggestTarget'); 2527 assetArea = outputSelector.closest('.CategoryList'); 2528 2529 util.getJSON(loadPath).then(function (response) { 2530 outputSelector.dataset.hasResults = false; 2531 2532 if (!response.length) { 2533 if (assetArea) { 2534 assetArea.hidden = true; 2535 } 2536 2537 if (suggestBox.querySelectorAll('[data-has-results="true"]').length) { 2538 suggestBox.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2539 } else { 2540 suggestBox.classList.add(K_S.CONFIG.HIDDEN_ATTR); 2541 } 2542 2543 return; 2544 } 2545 2546 console.log('Asset Suggest API: ' + loadPath); 2547 outputSelector.dataset.hasResults = true; 2548 2549 if (assetArea) { 2550 assetArea.hidden = false; 2551 } 2552 2553 outputSelector.querySelectorAll('#' + outputSelector.id + '>li').forEach(function (items) { 2554 items.remove(); 2555 }); 2556 2557 response.forEach(function (items) { 2558 nodeClone = util.createNodeClone(K_S.getElem.suggestAssetTemplate, 'li'); 2559 link = nodeClone.querySelector('.Link'); 2560 title = nodeClone.querySelector('.Title'); 2561 lang = nodeClone.querySelector('.Lang'); 2562 thumbnail = nodeClone.querySelector('.Thumbnail img'); 2563 2564 if (link) { 2565 link.href = GLOBAL.ORIGINAL_DOMAIN 2566 + '/download/download/confirmation/' 2567 + '?dlAssetId=' 2568 + items.asset_id 2569 + '&dlSeriesId=' 2570 + '&dlModelId=' 2571 + '&dlLangId=' 2572 + '&dlLangType=' 2573 + items.language_type_id; 2574 link.addEventListener('click', setWhenClick, false); 2575 } 2576 2577 if (title) { 2578 title.textContent = items.asset_name; 2579 } 2580 2581 if (lang) { 2582 if (GLOBAL.SELECT_LANG1 && GLOBAL.SELECT_LANG1[items.language_type_id]) { 2583 lang.textContent = GLOBAL.SELECT_LANG1[items.language_type_id]; 2584 } else if (GLOBAL.SELECT_LANG2 && GLOBAL.SELECT_LANG2[items.language_type_id]) { 2585 lang.textContent = GLOBAL.SELECT_LANG2[items.language_type_id]; 2586 } else if (GLOBAL.SELECT_LANG && GLOBAL.SELECT_LANG[items.language_type_id]) { 2587 lang.textContent = GLOBAL.SELECT_LANG[items.language_type_id]; 2588 } 2589 } 2590 2591 if (thumbnail) { 2592 thumbnail.src = GLOBAL.ORIGINAL_DOMAIN + '/img/asset/' + items.asset_thumbnail + '.jpg'; 2593 } 2594 2595 fragment.appendChild(nodeClone); 2596 }); 2597 2598 outputSelector.appendChild(fragment); 2599 suggestBox.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2600 suggestBox.querySelector('.JSSuggestColumn').classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2601 }).catch(function (error) { 2602 console.log(error); 2603 }); 2604 }; 2605 2606 K_S.fn.setSuggest.loadHistory = function (outputSelector, inputElem) { 2607 var setSuggest = this; 2608 var fragment = doc.createDocumentFragment(); 2609 var cookie = util.getCookie(K_S.CONFIG.HISTORY_COOKIE_NAME); 2610 var nodeClone; 2611 var history;
2612 var historyTxt; 2613 var setWhenClick; 2614 2615 if (!K_S.getElem.searchHistoryTemplate || !cookie) { 2616 return; 2617 } 2618 2619 setWhenClick = function (e) { 2620 var self = this; 2621 2622 e.preventDefault(); 2623 inputElem.value = this.title; 2624 inputElem.focus(); 2625 setSuggest.saveHistory(self); 2626 }; 2627 2628 JSON.parse(cookie).forEach(function (items) { 2629 items = decodeURIComponent(items); 2630 nodeClone = util.createNodeClone(K_S.getElem.searchHistoryTemplate, 'li'); 2631 history = nodeClone.querySelector('.History'); 2632 historyTxt = nodeClone.querySelector('.Text'); 2633 2634 if (history) { 2635 history.title = items; 2636 if (!historyTxt) { 2637 history.textContent = items; 2638 } 2639 history.addEventListener('click', setWhenClick, false); 2640 } 2641 2642 if (historyTxt) { 2643 historyTxt.textContent = items; 2644 } 2645 2646 fragment.appendChild(nodeClone); 2647 }); 2648 2649 if (!outputSelector) { 2650 return; 2651 } 2652 outputSelector.querySelectorAll('li').forEach(function (items) { 2653 items.remove(); 2654 }); 2655 outputSelector.appendChild(fragment); 2656 }; 2657 2658 K_S.fn.setSuggest.saveHistory = function (eventElem) { 2659 var existingCookie = util.getCookie(K_S.CONFIG.HISTORY_COOKIE_NAME); 2660 var historyArr = []; 2661 var text; 2662 2663 if (existingCookie) { 2664 historyArr = JSON.parse(existingCookie); 2665 } 2666 2667 text = eventElem.textContent; 2668 text = encodeURIComponent(text); 2669 historyArr.unshift(text); 2670 historyArr = util.removeOverlapArr(historyArr); 2671 2672 if (historyArr.length > K_S.CONFIG.HISTORY_MAX_SAVED_NUM) { 2673 historyArr.pop(); 2674 } 2675 2676 util.setCookie(K_S.CONFIG.HISTORY_COOKIE_NAME, JSON.stringify(historyArr)); 2677 }; 2678 2679 K_S.fn.setSearchString = function () { 2680 var input; 2681 var pageParamInput; 2682 var dict; 2683 2684 if (!K_S.getElem.mainContForm) { 2685 return; 2686 } 2687 2688 doc.querySelector('body').setAttribute('data-main-suggest', 'true'); 2689 input = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput'); 2690 pageParamInput = doc.getElementById('JSAssetPageParam'); 2691 dict = util.makeQueryIntoDict(); 2692 if (dict.q) { 2693 dict.q = dict.q.replace(/\+/g, ' '); 2694 input.value = decodeURIComponent(dict.q); 2695 } 2696 if (dict.mode) { 2697 pageParamInput.value = decodeURIComponent(dict.mode); 2698 } 2699 }; 2700 2701 K_S.fn.setSubmit = function () { 2702 var searchButton = doc.querySelectorAll('.JSSearchButton'); 2703 var searchLinkList; 2704 var setWhenClick; 2705 var hasTouchScreen = false; 2706 var ua = win.navigator.userAgent; 2707 var mQ; 2708 2709 if (!searchButton.length) { 2710 return; 2711 } 2712 2713 setWhenClick = function (e) { 2714 var self = this; 2715 var dict = util.makeQueryIntoDict(); 2716 var existingCookie = util.getCookie(K_S.CONFIG.HISTORY_COOKIE_NAME); 2717 var historyArr = []; 2718 var form = self.closest('form'); 2719 var inputElem = self.closest('.JSSearchSuggest').querySelector('.JSSearchSuggestInput'); 2720 var trackingParam = 'search_dl'; 2721 var disabledClass = 'IsDisabled'; 2722 var trackingVal = 1; 2723 var value; 2724 var loadPath; 2725 var activeHref; 2726 var legacyTabList; 2727 var tabList; 2728 2729 e.preventDefault(); 2730 value = inputElem.value.trim(); 2731 2732 if ('maxTouchPoints' in navigator) { 2733 hasTouchScreen = win.navigator.maxTouchPoints > 0; 2734 if (ua.indexOf('Edge') !== -1) { 2735 if (ua.indexOf('Windows Phone') === -1 && ua.indexOf('IEMobile') === -1) { 2736 hasTouchScreen = false; 2737 } 2738 } 2739 } else if ('msMaxTouchPoints' in navigator) { 2740 hasTouchScreen = win.navigator.msMaxTouchPoints > 0; 2741 } else { 2742 mQ = win.matchMedia && matchMedia('(pointer:coarse)'); 2743 2744 if (mQ && mQ.media === '(pointer:coarse)') { 2745 hasTouchScreen = Boolean(mQ.matches); 2746 } else if ('orientation' in win) { 2747 hasTouchScreen = true; 2748 } else { 2749 hasTouchScreen = ( 2750 /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(ua) || 2751 /\b(Android|Windows Phone|iPad|iPod)\b/i.test(ua) 2752 ); 2753 } 2754 } 2755 2756 if (value) { 2757 inputElem.value = value; 2758 2759 if (existingCookie) { 2760 historyArr = JSON.parse(existingCookie); 2761 } 2762 2763 value = encodeURIComponent(value); 2764 historyArr.unshift(value); 2765 historyArr = util.removeOverlapArr(historyArr); 2766 2767 if (historyArr.length >
2767 K_S.CONFIG.HISTORY_MAX_SAVED_NUM) { 2768 historyArr.pop(); 2769 } 2770 2771 util.setCookie(K_S.CONFIG.HISTORY_COOKIE_NAME, JSON.stringify(historyArr)); 2772 2773 loadPath = K_S.API_PATH.PRODUCT_COMPLETE_MATCH + 'q=' + value.toUpperCase(); 2774 dict.q = value; 2775 dict.o = 0; 2776 dict.s = 3; 2777 2778 if (self.closest('#HeaderSearch') || self.closest('#TopSearchForm')) { 2779 util.getJSON(loadPath).then(function (response) { 2780 if (response[0].url && /\/all/.test(form.action)) { 2781 location.href = response[0].url + '?' + trackingParam + '=' + trackingVal; 2782 } else { 2783 form.submit(); 2784 } 2785 }).catch(function (error) { 2786 console.log(error); 2787 form.submit(); 2788 }); 2789 } else { 2790 if (hasTouchScreen) { 2791 inputElem.blur(); 2792 } 2793 if (self.classList.contains(disabledClass)) { 2794 return; 2795 } 2796 self.classList.add(disabledClass); 2797 setTimeout(function () { 2798 self.classList.remove(disabledClass); 2799 }, 500); 2800 util.updateBrowserHistory(dict); 2801 if (K_S.getElem.searchDL) { 2802 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&s=3&o=0'); 2803 } 2804 if (K_S.getElem.searchDLSo) { 2805 K_S.fn.setLoadAssets(K_S.getElem.searchDLSo, '&s=3&o=0'); 2806 } 2807 if (K_S.getElem.searchDLCd) { 2808 K_S.fn.setLoadAssets(K_S.getElem.searchDLCd, '&s=3&o=0'); 2809 } 2810 if (K_S.getElem.searchDLMa) { 2811 K_S.fn.setLoadAssets(K_S.getElem.searchDLMa, '&s=3&o=0'); 2812 } 2813 if (K_S.getElem.searchDLCa) { 2814 K_S.fn.setLoadAssets(K_S.getElem.searchDLCa, '&s=3&o=0'); 2815 } 2816 if (K_S.getElem.searchDLCA) { 2817 K_S.fn.setLoadAssets(K_S.getElem.searchDLCA, '&o=0'); 2818 } 2819 if (K_S.getElem.searchDLTG) { 2820 K_S.fn.setLoadAssets(K_S.getElem.searchDLTG, '&o=0'); 2821 } 2822 K_S.fn.setLoadDataSheets('&s=3&o=0'); 2823 K_S.fn.setLoadSeries('&s=3&o=0'); 2824 K_S.fn.setLoadPages('&s=3&o=0'); 2825 K_S.fn.setLoadModels('&s=3&o=0'); 2826 K_S.fn.setLoadProbablyTheseModels(); 2827 if (K_S.getElem.drillDownNav) { 2828 searchLinkList = K_S.getElem.drillDownNav.querySelector('.SearchLinkList01'); 2829 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2830 } 2831 } 2832 } else { 2833 inputElem.value = ''; 2834 if (self.closest('#HeaderSearch') || self.closest('#TopSearchForm')) { 2835 form.submit(); 2836 } else { 2837 legacyTabList = doc.querySelector('.JSSearchQueryTakeover.SearchTabList'); 2838 tabList = K_S.getElem.loadResultsNav; 2839 2840 if (legacyTabList) { 2841 activeHref = legacyTabList.querySelector('li.' + K_S.CONFIG.ACTIVE_ATTR + '> a').href; 2842 } 2843 2844 if (tabList) { 2845 activeHref = tabList.querySelector('a[aria-current="page"]').href; 2846 } 2847 2848 form.setAttribute('action', activeHref); 2849 form.submit(); 2850 } 2851 } 2852 }; 2853 2854 searchButton.forEach(function (selector) { 2855 selector.addEventListener('click', setWhenClick, false); 2856 }); 2857 }; 2858 2859 K_S.fn.setResultDisplay = function (list) { 2860 var promise = Promise.resolve(); 2861 var setWhenAnimateEnd = function () { 2862 var self = this; 2863 2864 self.tabIndex = 0; 2865 self.focus(); 2866 }; 2867 2868 list.forEach(function (items, index) { 2869 if (items.classList.contains(K_S.CONFIG.HIDDEN_ATTR)) { 2870 items.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 2871 if (index > 0 && 2872 index % K_S.CONFIG.ONE_TIME_DISPLAY_MAX_NUM === 0 && 2873 items.closest('ul').getAttribute('data-filter') !== 'all' 2874 ) { 2875 if (items.closest('ul').getBoundingClientRect().bottom - items.getBoundingClientRect().height < 0) { 2876 promise.then(function () { 2877 items.addEventListener('animationend', setWhenAnimateEnd, false); 2878 }).then(function () { 2879 K_S.getElem.docElement.scrollTop = items.getBoundingClientRect().top + K_S.getElem.docElement.scrollTop; 2880 }); 2881 } else { 2882 items.addEventListener('animationend', setWhenAnimateEnd, false); 2883 } 2884 } 2885 } else { 2886 if (index > 0 && 2887 index % K_S.CONFIG.ONE_TIME_DISPLAY_MAX_NUM === 0 && 2888 items.closest('ul').getAttribute('data-filter') !== 'all' 2889 ) { 2890 if (items.closest('ul').getBoundingClientRect().bottom - items.getBoundingClientRect().height < 0) { 2891 promise.then(function () { 2892 items.tabIndex = 0; 2893 items.focus(); 2894 }).then(function () { 2895 K_S.getElem.docElement.scrollTop = items.getBoundingClientRect().top + K_S.getElem.docElement.scrollTop; 2896 }); 2897 } else { 2898 items.tabIndex = 0; 2899 items.focus(); 2900 } 2901 } 2902 } 2903 }); 2904 }; 2905
2906 K_S.fn.setLoadPages = function (addOffsetParam, callback) { 2907 var dict = util.makeQueryIntoDict(); 2908 var displayMaxNum; 2909 var fragment; 2910 var nodeClone; 2911 var list; 2912 var loadPath; 2913 var outputSelectorGroup; 2914 2915 if (!K_S.getElem.searchPageList || !K_S.getElem.searchPageListTemplate) { 2916 return; 2917 } 2918 2919 displayMaxNum = K_S.getElem.searchPageList.getAttribute('data-limit'); 2920 fragment = doc.createDocumentFragment(); 2921 loadPath = K_S.fn.getPagesLoadPath(); 2922 2923 if (typeof dict.o === 'undefined') { 2924 dict.o = 0; 2925 } 2926 2927 if (typeof dict.s === 'undefined') { 2928 dict.s = ''; 2929 } 2930 2931 if (!addOffsetParam) { 2932 addOffsetParam = `&o=${dict.o}&s=${dict.s}`; 2933 } 2934 2935 console.log('Keywords API: ' + loadPath + addOffsetParam); 2936 2937 util.getJSON(loadPath + addOffsetParam).then(function (response) { 2938 var contentsArr = response.result.contents; 2939 var resultTotal = response.result.attribute.total; 2940 var resultOffset = response.result.attribute.offset; 2941 var updateListStr = '#' + K_S.getElem.searchPageList.id + '>li'; 2942 2943 if (resultOffset === 0) { 2944 K_S.getElem.searchPageList.querySelectorAll(updateListStr).forEach(function (items) { 2945 items.remove(); 2946 }); 2947 } 2948 2949 if (!resultTotal) { 2950 K_S.getElem.searchPageList.classList.add(K_S.CONFIG.NORESULT_ATTR); 2951 } else { 2952 K_S.getElem.searchPageList.classList.remove(K_S.CONFIG.NORESULT_ATTR); 2953 } 2954 2955 outputSelectorGroup = K_S.getElem.searchPageList.closest('.SearchDownloadListGroup'); 2956 if (outputSelectorGroup) { 2957 if (resultTotal > 0) { 2958 outputSelectorGroup.hidden = false; 2959 } else { 2960 outputSelectorGroup.hidden = true; 2961 } 2962 } 2963 2964 doc.querySelectorAll('.JSPagesResultNum').forEach(function (items) { 2965 items.textContent = resultTotal; 2966 }); 2967 2968 contentsArr.forEach(function (items, index) { 2969 if (displayMaxNum && index > (displayMaxNum - 1)) { 2970 return; 2971 } 2972 nodeClone = util.createNodeClone(K_S.getElem.searchPageListTemplate, 'li'); 2973 K_S.fn.setPagesDisplay(nodeClone, items); 2974 2975 fragment.appendChild(nodeClone); 2976 }); 2977 2978 K_S.getElem.searchPageList.appendChild(fragment); 2979 list = K_S.getElem.searchPageList.querySelectorAll(updateListStr); 2980 K_S.fn.setMoreBtnDisplay(resultOffset, resultTotal); 2981 K_S.fn.setResultDisplay(list); 2982 }).then(function () { 2983 if (callback) { 2984 callback(); 2985 } 2986 }).catch(function (error) { 2987 console.log(error); 2988 }); 2989 }; 2990 2991 K_S.fn.getPagesLoadPath = function () { 2992 var inputValue; 2993 var loadPath; 2994 2995 if (K_S.getElem.mainContForm) { 2996 inputValue = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput').value; 2997 inputValue = inputValue.replace(/\+/g, ' '); 2998 inputValue = encodeURIComponent(inputValue.trim()); 2999 } else { 3000 inputValue = ''; 3001 } 3002 3003 loadPath = K_S.API_PATH.PAGE 3004 + 'q=' 3005 + inputValue 3006 + '&l=' 3007 + K_S.CONFIG.ONE_TIME_DATA_LOAD_MAX_NUM; 3008 3009 return loadPath; 3010 }; 3011 3012 K_S.fn.setPagesDisplay = function (nodeClone, JSONItems) { 3013 var legacyElems = { 3014 title: nodeClone.querySelector('.Title'), 3015 description: nodeClone.querySelector('.Description'), 3016 url: nodeClone.querySelector('.Url'), 3017 }; 3018 3019 var elems = { 3020 title: legacyElems.title ? 3021 legacyElems.title : 3022 nodeClone.querySelector('.js-setPagesDisplay-title'), 3023 titleUrl: nodeClone.querySelector('.js-setPagesDisplay-titleUrl'), 3024 description: legacyElems.description ? 3025 legacyElems.description : 3026 nodeClone.querySelector('.js-setPagesDisplay-description'), 3027 url: legacyElems.url ? 3028 legacyElems.url : 3029 nodeClone.querySelector('.js-setPagesDisplay-url'), 3030 urlText: nodeClone.querySelector('.js-setPagesDisplay-urlText'), 3031 }; 3032 3033 if (elems.title) { 3034 elems.title.textContent = JSONItems.title; 3035 elems.title.href = JSONItems.content_url; 3036 } 3037 3038 if (elems.titleUrl) { 3039 elems.titleUrl.href = JSONItems.content_url; 3040 } 3041 3042 if (elems.description) { 3043 if (JSONItems.description) { 3044 elems.description.textContent = util.getOmittedText(JSONItems.description, elems.description); 3045 } 3046 } 3047 3048 if (elems.url) { 3049 if (elems.url === legacyElems.url) { 3050 elems.url.textContent = JSONItems.content_url; 3051 } 3052 elems.url.href = JSONItems.content_url; 3053 } 3054 3055 if (elems.urlText) { 3056 elems.urlText.textContent = JSONItems.content_url; 3057 } 3058 }; 3059
3060 K_S.fn.setLoadModels = function (addOffsetParam, callback) { 3061 var dict = util.makeQueryIntoDict(); 3062 var displayMaxNum; 3063 var fragment; 3064 var nodeClone; 3065 var loadPath; 3066 var outputSelectorGroup; 3067 var probablyModelGroup; 3068 3069 if (!K_S.getElem.searchModelList || !K_S.getElem.searchModelListTemplate) { 3070 return; 3071 } 3072 3073 displayMaxNum = K_S.getElem.searchModelList.getAttribute('data-limit'); 3074 fragment = doc.createDocumentFragment(); 3075 loadPath = K_S.fn.getModelsLoadPath(); 3076 3077 if (typeof dict.o === 'undefined') { 3078 dict.o = 0; 3079 } 3080 3081 if (typeof dict.s === 'undefined') { 3082 dict.s = ''; 3083 } 3084 3085 if (!addOffsetParam) { 3086 addOffsetParam = `&o=${dict.o}&s=${dict.s}`; 3087 } 3088 3089 console.log('Models API: ' + loadPath + addOffsetParam); 3090 3091 util.getJSON(loadPath + addOffsetParam).then(function (response) { 3092 var modelsArr = response.result.models; 3093 var resultTotal = response.result.attribute.total; 3094 var resultOffset = response.result.attribute.offset; 3095 var updateListStr = '#' + K_S.getElem.searchModelList.id + '>li'; 3096 3097 if (resultOffset === 0) { 3098 K_S.getElem.searchModelList.querySelectorAll(updateListStr).forEach(function (items) { 3099 items.remove(); 3100 }); 3101 } 3102 3103 doc.querySelectorAll('.JSModelsResultNum').forEach(function (items) { 3104 items.textContent = resultTotal; 3105 }); 3106 3107 outputSelectorGroup = K_S.getElem.searchModelList.closest('.SearchDownloadListGroup'); 3108 probablyModelGroup = K_S.getElem.searchProbablyModelList.closest('.SearchDownloadListGroup'); 3109 if (outputSelectorGroup) { 3110 if (resultTotal > 0) { 3111 outputSelectorGroup.hidden = false; 3112 3113 if (probablyModelGroup.hidden === false) { 3114 probablyModelGroup.hidden = true; 3115 } 3116 } else { 3117 outputSelectorGroup.hidden = true; 3118 } 3119 } 3120 3121 modelsArr.forEach(function (items, index) { 3122 if (displayMaxNum && index > (displayMaxNum - 1)) { 3123 return; 3124 } 3125 nodeClone = util.createNodeClone(K_S.getElem.searchModelListTemplate, 'li'); 3126 K_S.fn.setModelsDisplay(nodeClone, items); 3127 3128 fragment.appendChild(nodeClone); 3129 }); 3130 3131 K_S.getElem.searchModelList.appendChild(fragment); 3132 }).then(function () { 3133 if (callback) { 3134 callback(); 3135 } 3136 }).catch(function (error) { 3137 console.log(error); 3138 }); 3139 }; 3140 3141 K_S.fn.setLoadProbablyTheseModels = function (callback) { 3142 var displayMaxNum; 3143 var fragment; 3144 var nodeClone; 3145 var loadPath; 3146 var outputSelectorGroup; 3147 var modelGroup; 3148 3149 if (!K_S.getElem.searchProbablyModelList || !K_S.getElem.searchModelListTemplate) { 3150 return; 3151 } 3152 3153 displayMaxNum = K_S.getElem.searchModelList.getAttribute('data-limit'); 3154 fragment = doc.createDocumentFragment(); 3155 loadPath = K_S.fn.getProbablyTheseModelsLoadPath(); 3156 3157 console.log('Probably These Models API: ' + loadPath); 3158 3159 util.getJSON(loadPath).then(function (response) { 3160 var modelsArr = response.didyoumean_product_model; 3161 var updateListStr = '#' + K_S.getElem.searchProbablyModelList.id + '>li'; 3162 var resultTotal = response.didyoumean_product_model.length; 3163 3164 K_S.getElem.searchProbablyModelList.querySelectorAll(updateListStr).forEach(function (items) { 3165 items.remove(); 3166 }); 3167 3168 outputSelectorGroup = K_S.getElem.searchProbablyModelList.closest('.SearchDownloadListGroup'); 3169 modelGroup = K_S.getElem.searchModelList.closest('.SearchDownloadListGroup'); 3170 if (outputSelectorGroup) { 3171 if (resultTotal === 0) { 3172 outputSelectorGroup.hidden = true; 3173 } else { 3174 outputSelectorGroup.hidden = false; 3175 3176 if (modelGroup.hidden === false) { 3177 outputSelectorGroup.hidden = true; 3178 } 3179 } 3180 } 3181 3182 modelsArr.forEach(function (items, index) { 3183 if (displayMaxNum && index > (displayMaxNum - 1)) { 3184 return; 3185 } 3186 nodeClone = util.createNodeClone(K_S.getElem.searchModelListTemplate, 'li'); 3187 K_S.fn.setModelsDisplay(nodeClone, items); 3188 3189 fragment.appendChild(nodeClone); 3190 }); 3191
3192 K_S.getElem.searchProbablyModelList.appendChild(fragment); 3193 }).then(function () { 3194 if (callback) { 3195 callback(); 3196 } 3197 }).catch(function (error) { 3198 console.log(error); 3199 }); 3200 }; 3201 3202 K_S.fn.getModelsLoadPath = function () { 3203 var discontinuedCookie = util.getCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME); 3204 var inputValue; 3205 var loadPath; 3206 var discontinuedParam; 3207 3208 if (typeof discontinuedCookie !== 'undefined') { 3209 if (discontinuedCookie === '1') { 3210 discontinuedParam = 1; 3211 } else { 3212 discontinuedParam = 0; 3213 } 3214 } else { 3215 discontinuedParam = 0; 3216 } 3217 3218 if (K_S.getElem.mainContForm) { 3219 inputValue = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput').value; 3220 inputValue = inputValue.replace(/\+/g, ' '); 3221 inputValue = encodeURIComponent(inputValue.trim()); 3222 } else { 3223 inputValue = ''; 3224 } 3225 3226 loadPath = K_S.API_PATH.SUGGEST_MODEL 3227 + 'q=' 3228 + inputValue 3229 + '&l=20' 3230 + '&discontinued_flag=' 3231 + discontinuedParam; 3232 3233 return loadPath; 3234 }; 3235 3236 K_S.fn.getProbablyTheseModelsLoadPath = function () { 3237 var inputValue; 3238 var loadPath; 3239 3240 if (K_S.getElem.mainContForm) { 3241 inputValue = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput').value; 3242 inputValue = inputValue.replace(/\+/g, ' '); 3243 inputValue = encodeURIComponent(inputValue.trim()); 3244 } else { 3245 inputValue = ''; 3246 } 3247 3248 loadPath = K_S.API_PATH.DID_YOU_MEAN_MODEL 3249 + 'q=' 3250 + inputValue 3251 + '&l=20' 3252 + '&s=70'; 3253 3254 return loadPath; 3255 }; 3256 3257 K_S.fn.setModelsDisplay = function (nodeClone, JSONItems) { 3258 var model = nodeClone.querySelector('.Model'); 3259 var modelName = nodeClone.querySelector('.ModelName'); 3260 var modelUrl = nodeClone.querySelector('.ModelUrl'); 3261 3262 if (model) { 3263 model.textContent = JSONItems.webproduct_name; 3264 model.href = JSONItems.url; 3265 } 3266 3267 if (modelName) { 3268 modelName.textContent = JSONItems.webproduct_name; 3269 } 3270 3271 if (modelUrl) { 3272 modelUrl.href = JSONItems.url; 3273 } 3274 }; 3275 3276 K_S.fn.setLoadAssets = function (outputSelector, addOffsetParam, drilldownNotUpdateFlag, callback, customParam) { 3277 var dict = util.makeQueryIntoDict(); 3278 var displayMaxNum; 3279 var outputSelectorGroup; 3280 var searchNotes; 3281 var keyDescription; 3282 var fragment; 3283 var fragmentSo; 3284 var fragmentCd; 3285 var nodeClone; 3286 var nodeCloneSo; 3287 var nodeCloneCd; 3288 var list; 3289 var loadPath; 3290 var fn = {}; 3291 3292 if (!outputSelector || !K_S.getElem.searchDLTemplate) { 3293 return; 3294 } 3295 3296 displayMaxNum = outputSelector.getAttribute('data-limit'); 3297 outputSelectorGroup = outputSelector.closest('.SearchDownloadListGroup'); 3298 searchNotes = doc.querySelector('.SearchDownloadNotes'); 3299 keyDescription = doc.querySelector('.js-assetsKeyDescription'); 3300 fragment = doc.createDocumentFragment(); 3301 fragmentSo = doc.createDocumentFragment(); 3302 fragmentCd = doc.createDocumentFragment(); 3303 loadPath = K_S.fn.getAssetsLoadPath(outputSelector); 3304 3305 if (typeof dict.o === 'undefined') { 3306 dict.o = 0; 3307 } 3308 3309 if (typeof dict.s === 'undefined') { 3310 dict.s = ''; 3311 } 3312 3313 if (typeof dict.modelId === 'undefined') { 3314 dict.modelId = ''; 3315 } 3316 3317 if (!addOffsetParam) { 3318 addOffsetParam = `&o=${dict.o}&s=${dict.s}`; 3319 } 3320 3321 if (/^\/products\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+\/downloads\/$/.test(win.location.pathname)) { 3322 if (dict.modelId) { 3323 addOffsetParam = `&o=${dict.o}&s=2`; 3324 } else { 3325 addOffsetParam = `&o=${dict.o}&s=1`; 3326 } 3327 } 3328 3329 fn.updateNav = function () { 3330 if (K_S.getElem.loadResultsNav && !/all/.test(location.pathname)) { 3331 K_S.getElem.loadResultsNav.querySelectorAll('a[data-mode]').forEach(function (items) { 3332 items.href = items.pathname + 3333 '?mode=' + 3334 items.dataset.mode + 3335 '&modelId=' + 3336 dict.modelId; 3337 3338 if (!dict.mode) { 3339 dict.mode = 'ca'; 3340 } 3341 3342 if (dict.mode === items.dataset.mode) { 3343 items.setAttribute('aria-current', 'page'); 3344 } 3345 }); 3346 } 3347 }; 3348 3349 fn.setResultNum = function (selector, resultTotal) { 3350 if (selector.querySelectorAll('.JSAssetsResultNum').length) { 3351 selector.querySelectorAll('.JSAssetsResultNum').forEach(function (items) { 3352 items.textContent = resultTotal; 3353 }); 3354 } 3355 if (selector.querySelectorAll('.js-loadAssets-resultsNumber').length) { 3356 selector.querySelectorAll('.js-loadAssets-resultsNumber').forEach(function (items) { 3357 items.textContent = resultTotal; 3358 }); 3359 } 3360 }; 3361 3362 fn.updateNav(); 3363 3364 if (customParam) { 3365 const url = new URL(loadPath);
3366 const urlParams = url.searchParams; 3367 urlParams.delete('q'); 3368 urlParams.delete('group_id'); 3369 urlParams.delete('type_id'); 3370 urlParams.delete('webseries_id'); 3371 urlParams.delete('webproduct_id'); 3372 3373 loadPath = url.href; 3374 } 3375 3376 console.log('Asset API: ' + loadPath + addOffsetParam); 3377 3378 util.getJSON(loadPath + addOffsetParam).then(function (response) { 3379 var seriesID = response.meta.request_params.webseries_id[0]; 3380 var assetsArr = response.result.assets; 3381 var resultTotal = response.result.attribute.total; 3382 var resultOffset = response.result.attribute.offset; 3383 var updateListStr = '#' + outputSelector.id + '>li'; 3384 3385 if (resultOffset === 0) { 3386 outputSelector.querySelectorAll(updateListStr).forEach(function (items) { 3387 items.remove(); 3388 }); 3389 } 3390 3391 if (!seriesID) { 3392 seriesID = ''; 3393 } 3394 3395 if (!resultTotal) { 3396 outputSelector.classList.add(K_S.CONFIG.NORESULT_ATTR); 3397 } else { 3398 outputSelector.classList.remove(K_S.CONFIG.NORESULT_ATTR); 3399 } 3400 3401 if (outputSelectorGroup) { 3402 fn.setResultNum(outputSelectorGroup, resultTotal); 3403 3404 if (resultTotal > 0) { 3405 outputSelectorGroup.hidden = false; 3406 } else { 3407 outputSelectorGroup.hidden = true; 3408 } 3409 } else { 3410 fn.setResultNum(doc, resultTotal); 3411 } 3412 3413 assetsArr.forEach(function (items, index) { 3414 if (displayMaxNum && index > (displayMaxNum - 1)) { 3415 return; 3416 } 3417 nodeClone = util.createNodeClone(K_S.getElem.searchDLTemplate, 'li'); 3418 K_S.fn.setAssetsDisplay(nodeClone, items, seriesID); 3419 3420 fragment.appendChild(nodeClone); 3421 3422 if (K_S.getElem.searchDLSoTemplate) { 3423 nodeCloneSo = util.createNodeClone(K_S.getElem.searchDLSoTemplate, 'li'); 3424 K_S.fn.setAssetsDisplay(nodeCloneSo, items, seriesID); 3425 fragmentSo.appendChild(nodeCloneSo); 3426 } 3427 3428 if (K_S.getElem.searchDLCdTemplate) { 3429 nodeCloneCd = util.createNodeClone(K_S.getElem.searchDLCdTemplate, 'li'); 3430 K_S.fn.setAssetsDisplay(nodeCloneCd, items, seriesID); 3431 fragmentCd.appendChild(nodeCloneCd); 3432 } 3433 }); 3434 3435 switch (outputSelector.id) { 3436 case 'js-loadSoAssets': 3437 outputSelector.appendChild(fragmentSo); 3438 break; 3439 case 'js-loadCdAssets': 3440 outputSelector.appendChild(fragmentCd); 3441 break; 3442 default: 3443 outputSelector.appendChild(fragment); 3444 } 3445 3446 if (searchNotes) { 3447 if (outputSelector.querySelector('.IconKey')) { 3448 searchNotes.classList.add(K_S.CONFIG.SHOW_ATTR); 3449 } else { 3450 searchNotes.classList.remove(K_S.CONFIG.SHOW_ATTR); 3451 } 3452 } 3453 3454 if (outputSelectorGroup) { 3455 if (outputSelectorGroup.querySelector('.js-assetsKeyDescription')) { 3456 if (outputSelector.querySelector('.js-setAssetsDisplay-keyIcon')) { 3457 outputSelectorGroup.querySelector('.js-assetsKeyDescription').hidden = false; 3458 } else { 3459 outputSelectorGroup.querySelector('.js-assetsKeyDescription').hidden = true; 3460 } 3461 } 3462 } else { 3463 if (keyDescription) { 3464 if (outputSelector.querySelector('.js-setAssetsDisplay-keyIcon')) { 3465 keyDescription.hidden = false; 3466 } else { 3467 keyDescription.hidden = true; 3468 } 3469 } 3470 } 3471 3472 if (outputSelector.getAttribute('data-filter') === 'all') { 3473 if (outputSelector.getAttribute('data-card-slider') === 'true') { 3474 if (outputSelector.closest('.js-horizontal-scroll')) { 3475 outputSelector.closest('.js-horizontal-scroll').classList.toggle( 3476 'is-overflowing', 3477 outputSelector.scrollWidth > outputSelector.clientWidth 3478 ); 3479 } 3480 } else { 3481 if (K_S.CONFIG.SMALL_SCREEN_MQ.matches) { 3482 if (displayMaxNum > 1) { 3483 K_S.fn.slider(outputSelector); 3484 } 3485 } else { 3486 if (displayMaxNum > 5) { 3487 K_S.fn.slider(outputSelector); 3488 } 3489 } 3490 } 3491 } 3492 list = outputSelector.querySelectorAll(updateListStr); 3493 K_S.fn.setMoreBtnDisplay(resultOffset, resultTotal); 3494 K_S.fn.setResultDisplay(list); 3495 3496 if (!drilldownNotUpdateFlag) { 3497 K_S.fn.setDrillDown.run(response); 3498 } 3499 }).then(function () { 3500 if (callback) { 3501 callback(); 3502 } 3503 }).catch(function (error) { 3504 console.log(error); 3505 }); 3506 }; 3507 3508 K_S.fn.getAssetsLoadPath = function (outputSelector) { 3509 var dict = util.makeQueryIntoDict(); 3510 var langCookie = (dict.mode === 'ma') || 3511 ((outputSelector.getAttribute('data-filter') === 'all') && (outputSelector.getAttribute('data-asset-type') === '13')) ?
3512 util.getCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME) : 3513 util.getCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME); 3514 var fileCookie = util.getCookie(K_S.CONFIG.SELECT_FILE_COOKIE_NAME); 3515 var categoryCookieName = util.addAssetTypeToString(K_S.CONFIG.SELECT_CATEGORY_COOKIE_NAME); 3516 var categoryCookie = util.getCookie(categoryCookieName); 3517 var selectLangParam = ''; 3518 var selectFileParam = ''; 3519 var selectCategoryParam = ''; 3520 var groupIDParam = ''; 3521 var typeIDParam = ''; 3522 var seriesIDParam = ''; 3523 var assetIDParam = ''; 3524 var productIDParam = ''; 3525 var inputValue; 3526 var drilldownFlagParam; 3527 var loadPath; 3528 var limit = outputSelector.getAttribute('data-limit') ? outputSelector.getAttribute('data-limit') : K_S.CONFIG.ONE_TIME_DATA_LOAD_MAX_NUM; 3529 3530 if (!langCookie) { 3531 if (outputSelector.getAttribute('data-filter') === 'all') { 3532 if (outputSelector.getAttribute('data-asset-type') === '13') { 3533 util.setCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME, JSON.stringify(GLOBAL.MANUAL_LANG)); 3534 langCookie = util.getCookie(K_S.CONFIG.SELECT_MANUAL_LANG_COOKIE_NAME); 3535 } else { 3536 util.setCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME, JSON.stringify(GLOBAL.SITE_LANG)); 3537 langCookie = util.getCookie(K_S.CONFIG.SELECT_LANG_COOKIE_NAME); 3538 } 3539 } 3540 } 3541 3542 if (langCookie) { 3543 langCookie = JSON.parse(langCookie); 3544 langCookie.forEach(function (cookies) { 3545 selectLangParam += cookies + ','; 3546 }); 3547 selectLangParam = selectLangParam.slice(0, -1); 3548 } 3549 3550 if (fileCookie) { 3551 fileCookie = JSON.parse(fileCookie); 3552 fileCookie.forEach(function (cookies) { 3553 selectFileParam += GLOBAL.SELECT_FILE_TYPE[cookies] + ','; 3554 }); 3555 selectFileParam = selectFileParam.slice(0, -1); 3556 } 3557 3558 if (categoryCookie) { 3559 categoryCookie = JSON.parse(categoryCookie); 3560 3561 categoryCookie.forEach(function (cookies) { 3562 selectCategoryParam += cookies + ','; 3563 }); 3564 selectCategoryParam = selectCategoryParam.slice(0, -1); 3565 } 3566 3567 if (!K_S.getElem.selectTypes) { 3568 if (outputSelector.getAttribute('data-filter') !== 'all' && !K_S.getElem.langSelectWrap) { 3569 selectLangParam = ''; 3570 3571 if (!K_S.getElem.filterFileTypes) { 3572 selectFileParam = ''; 3573 } 3574 } 3575 3576 if (outputSelector.getAttribute('data-filter') === 'all' || K_S.getElem.langSelectWrap || !K_S.getElem.filterFileTypes) { 3577 selectFileParam = ''; 3578 } 3579 } 3580 3581 if (K_S.getElem.selectTypes) { 3582 if (K_S.getElem.selectTypes.getAttribute('data-type') === 'file') { 3583 selectLangParam = ''; 3584 } else { 3585 selectFileParam = ''; 3586 } 3587 } 3588 3589 if (!K_S.getElem.filterCategories) { 3590 selectCategoryParam = ''; 3591 } 3592 3593 if (K_S.getElem.drillDownNav) { 3594 if (dict.group_id) { 3595 groupIDParam = decodeURIComponent(dict.group_id); 3596 } else { 3597 groupIDParam = outputSelector.getAttribute('data-group-id'); 3598 } 3599 if (dict.type_id) { 3600 typeIDParam = decodeURIComponent(dict.type_id); 3601 } else { 3602 typeIDParam = outputSelector.getAttribute('data-type-id'); 3603 } 3604 if (dict.webseries_id) { 3605 seriesIDParam = decodeURIComponent(dict.webseries_id); 3606 } else { 3607 seriesIDParam = outputSelector.getAttribute('data-series-id'); 3608 } 3609 drilldownFlagParam = 1; 3610 } else { 3611 seriesIDParam = GLOBAL.CURRENT_SERIESE_ID; 3612 drilldownFlagParam = 0; 3613 } 3614 3615 if (K_S.getElem.mainContForm) { 3616 inputValue = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput').value; 3617 inputValue = inputValue.replace(/\+/g, ' '); 3618 inputValue = encodeURIComponent(inputValue.trim()); 3619 } else { 3620 inputValue = ''; 3621 } 3622 3623 if (GLOBAL.ASSET_TYPE_ID) { 3624 assetIDParam = GLOBAL.ASSET_TYPE_ID; 3625 } else { 3626 assetIDParam = outputSelector.getAttribute('data-asset-type') ? outputSelector.getAttribute('data-asset-type')
3626: ''; 3627 } 3628 3629 if (dict.modelId) { 3630 productIDParam = dict.modelId; 3631 } else { 3632 if (GLOBAL.WEB_PRODUCT_ID) { 3633 productIDParam = GLOBAL.WEB_PRODUCT_ID; 3634 } 3635 } 3636 3637 loadPath = K_S.API_PATH.ASSET 3638 + 'q=' 3639 + inputValue 3640 + '&l=' 3641 + limit 3642 + '&language_type_id=' 3643 + selectLangParam 3644 + '&asset_type_id=' 3645 + assetIDParam 3646 + '&webseries_id=' 3647 + seriesIDParam 3648 + '&group_id=' 3649 + groupIDParam 3650 + '&type_id=' 3651 + typeIDParam 3652 + '&webproduct_id=' 3653 + productIDParam 3654 + '&assetdetail_type_id=' 3655 + (K_S.getElem.filterCategories ? selectCategoryParam : selectFileParam) 3656 + '&drilldown_flag=' 3657 + drilldownFlagParam; 3658 3659 return loadPath; 3660 }; 3661 3662 K_S.fn.setAssetsDisplay = function (nodeClone, JSONItems, seriesID) { 3663 var fn = {}; 3664 var legacyElems = { 3665 downloadListContent: doc.getElementById('DownloadListContent'), 3666 title: nodeClone.querySelector('.Title'), 3667 titleLink: nodeClone.querySelector('.TitleLink'), 3668 dlGroup: nodeClone.querySelector('a.DownloadGroup'), 3669 dlBtn: nodeClone.querySelector('.SearchDownloadBtn'), 3670 addBtn: nodeClone.querySelector('.SearchAddBtn'), 3671 thumbnail: nodeClone.querySelector('.Thumbnail img'), 3672 thumbnailLink: nodeClone.querySelector('.ThumbnailLink'), 3673 iconKey: nodeClone.querySelector('.IconKey'), 3674 fileInfo: nodeClone.querySelector('.FileInfo'), 3675 fileFormat: nodeClone.querySelector('.FileFormat'), 3676 fileSize: nodeClone.querySelector('.FileSize'), 3677 lang: nodeClone.querySelector('.Lang'), 3678 os: nodeClone.querySelector('.OS'), 3679 version: nodeClone.querySelector('.Version'), 3680 updateDate: nodeClone.querySelector('.UpdateDate'), 3681 description: nodeClone.querySelector('.Description'), 3682 descriptionLink: nodeClone.querySelector('.DescriptionLink'), 3683 }; 3684 var elems = { 3685 downloadListContent: legacyElems.downloadListContent ? 3686 legacyElems.downloadListContent : 3687 doc.getElementById('js-downloadListPanel-cartList'), 3688 title: legacyElems.title ? 3689 legacyElems.title : 3690 nodeClone.querySelector('.js-setAssetsDisplay-title'), 3691 titleLink: legacyElems.titleLink, 3692 assetLink: legacyElems.dlGroup ? 3693 legacyElems.dlGroup : 3694 nodeClone.querySelector('.js-setAssetsDisplay-link'), 3695 dlBtn: legacyElems.dlBtn ? 3696 legacyElems.dlBtn : 3697 nodeClone.querySelector('.js-setAssetsDisplay-download'), 3698 addBtn: legacyElems.addBtn ? 3699 legacyElems.addBtn : 3700 nodeClone.querySelector('.js-setAssetsDisplay-addButton'), 3701 thumbnail: legacyElems.thumbnail ? 3702 legacyElems.thumbnail : 3703 nodeClone.querySelector('.js-setAssetsDisplay-image'), 3704 thumbnailLink: legacyElems.thumbnailLink, 3705 iconKey: legacyElems.iconKey ? 3706 legacyElems.iconKey : 3707 nodeClone.querySelector('.js-setAssetsDisplay-keyIcon'), 3708 fileInfo: legacyElems.fileInfo ? 3709 legacyElems.fileInfo : 3710 nodeClone.querySelector('.js-setAssetsDisplay-fileData'), 3711 fileFormat: legacyElems.fileFormat ? 3712 legacyElems.fileFormat : 3713 nodeClone.querySelector('.js-setAssetsDisplay-fileFormat'), 3714 assetDetailType: nodeClone.querySelector('.js-setAssetsDisplay-assetDetailType'), 3715 fileSize: legacyElems.fileSize ? 3716 legacyElems.fileSize : 3717 nodeClone.querySelector('.js-setAssetsDisplay-fileSize'), 3718 lang: legacyElems.lang ? 3719 legacyElems.lang : 3720 nodeClone.querySelector('.js-setAssetsDisplay-language'), 3721 os: legacyElems.os ? 3722 legacyElems.os : 3723 nodeClone.querySelector('.js-setAssetsDisplay-os'), 3724 version: legacyElems.version ? 3725 legacyElems.version : 3726 nodeClone.querySelector('.js-setAssetsDisplay-version'), 3727 updateDate: legacyElems.updateDate ? 3728 legacyElems.updateDate : 3729 nodeClone.querySelector('.js-setAssetsDisplay-updateDate'), 3730 description: legacyElems.description ? 3731 legacyElems.description : 3732 nodeClone.querySelector('.js-setAssetsDisplay-description'), 3733 descriptionLink: legacyElems.descriptionLink ? 3734 legacyElems.descriptionLink : 3735 nodeClone.querySelector('.js-setAssetsDisplay-descriptionLink'), 3736 descriptionLinkLabel: nodeClone.querySelector('.js-setAssetsDisplay-descriptionLinkLabel'), 3737 descriptionTemplate: nodeClone.querySelector('.js-setAssetsDisplay-descriptionTemplate'), 3738 summary: nodeClone.querySelector('.js-setAssetsDisplay-summary'), 3739 }; 3740 var thumbnailSize = elems.thumbnail ? elems.thumbnail.getAttribute('data-img-size') : null; 3741 var thumbnailSizeStr = ''; 3742 var dlHref = GLOBAL.ORIGINAL_DOMAIN 3743 + '/download/download/confirmation/' 3744 + '?dlAssetId=' 3745 + JSONItems.asset_id 3746 + '&dlSeriesId=' 3747 + seriesID 3748 + '&dlModelId=' 3749 + '&dlLangId=' 3750 + '&dlLangType=' 3751 + JSONItems.language_type_id; 3752 var hasModalTrigger = elems.descriptionLink ? elems.descriptionLink.getAttribute('data-maodal-trigger') : false; 3753 var descriptionTemplateHtml; 3754 var descriptionTemplateText; 3755 3756 fn.updateThumbnailSize = function () { 3757 if (thumbnailSize && /^[SML]$/.test(thumbnailSize)) { 3758 if (thumbnailSize !== 'M') { 3759 thumbnailSizeStr = '_' + thumbnailSize; 3760 } 3761 } 3762 }; 3763 3764 fn.updateThumbnailSize(); 3765 3766 if (elems.thumbnail) { 3767 elems.thumbnail.src = GLOBAL.ORIGINAL_DOMAIN 3768 + '/img/asset/' 3769 + JSONItems.asset_thumbnail 3770 + thumbnailSizeStr 3771 + '.jpg'; 3772 } 3773 3774 if (elems.thumbnailLink) { 3775 elems.thumbnailLink.href = dlHref; 3776 } 3777 3778 if (elems.title) { 3779 if (elems.titleLink) { 3780 elems.titleLink.textContent = JSONItems.asset_name; 3781 elems.titleLink.href = dlHref; 3782 } else { 3783 elems.title.textContent = JSONItems.asset_name; 3784 } 3785 } 3786 3787 if (elems.fileFormat) { 3788 if (JSONItems.fileformat) { 3789 elems.fileFormat.textContent = JSONItems.fileformat; 3790 } 3791 } 3792 3793 if (elems.assetDetailType) { 3794 if (JSONItems.assetdetail_type_name) { 3795 elems.assetDetailType.textContent = JSONItems.assetdetail_type_name; 3796 } 3797 } 3798 3799 if ((elems.fileFormat && JSONItems.fileformat) || 3800 (elems.assetDetailType && JSONItems.assetdetail_type_name)) { 3801 if (elems.fileSize) { 3802 if (Number(JSONItems.filesize) < 1024 * 1024) { 3803 elems.fileSize.textContent = util.convertByteToKB(JSONItems.filesize); 3804 } else { 3805 elems.fileSize.textContent = util.convertByteToMB(JSONItems.filesize); 3806 } 3807 } 3808 } 3809 3810 if ((elems.fileFormat && !JSONItems.fileformat) || 3811 (elems.assetDetailType && !JSONItems.assetdetail_type_name)) { 3812 if (Number(JSONItems.filesize) < 1024 * 1024) { 3813 elems.fileInfo.textContent = '(' + util.convertByteToKB(JSONItems.filesize) + ')'; 3814 } else { 3815 elems.fileInfo.textContent = '(' + util.convertByteToMB(JSONItems.filesize) + ')'; 3816 } 3817 } 3818 3819 if (elems.assetLink) { 3820 elems.assetLink.href = dlHref; 3821 } 3822 3823 if (elems.dlBtn) { 3824 elems.dlBtn.href = dlHref; 3825 } 3826 3827 if (elems.addBtn) { 3828 elems.addBtn.id = JSONItems.asset_id; 3829 elems.addBtn.setAttribute('data-seriesid', seriesID); 3830 3831 if (elems.downloadListContent) { 3832 elems.downloadListContent.querySelectorAll('.js-downloadListPanel-deleteButton').forEach(function (items) { 3833 if (JSONItems.asset_id === items.id.split('delete-')[1]) { 3834 elems.addBtn.classList.add('Disabled'); 3835 elems.addBtn.disabled = true; 3836 } 3837 }); 3838 } 3839 } 3840 3841 if (elems.lang) { 3842 if (elems.lang === legacyElems.lang) { 3843 if (GLOBAL.SELECT_LANG1 && GLOBAL.SELECT_LANG1[JSONItems.language_type_id]) { 3844 elems.lang.textContent = GLOBAL.SELECT_LANG1[JSONItems.language_type_id]; 3845 } else if (GLOBAL.SELECT_LANG2 && GLOBAL.SELECT_LANG2[JSONItems.language_type_id]) { 3846 elems.lang.textContent = GLOBAL.SELECT_LANG2[JSONItems.language_type_id]; 3847 } 3848 } else { 3849 if (GLOBAL.SELECT_LANG && GLOBAL.SELECT_LANG[JSONItems.language_type_id]) { 3850 elems.lang.textContent = GLOBAL.SELECT_LANG[JSONItems.language_type_id]; 3851 } 3852 } 3853 } 3854 3855 if (!JSONItems.softwarepublishlevel_id) { 3856 if (elems.iconKey) { 3857 elems.iconKey.remove(); 3858 } 3859 } 3860 3861 if (elems.os) { 3862 if (JSONItems.softwareos_type_name) { 3863 elems.os.textContent = GLOBAL.TRANSLATION.OSLabel + ' ' + JSONItems.softwareos_type_name; 3864 } else { 3865 elems.os.remove(); 3866 } 3867 } 3868 3869 if (elems.version) { 3870 if (JSONItems.softwareversion) { 3871 elems.version.textContent = GLOBAL.TRANSLATION.VersionLabel + ' ' + JSONItems.softwareversion; 3872 } else { 3873 elems.version.remove(); 3874 } 3875 } 3876 3877 if (elems.updateDate) { 3878 if (JSONItems.softwarelastupdate_date) { 3879 elems.updateDate.textContent = GLOBAL.TRANSLATION.LastUpdateDateLabel + ' ' + JSONItems.softwarelastupdate_date; 3880 } else { 3881 elems.updateDate.remove(); 3882 } 3883 } 3884 3885 if (elems.descriptionLink) { 3886 if (JSONItems.softwaredescriptionurl) { 3887 if (/keyence\.co\.jp$/.test(win.location.host)) { 3888 elems.descriptionLink.classList.add('js-modal-ajax'); 3889 } else if (!hasModalTrigger) { 3890 elems.descriptionLink.classList.add('ModalAjax'); 3891 elems.descriptionLink.classList.add('js-modalAjax'); 3892 } 3893 3894 if (elems.descriptionLinkLabel) { 3895 elems.descriptionLinkLabel.textContent = GLOBAL.TRANSLATION.DescriptionLabel; 3896 } else { 3897 elems.descriptionLink.textContent = GLOBAL.TRANSLATION.DescriptionLabel; 3898 } 3899 3900 if (hasModalTrigger) { 3901 descriptionTemplateHtml = elems.descriptionTemplate.innerHTML; 3902 descriptionTemplateText = descriptionTemplateHtml.replace(/(data-standalone-content-loader-url-value=)""/g, '$1"' + GLOBAL.ORIGINAL_DOMAIN + JSONItems.softwaredescriptionurl + '"'); 3903 elems.descriptionTemplate.innerHTML = descriptionTemplateText; 3904 } 3905 3906 elems.descriptionLink.href = GLOBAL.ORIGINAL_DOMAIN + JSONItems.softwaredescriptionurl; 3907 elems.descriptionLink.target = '_blank'; 3908 } else { 3909 if (elems.description) { 3910 elems.description.remove(); 3911 } 3912 } 3913 } 3914 3915 if (elems.summary) { 3916 if (JSONItems.description) { 3917 elems.summary.textContent = util.getOmittedText(JSONItems.description, elems.summary); 3918 } else { 3919 elems.summary.remove(); 3920 } 3921 } 3922 }; 3923
3924 K_S.fn.setLoadDataSheets = function (addOffsetParam, drilldownNotUpdateFlag, callback) { 3925 var dict = util.makeQueryIntoDict(); 3926 var displayMaxNum; 3927 var outputSelectorGroup; 3928 var fragment; 3929 var nodeClone; 3930 var list; 3931 var loadPath; 3932 var fn = {}; 3933 3934 if (!K_S.getElem.searchDataSheetList || !K_S.getElem.searchDataSheetListTemplate) { 3935 return; 3936 } 3937 3938 displayMaxNum = K_S.getElem.searchDataSheetList.getAttribute('data-limit'); 3939 outputSelectorGroup = K_S.getElem.searchDataSheetList.closest('.SearchDownloadListGroup'); 3940 fragment = doc.createDocumentFragment(); 3941 loadPath = K_S.fn.getDataSheetsLoadPath(K_S.getElem.searchDataSheetList); 3942 3943 if (typeof dict.o === 'undefined') { 3944 dict.o = 0; 3945 } 3946 3947 if (typeof dict.s === 'undefined') { 3948 dict.s = ''; 3949 } 3950 3951 if (typeof dict.modelId === 'undefined') { 3952 dict.modelId = ''; 3953 } 3954 3955 if (!addOffsetParam) { 3956 addOffsetParam = `&o=${dict.o}&s=${dict.s}`; 3957 } 3958 3959 if (/^\/products\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+\/downloads\/$/.test(win.location.pathname)) { 3960 if (dict.modelId) { 3961 addOffsetParam = `&o=${dict.o}&s=2`; 3962 } else { 3963 addOffsetParam = `&o=${dict.o}&s=1`; 3964 } 3965 } 3966 3967 fn.updateNav = function () { 3968 if (K_S.getElem.loadResultsNav && !/all/.test(location.pathname)) { 3969 K_S.getElem.loadResultsNav.querySelectorAll('a[data-mode]').forEach(function (items) { 3970 items.href = items.pathname + 3971 '?mode=' + 3972 items.dataset.mode + 3973 '&modelId=' + 3974 dict.modelId; 3975 3976 if (!dict.mode) { 3977 dict.mode = 'ca'; 3978 } 3979 3980 if (dict.mode === items.dataset.mode) { 3981 items.setAttribute('aria-current', 'page'); 3982 } 3983 }); 3984 } 3985 }; 3986 3987 fn.updateNav(); 3988 3989 console.log('Data Sheet API: ' + loadPath + addOffsetParam); 3990 3991 util.getJSON(loadPath + addOffsetParam).then(function (response) { 3992 var seriesID = response.meta.request_params.webseries_id[0]; 3993 var dataSheetsArr = response.result.datasheets; 3994 var resultTotal = response.result.attribute.total; 3995 var resultOffset = response.result.attribute.offset; 3996 var updateListStr = '#' + K_S.getElem.searchDataSheetList.id + '>li'; 3997 var dataSheetResultNum = doc.querySelectorAll('.js-loadDataSheets-resultsNumber'); 3998 3999 if (resultOffset === 0) { 4000 K_S.getElem.searchDataSheetList.querySelectorAll(updateListStr).forEach(function (items) { 4001 items.remove(); 4002 }); 4003 } 4004 4005 if (!seriesID) { 4006 seriesID = ''; 4007 } 4008 4009 if (!resultTotal) { 4010 K_S.getElem.searchDataSheetList.classList.add(K_S.CONFIG.NORESULT_ATTR); 4011 } else { 4012 K_S.getElem.searchDataSheetList.classList.remove(K_S.CONFIG.NORESULT_ATTR); 4013 } 4014 4015 if (outputSelectorGroup) { 4016 if (resultTotal > 0) { 4017 outputSelectorGroup.hidden = false; 4018 } else { 4019 outputSelectorGroup.hidden = true; 4020 } 4021 } 4022 4023 dataSheetResultNum.forEach(function (items) { 4024 items.textContent = resultTotal; 4025 }); 4026 4027 dataSheetsArr.forEach(function (items, index) { 4028 if (displayMaxNum && index > (displayMaxNum - 1)) { 4029 return; 4030 } 4031 nodeClone = util.createNodeClone(K_S.getElem.searchDataSheetListTemplate, 'li'); 4032 K_S.fn.setDataSheetsDisplay(nodeClone, items); 4033 4034 fragment.appendChild(nodeClone); 4035 }); 4036 4037 K_S.getElem.searchDataSheetList.appendChild(fragment); 4038 list = K_S.getElem.searchDataSheetList.querySelectorAll(updateListStr); 4039 K_S.fn.setMoreBtnDisplay(resultOffset, resultTotal); 4040 K_S.fn.setResultDisplay(list); 4041 4042 if (!drilldownNotUpdateFlag) { 4043 K_S.fn.setDrillDown.run(response); 4044 } 4045 }).then(function () { 4046 if (callback) { 4047 callback(); 4048 } 4049 }).catch(function (error) { 4050 console.log(error); 4051 }); 4052 }; 4053 4054 K_S.fn.getDataSheetsLoadPath = function (outputSelector) { 4055 var discontinuedCookie = util.getCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME); 4056 var categoryCookieName = util.addAssetTypeToString(K_S.CONFIG.SELECT_CATEGORY_COOKIE_NAME); 4057 var categoryCookie = util.getCookie(categoryCookieName); 4058 var dict = util.makeQueryIntoDict(); 4059 var groupIDParam = ''; 4060 var typeIDParam = ''; 4061 var seriesIDParam = ''; 4062 var selectCategoryParam = ''; 4063 var inputValue; 4064 var drilldownFlagParam; 4065 var loadPath; 4066 var discontinuedParam; 4067 var limit = outputSelector.getAttribute('data-limit') ? outputSelector.getAttribute('data-limit') : K_S.CONFIG.ONE_TIME_DATA_LOAD_MAX_NUM; 4068 4069 if (typeof discontinuedCookie !== 'undefined') { 4070 if (discontinuedCookie === '1') { 4071 discontinuedParam = 1; 4072 } else { 4073 discontinuedParam = 0; 4074 } 4075 } else { 4076 discontinuedParam = 0; 4077 } 4078 4079 if (K_S.getElem.drillDownNav) { 4080 if (dict.group_id) { 4081 groupIDParam = decodeURIComponent(dict.group_id); 4082 } else { 4083 groupIDParam = outputSelector.getAttribute('data-group-id'); 4084 }
4085 if (dict.type_id) { 4086 typeIDParam = decodeURIComponent(dict.type_id); 4087 } else { 4088 typeIDParam = outputSelector.getAttribute('data-type-id'); 4089 } 4090 if (dict.webseries_id) { 4091 seriesIDParam = decodeURIComponent(dict.webseries_id); 4092 } else { 4093 seriesIDParam = outputSelector.getAttribute('data-series-id'); 4094 } 4095 drilldownFlagParam = 1; 4096 } else { 4097 seriesIDParam = GLOBAL.CURRENT_SERIESE_ID; 4098 drilldownFlagParam = 0; 4099 } 4100 4101 if (categoryCookie) { 4102 categoryCookie = JSON.parse(categoryCookie); 4103 4104 categoryCookie.forEach(function (cookies) { 4105 selectCategoryParam += cookies + ','; 4106 }); 4107 selectCategoryParam = selectCategoryParam.slice(0, -1); 4108 } 4109 4110 if (!K_S.getElem.filterCategories) { 4111 selectCategoryParam = ''; 4112 } 4113 4114 if (K_S.getElem.mainContForm) { 4115 inputValue = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput').value; 4116 inputValue = inputValue.replace(/\+/g, ' '); 4117 inputValue = encodeURIComponent(inputValue.trim()); 4118 } else { 4119 inputValue = ''; 4120 } 4121 4122 loadPath = K_S.API_PATH.DATA_SHEET 4123 + 'q=' 4124 + inputValue 4125 + '&l=' 4126 + limit 4127 + '&webseries_id=' 4128 + seriesIDParam 4129 + '&group_id=' 4130 + groupIDParam 4131 + '&type_id=' 4132 + typeIDParam 4133 + '&discontinued_flag=' 4134 + discontinuedParam 4135 + '&drilldown_flag=' 4136 + drilldownFlagParam 4137 + '&product_type_id=' 4138 + selectCategoryParam; 4139 4140 return loadPath; 4141 }; 4142 4143 K_S.fn.setDataSheetsDisplay = function (nodeClone, JSONItems) { 4144 var title = nodeClone.querySelector('.js-setDataSheetsDisplay-title'); 4145 var link = nodeClone.querySelector('.js-setDataSheetsDisplay-link'); 4146 var commonName = nodeClone.querySelector('.js-setDataSheetsDisplay-commonName'); 4147 var dlBtn = nodeClone.querySelector('.js-setDataSheetsDisplay-download'); 4148 var addBtn = nodeClone.querySelector('.js-setDataSheetsDisplay-addButton'); 4149 var thumbnail = nodeClone.querySelector('.js-setDataSheetsDisplay-thumbnail'); 4150 var thumbnailSize = thumbnail ? thumbnail.getAttribute('data-img-size') : null; 4151 var thumbnailSizeStr = '_M'; 4152 var downloadListContent = doc.getElementById('js-downloadListPanel-cartList'); 4153 4154 if (title && JSONItems.webproduct_name) { 4155 title.textContent = JSONItems.webproduct_name; 4156 } 4157 4158 if (link && JSONItems.datasheeturl) { 4159 link.href = JSONItems.datasheeturl; 4160 } 4161 4162 if (commonName) { 4163 if (JSONItems.webproductcommon_name) { 4164 commonName.textContent = JSONItems.webproductcommon_name; 4165 } else { 4166 commonName.remove(); 4167 } 4168 } 4169 4170 if (dlBtn && JSONItems.datasheeturl) { 4171 dlBtn.href = JSONItems.datasheeturl; 4172 } 4173 4174 if (addBtn && JSONItems.webproduct_id) { 4175 addBtn.id = JSONItems.webproduct_id.replace('PM', 'DS'); 4176 4177 if (downloadListContent) { 4178 downloadListContent.querySelectorAll('.js-downloadListPanel-deleteButton').forEach(function (items) { 4179 if (addBtn.id === items.id.split('delete-')[1]) { 4180 addBtn.classList.add('Disabled'); 4181 addBtn.disabled = true; 4182 } 4183 }); 4184 } 4185 } 4186 4187 if (thumbnail && JSONItems.product_thumbnail_id) { 4188 if (thumbnailSize && /^[SML]$/.test(thumbnailSize)) { 4189 if (thumbnailSize !== 'M') { 4190 thumbnailSizeStr = '_' + thumbnailSize; 4191 } 4192 } 4193 4194 thumbnail.src = `${GLOBAL.ORIGINAL_DOMAIN}/img/products/model/${JSONItems.product_thumbnail_id}${thumbnailSizeStr}.jpg` 4195 } 4196 }; 4197
4198 K_S.fn.setLoadSeries = function (addOffsetParam, drilldownNotUpdateFlag, callback) { 4199 var dict = util.makeQueryIntoDict(); 4200 var displayMaxNum; 4201 var fragment; 4202 var nodeClone; 4203 var list; 4204 var loadPath; 4205 4206 if (!K_S.getElem.searchSeriesList || !K_S.getElem.searchSeriesListTemplate) { 4207 return; 4208 } 4209 4210 displayMaxNum = K_S.getElem.searchSeriesList.getAttribute('data-limit'); 4211 fragment = doc.createDocumentFragment(); 4212 loadPath = K_S.fn.getSeriesLoadPath(); 4213 4214 if (typeof dict.o === 'undefined') { 4215 dict.o = 0; 4216 } 4217 4218 if (typeof dict.s === 'undefined') { 4219 dict.s = ''; 4220 } 4221 4222 if (!addOffsetParam) { 4223 addOffsetParam = '&o=' + `&o=${dict.o}&s=${dict.s}`; 4224 } 4225 4226 console.log('Series API: ' + loadPath + addOffsetParam); 4227 4228 util.getJSON(loadPath + addOffsetParam).then(function (response) { 4229 var productsArr = response.result.products; 4230 var resultTotal = response.result.attribute.total; 4231 var resultOffset = response.result.attribute.offset; 4232 var updateListStr = '#' + K_S.getElem.searchSeriesList.id + '>li'; 4233 var seriesResultNum = doc.querySelectorAll('.JSSeriesResultNum'); 4234 var outputSelectorGroup; 4235 4236 if (resultOffset === 0) { 4237 K_S.getElem.searchSeriesList.querySelectorAll(updateListStr).forEach(function (items) { 4238 items.remove(); 4239 }); 4240 } 4241 4242 if (!resultTotal) { 4243 K_S.getElem.searchSeriesList.classList.add(K_S.CONFIG.NORESULT_ATTR); 4244 } else { 4245 K_S.getElem.searchSeriesList.classList.remove(K_S.CONFIG.NORESULT_ATTR); 4246 } 4247 4248 outputSelectorGroup = K_S.getElem.searchSeriesList.closest('.SearchDownloadListGroup'); 4249 if (outputSelectorGroup) { 4250 if (resultTotal > 0) { 4251 outputSelectorGroup.hidden = false; 4252 } else { 4253 outputSelectorGroup.hidden = true; 4254 } 4255 } 4256 4257 seriesResultNum.forEach(function (items) { 4258 items.textContent = resultTotal; 4259 }); 4260 4261 productsArr.forEach(function (items, index) { 4262 if (displayMaxNum && index > (displayMaxNum - 1)) { 4263 return; 4264 } 4265 4266 nodeClone = util.createNodeClone(K_S.getElem.searchSeriesListTemplate, 'li'); 4267 K_S.fn.setSeriesDisplay(nodeClone, items); 4268 4269 fragment.appendChild(nodeClone); 4270 }); 4271 4272 K_S.getElem.searchSeriesList.appendChild(fragment); 4273 list = K_S.getElem.searchSeriesList.querySelectorAll(updateListStr); 4274 K_S.fn.setMoreBtnDisplay(resultOffset, resultTotal); 4275 K_S.fn.setResultDisplay(list); 4276 4277 if (!drilldownNotUpdateFlag) { 4278 K_S.fn.setDrillDown.run(response); 4279 } 4280 }).then(function () { 4281 if (callback) { 4282 callback(); 4283 } 4284 }).catch(function (error) { 4285 console.log(error); 4286 }); 4287 }; 4288 4289 K_S.fn.getSeriesLoadPath = function () { 4290 var discontinuedCookie = util.getCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME); 4291 var dict = util.makeQueryIntoDict(); 4292 var groupIDParam = ''; 4293 var typeIDParam = ''; 4294 var loadPath; 4295 var discontinuedParam; 4296 var inputValue; 4297 var drilldownFlagParam; 4298 4299 if (typeof discontinuedCookie !== 'undefined') { 4300 if (discontinuedCookie === '1') { 4301 discontinuedParam = 1; 4302 } else { 4303 discontinuedParam = 0; 4304 } 4305 } else { 4306 discontinuedParam = 0; 4307 } 4308 4309 if (K_S.getElem.drillDownNav) { 4310 if (dict.group_id) { 4311 groupIDParam = decodeURIComponent(dict.group_id); 4312 } else { 4313 groupIDParam = K_S.getElem.searchSeriesList.getAttribute('data-group-id'); 4314 }
4315 if (dict.type_id) { 4316 typeIDParam = decodeURIComponent(dict.type_id); 4317 } else { 4318 typeIDParam = K_S.getElem.searchSeriesList.getAttribute('data-type-id'); 4319 } 4320 drilldownFlagParam = 1; 4321 } else { 4322 drilldownFlagParam = 0; 4323 } 4324 4325 if (K_S.getElem.mainContForm) { 4326 inputValue = K_S.getElem.mainContForm.querySelector('.JSSearchSuggestInput').value; 4327 inputValue = inputValue.replace(/\+/g, ' '); 4328 inputValue = encodeURIComponent(inputValue.trim()); 4329 } else { 4330 inputValue = ''; 4331 } 4332 4333 loadPath = K_S.API_PATH.PRODUCT 4334 + 'q=' 4335 + inputValue 4336 + '&l=' 4337 + K_S.CONFIG.ONE_TIME_DATA_LOAD_MAX_NUM 4338 + '&group_id=' 4339 + groupIDParam 4340 + '&type_id=' 4341 + typeIDParam 4342 + '&discontinued_flag=' 4343 + discontinuedParam 4344 + '&drilldown_flag=' 4345 + drilldownFlagParam; 4346 4347 return loadPath; 4348 }; 4349 4350 K_S.fn.setSeriesDisplay = function (nodeClone, JSONItems) { 4351 var siteLang = GLOBAL.SITE_LANG ? GLOBAL.SITE_LANG[0] : ''; 4352 var series = nodeClone.querySelector('.Series'); 4353 var commonName = nodeClone.querySelector('.CommonName'); 4354 var name = nodeClone.querySelector('.Name'); 4355 var description = nodeClone.querySelector('.Description'); 4356 var dlBtn = nodeClone.querySelector('.DownloadBtn'); 4357 var priceBtn = nodeClone.querySelector('.PriceBtn'); 4358 var thumbnail = nodeClone.querySelector('.Thumbnail img'); 4359 var thumbnailLink = nodeClone.querySelector('.ThumbnailLink'); 4360 var spec = nodeClone.querySelector('.Spec'); 4361 var model = nodeClone.querySelector('.Model'); 4362 var support = nodeClone.querySelector('.Support'); 4363 var seriesDlLink; 4364 var dlAssetId = ''; 4365 var targetDescription; 4366 4367 if (series) { 4368 series.href = JSONItems.url; 4369 } 4370 4371 if (commonName) { 4372 commonName.textContent = JSONItems.webseriescommon_name; 4373 } 4374 4375 if (name) { 4376 name.textContent = JSONItems.display_name; 4377 } 4378 4379 if (description) { 4380 if (JSONItems.description) { 4381 targetDescription = JSONItems.description.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gm, ''); 4382 description.textContent = util.getOmittedText(targetDescription, description); 4383 } else { 4384 description.remove(); 4385 } 4386 } 4387 4388 if (dlBtn) { 4389 if (JSONItems.catalog_id) { 4390 JSONItems.catalog_id.split(',').forEach(function (assetId) { 4391 dlAssetId += 'dlAssetId=' + assetId + '&'; 4392 }); 4393 dlBtn.href = GLOBAL.ORIGINAL_DOMAIN 4394 + '/download/download/confirmation/?' 4395 + dlAssetId.slice(0, -1); 4396 } else { 4397 if (/(\/|\/index\.jsp)$/.test(JSONItems.url)) { 4398 seriesDlLink = JSONItems.url.replace(/(\/|\/index\.jsp)$/, '/downloads/'); 4399 dlBtn.href = seriesDlLink; 4400 } 4401 } 4402 } 4403 4404 if (priceBtn) { 4405 priceBtn.href = `${JSONItems.url}get-pricing/`; 4406 } 4407 4408 if (thumbnail) { 4409 thumbnail.src = GLOBAL.ORIGINAL_DOMAIN 4410 + '/img/products/series/' 4411 + JSONItems.product_thumbnail_id 4412 + '_M.jpg'; 4413 4414 if (thumbnailLink) { 4415 thumbnailLink.href = JSONItems.url; 4416 } 4417 } 4418 4419 if (spec) { 4420 if (JSONItems.spec_url) { 4421 spec.href = JSONItems.spec_url; 4422 } else { 4423 spec.parentNode.remove(); 4424 } 4425 } 4426 4427 if (model) { 4428 if (JSONItems.model_url) { 4429 model.href = JSONItems.model_url; 4430 } else { 4431 model.parentNode.remove(); 4432 } 4433 } 4434 4435 if (support) { 4436 if (JSONItems.supportpageurl) { 4437 support.href = JSONItems.supportpageurl; 4438 } else { 4439 support.parentNode.remove(); 4440 } 4441 } 4442 }; 4443 4444 K_S.fn.setDrillDown.run = function (response) { 4445 var dict = util.makeQueryIntoDict(); 4446 var setDrillDown = this; 4447 var loadMoreTarget; 4448 var searchLinkList; 4449 4450 if (!K_S.getElem.drillDownNav) { 4451 return; 4452 } 4453 4454 if (K_S.getElem.drillDownNav.querySelector('.Group')) { 4455 K_S.getElem.drillDownNav.querySelector('.Group').remove(); 4456 } 4457
4458 loadMoreTarget = doc.querySelector('.JSLoadMoreTarget'); 4459 searchLinkList = K_S.getElem.drillDownNav.querySelector('.SearchLinkList01'); 4460 4461 if (!loadMoreTarget || !searchLinkList) { 4462 return; 4463 } 4464 4465 setDrillDown.display(response, loadMoreTarget); 4466 4467 setDrillDown.toggle('.Switch'); 4468 setDrillDown.filter(loadMoreTarget, searchLinkList); 4469 if (dict.q) { 4470 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4471 } 4472 }; 4473 4474 K_S.fn.setDrillDown.display = function (response, loadMoreTarget) { 4475 var dict = util.makeQueryIntoDict(); 4476 var drilldownArr = response.result.drilldown; 4477 var fragment = doc.createDocumentFragment(); 4478 var groupUL = doc.createElement('ul'); 4479 var dataGroupID = loadMoreTarget.getAttribute('data-group-id'); 4480 var dataTypeID = loadMoreTarget.getAttribute('data-type-id'); 4481 var dataSeriesID = loadMoreTarget.getAttribute('data-series-id'); 4482 var searchLinkList = K_S.getElem.drillDownNav.querySelector('.SearchLinkList01'); 4483 var parentsClass = 'Parents'; 4484 var typeUL; 4485 var seriesUL; 4486 var groupNodeClone; 4487 var typeNodeClone; 4488 var seriesNodeClone; 4489 var groupList; 4490 var groupNav; 4491 var groupNavInner; 4492 var groupCount; 4493 var typeList; 4494 var typeNav; 4495 var typeNavInner; 4496 var typeCount; 4497 var seriesList; 4498 var seriesNav; 4499 var seriesNavInner; 4500 var seriesCount; 4501 4502 groupUL.classList.add(K_S.getAttr.groupHierarchy); 4503 if (!drilldownArr.length) { 4504 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4505 4506 if (K_S.getElem.drillDownSPButtonList) { 4507 K_S.getElem.drillDownSPButtonList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4508 } 4509 } 4510 drilldownArr.forEach(function (group) { 4511 groupNodeClone = util.createNodeClone(K_S.getElem.groupListTemplate, 'li'); 4512 if (util.checkSupportsTemp() === true) { 4513 groupList = groupNodeClone.querySelector('.GroupList'); 4514 } else { 4515 groupList = groupNodeClone; 4516 } 4517 groupNav = groupList.querySelector('.Name'); 4518 groupNavInner = groupList.querySelector('.NameInner'); 4519 groupCount = groupList.querySelector('.Count'); 4520 4521 if (groupNav) { 4522 groupNavInner.textContent = group.name; 4523 groupNav.setAttribute('data-group-id', group.id); 4524 4525 if (dataGroupID === group.id || decodeURIComponent(dict.group_id) === group.id) { 4526 groupList.classList.add(K_S.CONFIG.OPEN_ATTR); 4527 groupNavInner.classList.add(K_S.CONFIG.ACTIVE_ATTR); 4528 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4529 if (K_S.getElem.categorySPLabel) { 4530 K_S.getElem.categorySPLabel.textContent = groupNav.textContent.split('(')[0]; 4531 } 4532 if (K_S.getElem.drillDownSPButtonList) { 4533 K_S.getElem.drillDownSPButtonList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4534 } 4535 } 4536 } 4537 if (groupCount) { 4538 groupCount.textContent = ' (' + group.count + ')'; 4539 } 4540 4541 4542 typeUL = doc.createElement('ul'); 4543 typeUL.classList.add(K_S.getAttr.typeHierarchy); 4544 4545 group.children.forEach(function (type) { 4546 typeNodeClone = util.createNodeClone(K_S.getElem.typeListTemplate, 'li'); 4547 if (util.checkSupportsTemp() === true) { 4548 typeList = typeNodeClone.querySelector('.TypeList'); 4549 } else { 4550 typeList = typeNodeClone; 4551 } 4552 4553 if (!K_S.getElem.seriesListTemplate) { 4554 typeList.classList.add(K_S.CONFIG.OPEN_ATTR); 4555 typeList.querySelector('.Switch').disabled = true; 4556 } 4557 typeNav = typeList.querySelector('.Name'); 4558 typeNavInner = typeList.querySelector('.NameInner'); 4559 typeCount = typeList.querySelector('.Count'); 4560 4561 if (typeNav) {
4562 typeNavInner.textContent = type.name; 4563 typeNav.setAttribute('data-type-id', type.id); 4564 4565 if (dataTypeID === type.id || decodeURIComponent(dict.type_id) === type.id) { 4566 groupList.classList.add(K_S.CONFIG.OPEN_ATTR); 4567 typeList.classList.add(K_S.CONFIG.OPEN_ATTR); 4568 groupList.classList.add(parentsClass); 4569 typeNavInner.classList.add(K_S.CONFIG.ACTIVE_ATTR); 4570 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4571 4572 if (K_S.getElem.categorySPLabel) { 4573 K_S.getElem.categorySPLabel.textContent = typeNav.textContent.split('(')[0]; 4574 } 4575 } 4576 } 4577 4578 if (typeCount) { 4579 typeCount.textContent = ' (' + type.count + ')'; 4580 } 4581 4582 groupList.appendChild(typeUL).appendChild(typeNodeClone); 4583 seriesUL = doc.createElement('ul'); 4584 seriesUL.classList.add(K_S.getAttr.seriesHierarchy); 4585 4586 if (type.children) { 4587 type.children.forEach(function (series) { 4588 if (K_S.getElem.seriesListTemplate) { 4589 seriesNodeClone = util.createNodeClone(K_S.getElem.seriesListTemplate, 'li'); 4590 if (util.checkSupportsTemp() === true) { 4591 seriesList = seriesNodeClone.querySelector('.SeriesList'); 4592 } else { 4593 seriesList = seriesNodeClone; 4594 } 4595 seriesNav = seriesList.querySelector('.Name'); 4596 seriesNavInner = seriesList.querySelector('.NameInner'); 4597 seriesCount = seriesList.querySelector('.Count'); 4598 4599 if (seriesNav) { 4600 seriesNavInner.textContent = series.name; 4601 seriesNav.setAttribute('data-series-id', series.id); 4602 4603 if (dataSeriesID === series.id || decodeURIComponent(dict.webseries_id) === series.id) { 4604 groupList.classList.add(K_S.CONFIG.OPEN_ATTR); 4605 typeList.classList.add(K_S.CONFIG.OPEN_ATTR); 4606 groupList.classList.add(parentsClass); 4607 typeList.classList.add(parentsClass); 4608 seriesNavInner.classList.add(K_S.CONFIG.ACTIVE_ATTR); 4609 seriesNav.classList.add(K_S.CONFIG.OPEN_ATTR); 4610 searchLinkList.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4611 4612 if (K_S.getElem.categorySPLabel) { 4613 K_S.getElem.categorySPLabel.textContent = seriesNav.textContent.split('(')[0]; 4614 } 4615 } 4616 } 4617 4618 if (seriesCount) { 4619 seriesCount.textContent = ' (' + series.count + ')'; 4620 } 4621 4622 typeList.appendChild(seriesUL).appendChild(seriesNodeClone); 4623 } 4624 }); 4625 } 4626 }); 4627 4628 fragment.appendChild(groupNodeClone); 4629 }); 4630 4631 K_S.getElem.drillDownNav.insertBefore(groupUL, K_S.getElem.drillDownNav.querySelector('template')).appendChild(fragment); 4632 }; 4633 4634 K_S.fn.setDrillDown.toggle = function (selector) { 4635 if (!K_S.getElem.drillDownNav) { 4636 return; 4637 } 4638 K_S.getElem.drillDownNav.querySelectorAll(selector).forEach(function (items) { 4639 var setWhenClick = function (e) { 4640 var self = this; 4641 var parent = self.parentNode.classList; 4642 4643 e.preventDefault(); 4644 if (!K_S.getElem.seriesListTemplate) { 4645 if (parent.contains('TypeList')) { 4646 return; 4647 } 4648 } 4649 if (parent.contains(K_S.CONFIG.OPEN_ATTR)) { 4650 parent.remove(K_S.CONFIG.OPEN_ATTR); 4651 self.textContent = K_S.getAttr.openText; 4652 } else { 4653 parent.add(K_S.CONFIG.OPEN_ATTR); 4654 self.textContent = K_S.getAttr.closeText; 4655 } 4656 }; 4657 4658 if (!items.disabled) { 4659 items.textContent = K_S.getAttr.openText; 4660 } 4661 4662 items.addEventListener('click', setWhenClick, false); 4663 }); 4664 }; 4665 4666 K_S.fn.setDrillDown.filter = function (loadMoreTarget, filterClearElem) { 4667 if (!K_S.getElem.drillDownNav) { 4668 return; 4669 } 4670 K_S.getElem.drillDownNav.querySelectorAll('.Name').forEach(function (items) { 4671 var dict = util.makeQueryIntoDict(); 4672 var setWhenClick = function (e) { 4673 var self = this; 4674 var closestList = self.closest('li').classList; 4675 var closestGroupId = self.closest('.GroupList').querySelector('[data-group-id]').getAttribute('data-group-id'); 4676 var closestTypeId; 4677 var promise = Promise.resolve(); 4678 4679 e.preventDefault(); 4680 promise.then(function () { 4681 dict.o = 0; 4682 dict.s = 1; 4683 if (closestList.contains('GroupList')) {
4684 loadMoreTarget.setAttribute('data-group-id', self.getAttribute('data-group-id')); 4685 loadMoreTarget.setAttribute('data-type-id', ''); 4686 loadMoreTarget.setAttribute('data-series-id', ''); 4687 dict.group_id = encodeURIComponent(self.getAttribute('data-group-id')); 4688 dict.type_id = ''; 4689 dict.webseries_id = ''; 4690 if (K_S.getElem.categorySPLabel) { 4691 K_S.getElem.categorySPLabel.textContent = self.textContent.split('(')[0]; 4692 } 4693 } 4694 if (closestList.contains('TypeList')) { 4695 loadMoreTarget.setAttribute('data-group-id', closestGroupId); 4696 loadMoreTarget.setAttribute('data-type-id', self.getAttribute('data-type-id')); 4697 loadMoreTarget.setAttribute('data-series-id', ''); 4698 dict.group_id = encodeURIComponent(closestGroupId); 4699 dict.type_id = encodeURIComponent(self.getAttribute('data-type-id')); 4700 dict.webseries_id = ''; 4701 if (K_S.getElem.categorySPLabel) { 4702 K_S.getElem.categorySPLabel.textContent = self.textContent.split('(')[0]; 4703 } 4704 } 4705 if (closestList.contains('SeriesList')) { 4706 closestTypeId = self.closest('.TypeList').querySelector('[data-type-id]').getAttribute('data-type-id'); 4707 loadMoreTarget.setAttribute('data-group-id', closestGroupId); 4708 loadMoreTarget.setAttribute('data-type-id', closestTypeId); 4709 loadMoreTarget.setAttribute('data-series-id', self.getAttribute('data-series-id')); 4710 dict.group_id = encodeURIComponent(closestGroupId); 4711 dict.type_id = encodeURIComponent(closestTypeId); 4712 dict.webseries_id = encodeURIComponent(self.getAttribute('data-series-id')); 4713 if (K_S.getElem.categorySPLabel) { 4714 K_S.getElem.categorySPLabel.textContent = self.textContent.split('(')[0]; 4715 } 4716 } 4717 util.updateBrowserHistory(dict); 4718 filterClearElem.classList.add(K_S.CONFIG.HIDDEN_ATTR); 4719 }).then(function () { 4720 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&s=1&o=0'); 4721 K_S.fn.setLoadDataSheets('&s=1&o=0'); 4722 K_S.fn.setLoadSeries('&s=1&o=0'); 4723 setTimeout(function () { 4724 filterClearElem.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4725 }, 300); 4726 }); 4727 }; 4728 4729 items.addEventListener('click', setWhenClick, false); 4730 }); 4731 }; 4732 4733 K_S.fn.setDrillDown.selectTarget = function () { 4734 var setWhenClick; 4735 4736 if (!K_S.getElem.drillDownSPSelect) { 4737 return; 4738 } 4739 4740 setWhenClick = function (e) { 4741 var modalWrapper = doc.getElementById('SearchModal'); 4742 var focusTarget = modalWrapper && modalWrapper.childNodes[1] ? 4743 doc.querySelector('[data-modal-target="' + modalWrapper.childNodes[1].id + '"]') : null; 4744 4745 e.preventDefault(); 4746 4747 if (focusTarget) { 4748 focusTarget.classList.add(K_S.CONFIG.ACTIVE_ATTR); 4749 focusTarget.addEventListener('animationend', function () { 4750 this.classList.remove(K_S.CONFIG.ACTIVE_ATTR); 4751 }, false); 4752 } 4753 4754 K_S.fn.closeSearchModal(); 4755 setTimeout(function () { 4756 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 4757 K_S.fn.setLoadDataSheets('&o=0'); 4758 K_S.fn.setLoadSeries('&o=0'); 4759 }, 200); 4760 }; 4761 4762 K_S.getElem.drillDownSPSelect.addEventListener('click', setWhenClick, false); 4763 }; 4764 4765 K_S.fn.setDrillDown.filterClear = function () { 4766 var loadMoreTarget = doc.querySelector('.JSLoadMoreTarget'); 4767 var dict = util.makeQueryIntoDict(); 4768 var searchLinkList; 4769 var setWhenClick; 4770 4771 if (!loadMoreTarget || !K_S.getElem.drillDownNav) { 4772 return; 4773 } 4774 4775 searchLinkList = K_S.getElem.drillDownNav.querySelector('.SearchLinkList01'); 4776 setWhenClick = function (e) { 4777 var promise = Promise.resolve(); 4778 4779 e.preventDefault(); 4780 promise.then(function () {
4781 loadMoreTarget.setAttribute('data-group-id', ''); 4782 loadMoreTarget.setAttribute('data-type-id', ''); 4783 loadMoreTarget.setAttribute('data-series-id', ''); 4784 dict.group_id = ''; 4785 dict.type_id = ''; 4786 dict.webseries_id = ''; 4787 dict.q = ''; 4788 dict.o = 0; 4789 dict.s = ''; 4790 util.updateBrowserHistory(dict); 4791 doc.querySelectorAll('.JSSearchSuggestInput').forEach(function (items) { 4792 items.value = ''; 4793 }); 4794 if (K_S.getElem.categorySPLabel && K_S.getElem.categoryPCLabel) { 4795 K_S.getElem.categorySPLabel.textContent = K_S.getElem.categoryPCLabel.textContent; 4796 } 4797 }).then(function () { 4798 if (doc.body.getAttribute('data-search-modal')) { 4799 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 4800 K_S.fn.setLoadDataSheets('&o=0'); 4801 K_S.fn.setLoadSeries('&o=0'); 4802 if (K_S.getElem.drillDownSPButtonList) { 4803 K_S.getElem.drillDownSPButtonList.classList.add(K_S.CONFIG.HIDDEN_ATTR); 4804 } 4805 } else { 4806 K_S.fn.setLoadAssets(K_S.getElem.searchDL, '&o=0'); 4807 K_S.fn.setLoadDataSheets('&o=0'); 4808 K_S.fn.setLoadSeries('&o=0'); 4809 } 4810 searchLinkList.classList.add(K_S.CONFIG.HIDDEN_ATTR); 4811 }); 4812 }; 4813 4814 searchLinkList.querySelector('.JSFilterClear').addEventListener('click', setWhenClick, false); 4815 4816 if (K_S.getElem.drillDownSPReset) { 4817 K_S.getElem.drillDownSPReset.addEventListener('click', setWhenClick, false); 4818 } 4819 }; 4820 4821 K_S.fn.setLoadMore = function () { 4822 var setWhenClick; 4823 4824 if (!K_S.getElem.loadMoreBtn || !K_S.getElem.loadMoreBtnWrap) { 4825 return; 4826 } 4827 4828 setWhenClick = function (e) { 4829 var self = this; 4830 var setLoading; 4831 var setLoadStart; 4832 var addOffsetParam = '&o=' + self.getAttribute('data-offset'); 4833 var drilldownNotUpdateFlag = true; 4834 var dict = util.makeQueryIntoDict(); 4835 4836 e.preventDefault(); 4837 dict.o = self.getAttribute('data-offset'); 4838 4839 if (dict.s) { 4840 addOffsetParam = `${addOffsetParam}&s=${dict.s}`; 4841 } 4842 4843 setLoadStart = function () { 4844 self.classList.remove(K_S.CONFIG.LOAD_ATTR); 4845 if (K_S.getElem.loadMoreBtnLabel) { 4846 K_S.getElem.loadMoreBtnLabel.textContent = K_S.getAttr.loadStartText; 4847 } else { 4848 self.textContent = K_S.getAttr.loadStartText; 4849 } 4850 }; 4851 4852 setLoading = function () { 4853 self.classList.add(K_S.CONFIG.LOAD_ATTR); 4854 if (K_S.getElem.loadMoreBtnLabel) { 4855 K_S.getElem.loadMoreBtnLabel.textContent = K_S.getAttr.loadingText; 4856 } else { 4857 self.textContent = K_S.getAttr.loadingText; 4858 } 4859 }; 4860 4861 util.updateBrowserHistory(dict); 4862 4863 if (self.classList.contains(K_S.CONFIG.LOAD_ATTR) === false) { 4864 setLoading(); 4865 K_S.fn.setLoadAssets(K_S.getElem.searchDL, addOffsetParam, drilldownNotUpdateFlag, function () { 4866 setLoadStart(); 4867 }); 4868 K_S.fn.setLoadDataSheets(addOffsetParam, drilldownNotUpdateFlag, function () { 4869 setLoadStart(); 4870 }); 4871 K_S.fn.setLoadSeries(addOffsetParam, drilldownNotUpdateFlag, function () { 4872 setLoadStart(); 4873 }); 4874 K_S.fn.setLoadPages(addOffsetParam, function () { 4875 setLoadStart(); 4876 }); 4877 } 4878 }; 4879 4880 K_S.getElem.loadMoreBtn.addEventListener('click', setWhenClick, false); 4881 }; 4882 4883 K_S.fn.setMoreBtnDisplay = function (resultOffset, resultTotal) { 4884 if (K_S.getElem.loadMoreBtn) { 4885 if (K_S.getElem.loadMoreBtnLabel) { 4886 K_S.getElem.loadMoreBtnLabel.textContent = K_S.getAttr.loadStartText; 4887 } else { 4888 K_S.getElem.loadMoreBtn.textContent = K_S.getAttr.loadStartText; 4889 } 4890 4891 if (resultOffset === 0) { 4892 K_S.getElem.loadMoreBtn.setAttribute('data-offset', '0'); 4893 } 4894 if (resultTotal - resultOffset > K_S.CONFIG.ONE_TIME_DISPLAY_MAX_NUM) { 4895 if (K_S.getElem.loadMoreBtnLabel) { 4896 K_S.getElem.loadMoreBtnWrap.hidden = false; 4897 } else { 4898 K_S.getElem.loadMoreBtnWrap.classList.remove(K_S.CONFIG.HIDDEN_ATTR); 4899 } 4900 K_S.getElem.loadMoreBtn.setAttribute('data-offset', resultOffset + K_S.CONFIG.ONE_TIME_DISPLAY_MAX_NUM); 4901 } else { 4902 if (K_S.getElem.loadMoreBtnLabel) { 4903 K_S.getElem.loadMoreBtnWrap.hidden = true; 4904 } else { 4905 K_S.getElem.loadMoreBtnWrap.classList.add(K_S.CONFIG.HIDDEN_ATTR); 4906 } 4907 } 4908 } 4909 }; 4910 4911 K_S.fn.setDiscontinuedCookie = function () { 4912 var setWhenChange; 4913 var discontinuedCookie; 4914 var customCheckbox; 4915 var setCheckOn; 4916 var setCheckOff; 4917 4918 if (!K_S.getElem.productsSuggestFilter) { 4919 return; 4920 } 4921 4922 discontinuedCookie = util.getCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME); 4923 customCheckbox = K_S.getElem.productsSuggestFilter.closest('label').querySelector('span.CustomCheckbox'); 4924 4925 setCheckOn = function () { 4926 var promise = Promise.resolve(); 4927 4928 promise.then(function () { 4929 K_S.getElem.productsSuggestFilter.classList.add(K_S.CONFIG.CHECKED_ATTR); 4930 K_S.getElem.productsSuggestFilter.checked = true; 4931 }).then(function () { 4932 if (customCheckbox) { 4933 customCheckbox.classList.add('checked'); 4934 } 4935 }); 4936 }; 4937 4938 setCheckOff = function () { 4939 var promise = Promise.resolve(); 4940 4941 promise.then(function () { 4942 K_S.getElem.productsSuggestFilter.classList.remove(K_S.CONFIG.CHECKED_ATTR); 4943 K_S.getElem.productsSuggestFilter.checked = false; 4944 }).then(function () { 4945 if (customCheckbox) { 4946 customCheckbox.classList.remove('checked'); 4947 } 4948 }); 4949 }; 4950 4951 setWhenChange = function () { 4952 if (K_S.getElem.productsSuggestFilter.classList.contains(K_S.CONFIG.CHECKED_ATTR)) { 4953 setCheckOff(); 4954 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 0); 4955 } else { 4956 setCheckOn(); 4957 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 1); 4958 } 4959 }; 4960 4961 if (typeof discontinuedCookie !== 'undefined') { 4962 if (discontinuedCookie === '1') { 4963 setCheckOn(); 4964 } else { 4965 setCheckOff(); 4966 } 4967 } else { 4968 if (K_S.getElem.productsSuggestFilter.checked) { 4969 setCheckOn(); 4970 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 1); 4971 } else { 4972 setCheckOff(); 4973 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 0); 4974 } 4975 } 4976 4977 K_S.getElem.productsSuggestFilter.addEventListener('change', setWhenChange, false); 4978 }; 4979 4980 K_S.fn.setToggleDiscontinued = function () { 4981 var promise = Promise.resolve(); 4982 var checkbox; 4983 var button; 4984 var cookie; 4985 var setWhenChange; 4986 var setWhenClick; 4987 4988 if (!K_S.getElem.discontinuedToggle) { 4989 return; 4990 } 4991 4992 checkbox = K_S.getElem.discontinuedToggle.querySelector('[type="checkbox"]'); 4993 button = K_S.getElem.discontinuedToggle.querySelector('button'); 4994 cookie = util.getCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME); 4995 4996 if (!cookie) { 4997 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 0); 4998 } 4999 5000 if (cookie) { 5001 if (cookie === '1') { 5002 if (checkbox) { 5003 checkbox.checked = true; 5004 } 5005 if (button) { 5006 button.setAttribute('aria-checked', true); 5007 } 5008 } else { 5009 if (checkbox) { 5010 checkbox.checked = false; 5011 } 5012 if (button) { 5013 button.setAttribute('aria-checked', false); 5014 } 5015 } 5016 } 5017 5018 setWhenChange = function () { 5019 var self = this; 5020 5021 promise.then(function () { 5022 if (self.checked) { 5023 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 1); 5024 } else { 5025 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 0); 5026 } 5027 }).then(function () { 5028 setTimeout(function () {
5029 K_S.fn.setLoadSeries('&o=0'); 5030 }, 200); 5031 }); 5032 }; 5033 5034 setWhenClick = function () { 5035 var self = this; 5036 var dict = util.makeQueryIntoDict(); 5037 5038 promise.then(function () { 5039 if (self.getAttribute('aria-checked') === 'true') { 5040 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 1); 5041 } else { 5042 util.setCookie(K_S.CONFIG.DISCONTINUED_COOKIE_NAME, 0); 5043 } 5044 5045 dict.o = 0; 5046 util.updateBrowserHistory(dict); 5047 }).then(function () { 5048 setTimeout(function () { 5049 K_S.fn.setLoadSeries('&o=0'); 5050 }, 200); 5051 }); 5052 }; 5053 5054 if (checkbox) { 5055 checkbox.addEventListener('change', setWhenChange, false); 5056 } 5057 5058 if (button) { 5059 button.addEventListener('click', setWhenClick, false); 5060 } 5061 }; 5062 5063 K_S.fn.slider = function (outputSelector) { 5064 var $slider; 5065 var $bxSlider; 5066 var setPager; 5067 var $pager; 5068 var runForEachScreen1; 5069 var runForEachScreen2; 5070 var setSlider; 5071 var removeControls; 5072 var removeClones; 5073 var removeStyles; 5074 var rebuildSlider; 5075 var rebuildSliderForOnLoad; 5076 var reloadSlider; 5077 var overlappingPreventClass1 = 'overlappingPrevent1'; 5078 var readyClass = 'IsReady'; 5079 var staticClass = 'IsStatic'; 5080 var bxSliderWrapperClass = 'search-bx-wrapper'; 5081 var bxSliderControlsClass = 'bx-controls'; 5082 var bxSliderCloneClass = 'bx-clone'; 5083 var bxSliderLoadingClass = 'bx-loading'; 5084 var optionForLargeScreen = { 5085 minSlides: 5, 5086 maxSlides: 5, 5087 slideWidth: 186, 5088 slideMargin: 10, 5089 wrapperClass: bxSliderWrapperClass, 5090 }; 5091 var optionForSmallScreen = { 5092 minSlides: 1, 5093 maxSlides: 1, 5094 slideWidth: 727, 5095 slideMargin: 0, 5096 wrapperClass: bxSliderWrapperClass, 5097 }; 5098 5099 if (typeof $ === 'undefined' || typeof $.fn.bxSlider === 'undefined') { 5100 return; 5101 } 5102 5103 setPager = function () { 5104 $pager = $('.bx-default-pager'); 5105 5106 if ($pager.length) { 5107 $pager.off('mouseover'); 5108 $pager.on('click', 'a', function (e) { 5109 var $this = $(this); 5110 var currentIndex; 5111 var targetIndex; 5112 5113 e.preventDefault(); 5114 currentIndex = $slider.getCurrentSlide(); 5115 targetIndex = $this.attr('data-slide-index'); 5116 targetIndex = parseInt(targetIndex, 10); 5117 if (currentIndex !== targetIndex) { 5118 $slider.goToSlide(targetIndex); 5119 } 5120 }); 5121 } 5122 }; 5123 5124 removeControls = function () { 5125 if ($('.' + bxSliderControlsClass).length) { 5126 $('.' + bxSliderControlsClass).remove(); 5127 } 5128 }; 5129 5130 removeClones = function () { 5131 if ($('.' + bxSliderCloneClass).length) { 5132 $('.' + bxSliderCloneClass).remove(); 5133 } 5134 }; 5135 5136 removeStyles = function () { 5137 $slider.removeAttr('style'); 5138 $slider.find('li').removeAttr('style'); 5139 }; 5140 5141 rebuildSlider = function (options) { 5142 var observer; 5143 var target = outputSelector; 5144 var config = { 5145 attributes: true, 5146 attributeFilter: ['style'], 5147 }; 5148 5149 if ($slider.closest('.' + bxSliderWrapperClass).length) { 5150 $slider.removeAttr('style'); 5151 $slider.removeClass(readyClass); 5152 setTimeout(function () { 5153 $slider.unwrap().unwrap(); 5154 $slider.bxSlider(options); 5155 setPager($slider); 5156 }, 200); 5157 5158 observer = new MutationObserver(function () { 5159 observer.disconnect(); 5160 $slider.addClass(readyClass); 5161 }); 5162 observer.observe(target, config); 5163 } else { 5164 $slider.removeClass(readyClass); 5165 setTimeout(function () { 5166 $slider.bxSlider(options); 5167 setPager($slider); 5168 }, 200); 5169 observer = new MutationObserver(function () { 5170 observer.disconnect(); 5171 $slider.addClass(readyClass); 5172 }); 5173 observer.observe(target, config); 5174 } 5175 }; 5176 5177 reloadSlider = function (options) { 5178 $bxSlider.reloadSlider(options); 5179 setPager($slider); 5180 $slider.addClass(readyClass); 5181 }; 5182 5183 rebuildSliderForOnLoad = function (options) { 5184 var observer; 5185 var target = outputSelector; 5186 var config = { 5187 attributes: true, 5188 attributeFilter: ['style'], 5189 }; 5190 5191 if ($slider.parents('.' + bxSliderWrapperClass).length > 1) { 5192 $('.' + bxSliderWrapperClass).css('opacity', 0); 5193 observer = new MutationObserver(function () { 5194 observer.disconnect(); 5195 removeControls(); 5196 $slider.unwrap().unwrap(); 5197 $('.' + bxSliderLoadingClass).remove(); 5198 $(outputSelector).find('.' + bxSliderCloneClass).remove(); 5199 reloadSlider(options); 5200 $slider.addClass(readyClass); 5201 }); 5202 observer.observe(target, config); 5203 } 5204 }; 5205 5206 setSlider = function () { 5207 if (!$slider.hasClass(readyClass)) { 5208 if ($bxSlider) { 5209 return; 5210 } 5211 if (K_S.CONFIG.SMALL_SCREEN_MQ.matches) { 5212 $bxSlider = $slider.bxSlider(optionForSmallScreen); 5213 } else { 5214 $bxSlider = $slider.bxSlider(optionForLargeScreen); 5215 } 5216 setPager($slider); 5217 if (!K_S.CONFIG.SMALL_SCREEN_MQ.matches) { 5218 $slider.addClass(overlappingPreventClass1); 5219 } 5220 } 5221 5222 if (K_S.CONFIG.SMALL_SCREEN_MQ.matches) { 5223 if ($slider.find('>
5223li:not(".' + bxSliderCloneClass + '")').length > 1) { 5224 $slider.removeClass(staticClass); 5225 5226 if ($bxSlider) { 5227 removeControls(); 5228 removeClones(); 5229 reloadSlider(optionForSmallScreen); 5230 rebuildSliderForOnLoad(optionForSmallScreen); 5231 } else { 5232 if ($slider.hasClass(overlappingPreventClass1)) { 5233 return; 5234 } 5235 removeControls(); 5236 removeClones(); 5237 rebuildSlider(optionForSmallScreen); 5238 } 5239 } else { 5240 $slider.addClass(readyClass); 5241 $slider.addClass(staticClass); 5242 if ($bxSlider) { 5243 removeControls(); 5244 removeClones(); 5245 if ($slider.closest('.' + bxSliderWrapperClass).length) { 5246 $slider.unwrap().unwrap(); 5247 } 5248 removeStyles(); 5249 } else { 5250 if ($slider.hasClass(overlappingPreventClass1)) { 5251 return; 5252 } 5253 removeControls(); 5254 removeClones(); 5255 if ($slider.closest('.' + bxSliderWrapperClass).length) { 5256 $slider.unwrap().unwrap(); 5257 } 5258 removeStyles(); 5259 } 5260 } 5261 } else { 5262 if ($slider.find('>li:not(".' + bxSliderCloneClass + '")').length > 5) { 5263 $slider.removeClass(staticClass); 5264 if ($bxSlider) { 5265 removeControls(); 5266 removeClones(); 5267 reloadSlider(optionForLargeScreen); 5268 rebuildSliderForOnLoad(optionForLargeScreen); 5269 } else { 5270 if (!$slider.hasClass(overlappingPreventClass1)) { 5271 return; 5272 } 5273 removeControls(); 5274 removeClones(); 5275 rebuildSlider(optionForLargeScreen); 5276 } 5277 } else { 5278 $slider.addClass(readyClass); 5279 $slider.addClass(staticClass); 5280 if ($bxSlider) { 5281 removeControls(); 5282 removeClones(); 5283 if ($slider.closest('.' + bxSliderWrapperClass).length) { 5284 $slider.unwrap().unwrap(); 5285 } 5286 removeStyles(); 5287 } else { 5288 if (!$slider.hasClass(overlappingPreventClass1)) { 5289 return; 5290 } 5291 removeControls(); 5292 removeClones(); 5293 if ($slider.closest('.' + bxSliderWrapperClass).length) { 5294 $slider.unwrap().unwrap(); 5295 } 5296 removeStyles(); 5297 } 5298 } 5299 } 5300 }; 5301 5302 runForEachScreen1 = function () { 5303 setSlider(); 5304 }; 5305 5306 runForEachScreen2 = function () { 5307 if (K_S.CONFIG.SMALL_SCREEN_MQ.matches) { 5308 $slider.addClass(overlappingPreventClass1); 5309 setTimeout(function () { 5310 $slider.removeClass(overlappingPreventClass1); 5311 }, 100); 5312 } else { 5313 $slider.removeClass(overlappingPreventClass1); 5314 setTimeout(function () { 5315 $slider.addClass(overlappingPreventClass1); 5316 }, 100); 5317 } 5318 }; 5319 5320 $(function () { 5321 $slider = $(outputSelector); 5322 5323 runForEachScreen1(); 5324 K_S.CONFIG.SMALL_SCREEN_MQ.addListener(runForEachScreen1); 5325 win.matchMedia('only screen and (max-width: 768px)').addListener(runForEachScreen2); 5326 }); 5327 }; 5328 5329 K_S.fn.setSearchModal = function () { 5330 var modalTrigger = doc.querySelectorAll('.JSSearchModalTrigger'); 5331 var body = doc.body; 5332 var modalWrapper; 5333 var closeButton; 5334 var closeButtonInner; 5335 var runClickOpen; 5336 var runKeydownOpen; 5337 var openModal; 5338 var runKeydownClose; 5339 var runForEachScreen; 5340 var setModal; 5341 var runClickClose; 5342 5343 if (!modalTrigger.length) { 5344 return; 5345 } 5346 5347 closeButton = doc.createElement('button'); 5348 closeButton.id = 'SearchModalCloseButton'; 5349 closeButtonInner = doc.createElement('span'); 5350 closeButtonInner.textContent = GLOBAL.TRANSLATION.Close; 5351 modalWrapper = doc.createElement('div'); 5352 modalWrapper.id = 'SearchModal'; 5353 modalWrapper.setAttribute('role', 'dialog'); 5354 5355 if (!doc.getElementById('JSSearchModal')) { 5356 modalWrapper.dataset.oldModal = 'true'; 5357 } 5358 5359 body.appendChild(modalWrapper); 5360 modalWrapper.appendChild(closeButton); 5361 closeButton.appendChild(closeButtonInner); 5362 5363 openModal = function (trigger) { 5364 var target; 5365 var targetID; 5366 var signpost; 5367 5368 if (body.getAttribute('data-search-modal')) { 5369 return; 5370 } 5371 5372 signpost = doc.createElement('div'); 5373 signpost.id = 'ModalSignpost'; 5374 targetID = trigger.getAttribute('data-modal-target'); 5375 target = doc.getElementById(targetID); 5376 5377 if (targetID && target) { 5378 body.setAttribute('data-search-modal', true); 5379 target.parentNode.insertBefore(signpost, target); 5380 modalWrapper.appendChild(target); 5381 modalWrapper.classList.add('IsOpen'); 5382 trigger.tabIndex = -1; 5383 setTimeout(function () { 5384 closeButton.focus(); 5385 }, 200); 5386 } 5387 }; 5388 5389 runClickOpen = function (e) { 5390 e.preventDefault(); 5391 5392 openModal(this); 5393 }; 5394 5395 runKeydownOpen = function (e) { 5396 if (e.key === 'Spacebar' || e.key === ' ' || e.key === 'Enter') { 5397 e.preventDefault(); 5398 5399 openModal(this); 5400 } 5401 }; 5402 5403 runClickClose = function (e) { 5404 e.preventDefault(); 5405 5406 K_S.fn.closeSearchModal(); 5407 }; 5408 5409 runKeydownClose = function (e) { 5410 if (e.key === 'Esc' || e.key === 'Escape') { 5411 e.preventDefault(); 5412 K_S.fn.closeSearchModal(); 5413 } 5414 }; 5415 5416 setModal = function () { 5417 modalTrigger.forEach(function (items) { 5418 items.tabIndex = 0; 5419 items.addEventListener('click', runClickOpen, false); 5420 items.addEventListener('keydown', runKeydownOpen, false); 5421 }); 5422 body.addEventListener('keydown', runKeydownClose, false); 5423 closeButton.addEventListener('click', runClickClose, false); 5424 }; 5425 5426 runForEachScreen = function () { 5427 if (K_S.CONFIG.LARGE_SCREEN_MQ.matches) { 5428 setModal(); 5429 } else { 5430 K_S.fn.closeSearchModal(); 5431 modalTrigger.forEach(function (items) { 5432 items.removeAttribute('tabindex'); 5433 items.removeEventListener('click', runClickOpen, false); 5434 items.removeEventListener('keydown', runKeydownOpen, false); 5435 }); 5436 } 5437 }; 5438 5439 runForEachScreen(); 5440 K_S.CONFIG.LARGE_SCREEN_MQ.addListener(runForEachScreen); 5441 }; 5442 5443 K_S.fn.closeSearchModal = function () { 5444 var signpost = doc.getElementById('ModalSignpost'); 5445 var modalWrapper = doc.getElementById('SearchModal'); 5446 var body = doc.body; 5447 var focusTarget; 5448 5449 if (!modalWrapper || !signpost || !body.getAttribute('data-search-modal')) { 5450 return; 5451 } 5452 5453 modalWrapper.classList.remove(K_S.CONFIG.OPEN_ATTR); 5454 body.removeAttribute('data-search-modal'); 5455 if (modalWrapper.childNodes[1]) { 5456 focusTarget = doc.querySelector('[data-modal-target="' + modalWrapper.childNodes[1].id + '"]'); 5457 5458 if (focusTarget) { 5459 focusTarget.tabIndex = 0; 5460 } 5461 5462 signpost.parentNode.insertBefore(modalWrapper.childNodes[1], doc.getElementById('ModalSignpost'));
5463 } 5464 signpost.remove(); 5465 if (K_S.getElem.selectTypes) { 5466 K_S.getElem.selectTypes.classList.remove(K_S.CONFIG.OPEN_ATTR); 5467 } 5468 if (K_S.getElem.selectTypesBox) { 5469 K_S.getElem.selectTypesBox.removeAttribute('style'); 5470 } 5471 setTimeout(function () { 5472 if (focusTarget) { 5473 focusTarget.focus(); 5474 } 5475 }, 200); 5476 }; 5477 5478 K_S.polyfill = { 5479 setChildNodeRemove: function () { 5480 var arr = [Element.prototype, CharacterData.prototype, DocumentType.prototype]; 5481 5482 arr.forEach(function (item) { 5483 item.remove = item.remove || function () { 5484 this.parentNode.removeChild(this); 5485 }; 5486 }); 5487 }, 5488 setNodeListForEach: function () { 5489 if (win.NodeList && !NodeList.prototype.forEach) { 5490 NodeList.prototype.forEach = Array.prototype.forEach; 5491 } 5492 }, 5493 setElemClosest: function () { 5494 if (!Element.prototype.matches) { 5495 Element.prototype.matches = 5496 Element.prototype.msMatchesSelector || 5497 Element.prototype.webkitMatchesSelector; 5498 } 5499 5500 if (!Element.prototype.closest) { 5501 Element.prototype.closest = function (s) { 5502 var el = this; 5503 5504 if (!doc.documentElement.contains(el)) { 5505 return null; 5506 } 5507 do { 5508 if (el.matches(s)) { 5509 return el; 5510 } 5511 el = el.parentElement || el.parentNode; 5512 } while (el !== null && el.nodeType === 1); 5513 5514 return null; 5515 }; 5516 } 5517 }, 5518 setObjectAssign: function () { 5519 var to; 5520 var nextSource; 5521 var index; 5522 var nextKey; 5523 5524 if (typeof Object.assign !== 'function') { 5525 Object.defineProperty(Object, 'assign', { 5526 assign: function assign(target) { 5527 if (target === null || target === undefined) { 5528 throw new TypeError('Cannot convert undefined or null to object'); 5529 } 5530 5531 to = Object(target); 5532 5533 for (index = 1; index < arguments.length; index++) { 5534 nextSource = arguments[index]; 5535 5536 if (nextSource !== null && nextSource !== undefined) { 5537 for (nextKey in nextSource) { 5538 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { 5539 to[nextKey] = nextSource[nextKey]; 5540 } 5541 } 5542 } 5543 } 5544 5545 return to; 5546 }, 5547 writable: true, 5548 configurable: true, 5549 }); 5550 } 5551 }, 5552 }; 5553}(window, window.document, (function (win, doc) { 5554 'use strict'; 5555 5556 var SetUtility = function () { 5557 }; 5558 5559 SetUtility.prototype = { 5560 checkSupportsTemp: function () { 5561 return 'content' in doc.createElement('template'); 5562 }, 5563 createNodeClone: function (template, selectorForIE) { 5564 if (this.checkSupportsTemp() === true) { 5565 return doc.importNode(template.content, true); 5566 } 5567 5568 return doc.importNode(template.querySelector(selectorForIE), true); 5569 }, 5570 convertByteToMB: function (byte) { 5571 return (Math.round(Number(byte) / (1024 * 1024) * 10) / 10) + 'MB'; 5572 }, 5573 convertByteToKB: function (byte) { 5574 return (Math.round(Number(byte) / 1024 * 10) / 10) + 'KB'; 5575 }, 5576 getJSON: function (loadPath, method, sendData) { 5577 return new Promise(function (resolve, reject) { 5578 var xhr = new XMLHttpRequest(); 5579 5580 if (win.kpi_search_api?.version === 2) { 5581 xhr.withCredentials = true; 5582 } 5583 5584 if (method && method === 'POST') { 5585 xhr.open('POST', loadPath); 5586 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 5587 } else { 5588 xhr.open('GET', loadPath); 5589 } 5590 5591 xhr.onload = function () { 5592 if (xhr.status === 200) { 5593 resolve(JSON.parse(xhr.response)); 5594 } else { 5595 reject(new Error(xhr.statusText)); 5596 } 5597 }; 5598 xhr.onerror = function () { 5599 reject(new Error('Network Error')); 5600 }; 5601 5602 if (method && method === 'POST' && sendData) { 5603 xhr.send(sendData); 5604 } else { 5605 xhr.send(null); 5606 } 5607 }); 5608 },
5609 setCookie: function (name, value) { 5610 var date = new Date(); 5611 var path; 5612 5613 if (win.suz_LanguagePath) { 5614 path = win.suz_LanguagePath + '/'; 5615 } else { 5616 path = '/'; 5617 } 5618 5619 date.setDate(date.getDate() + 90); 5620 doc.cookie = name + '=' + value + '; expires=' + date.toUTCString() + '; path=' + path; 5621 }, 5622 getCookie: function (name) { 5623 var cookies = doc.cookie.split('; '); 5624 var i; 5625 var l; 5626 var arr = []; 5627 5628 for (i = 0, l = cookies.length; i < l; i++) { 5629 if (cookies[i].indexOf(name + '=') === 0) { 5630 arr.push(cookies[i].substring(name.length + 1)); 5631 } 5632 } 5633 5634 return arr[0]; 5635 }, 5636 addAssetTypeToString: function (string) { 5637 var dict = this.makeQueryIntoDict(); 5638 var suffix = ''; 5639 5640 if (typeof string !== 'string' || dict.mode === undefined) { 5641 return false; 5642 } 5643 5644 if (dict.mode === '') { 5645 suffix = '_ca'; 5646 } else { 5647 suffix = '_' + dict.mode; 5648 } 5649 5650 return string + suffix; 5651 }, 5652 removeOverlapArr: function (array) { 5653 return array.filter(function (x, i, self) { 5654 return self.indexOf(x) === i; 5655 }); 5656 }, 5657 removeEmptyArr: function (array) { 5658 return array.filter(function (x) { 5659 return !(x === null || x === undefined || x === ''); 5660 }); 5661 }, 5662 makeQueryIntoDict: function () { 5663 var query; 5664 var i; 5665 var l; 5666 var arr = []; 5667 var dict = {}; 5668 5669 query = location.search.substring(1).split('&'); 5670 query = this.removeEmptyArr(query); 5671 5672 if (query.length) { 5673 for (i = 0, l = query.length; i < l; i++) { 5674 arr = query[i].split('='); 5675 if (arr[1]) { 5676 dict[arr[0]] = arr[1]; 5677 } else { 5678 dict[arr[0]] = ''; 5679 } 5680 } 5681 } 5682 5683 return dict; 5684 }, 5685 updateBrowserHistory: function (dict) { 5686 var objKeyArr = Object.keys(dict); 5687 var l = objKeyArr.length; 5688 var newParam = ''; 5689 var i; 5690 5691 for (i = 0; i < l; i++) { 5692 newParam += objKeyArr[i] + '=' + dict[objKeyArr[i]] + '&'; 5693 } 5694 newParam = '?' + newParam.slice(0, -1); 5695 win.history.pushState(null, null, newParam + win.location.hash); 5696 }, 5697 fromHtmlEntities: function (string) { 5698 var replace = function (targetString) { 5699 return String.fromCharCode(targetString.match(/\d+/gm)[0]); 5700 }; 5701 5702 var outputString = String(string).replace(/&#\d+;/gm, replace); 5703 5704 return outputString.replace(/ /gm, ' '); 5705 }, 5706 getOmittedText: function (text, elem) { 5707 const baseDefaultMax = 170; 5708 const settings = { 5709 min: 10, 5710 ellipsis: '...', 5711 }; 5712 const siteLang = win.kpi_languageSettings?.siteLang?.[0] ?? ''; 5713 const isDoubleByteLang = /^zh-|^ko-/.test(siteLang); 5714 const defaultMax = isDoubleByteLang ? Math.floor(baseDefaultMax / 2) : baseDefaultMax; 5715 const str = (text === null || text === undefined) ? '' : String(text); 5716 5717 if (!elem || !elem.dataset || elem.dataset.omit !== 'true') { 5718 return str; 5719 } 5720 5721 const rawMax = elem.dataset.omitMax; 5722 const maxNum = (rawMax === undefined || rawMax === '') ? NaN : Number(rawMax); 5723 let max = Number.isFinite(maxNum) ? maxNum : defaultMax; 5724 5725 if (isDoubleByteLang) { 5726 max = Math.floor(max / 2); 5727 } 5728 5729 max = Math.floor(Math.max(settings.min, max)); 5730 5731 if (str.length <= max) { 5732 return str; 5733 } 5734 5735 return `${str.substring(0, max)}${settings.ellipsis}`; 5736 }, 5737 }; 5738 5739 return new SetUtility(); 5740}(window, window.document))));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.