1(function(global){"use strict";const utils={publicUrl:location.hostname==='www.noviai.ai'?'https://public.noviai.ai':'https://public.ifonelab.com',env:location.hostname==='www.noviai.ai'?'production':'test',md5Token:{time:function(){return new Date().getTime().toString().slice(0,10)},token:function(nowtime){return md5(nowtime+'NAgwtY8Go36r2yJPQ')}}} 2let languageShow='' 3let languages_obj={} 4let pathname='' 5var languagePopPlugin=function(config,callback){typeof callback=='function'?callback():'' 6this.init(config)} 7languagePopPlugin.prototype={config:{language:'en',subDirectory:'/',styleShow:!0,domShow:!0,domHandler(){},completedHandler(){},closeHandler(){},notExecutedHandler(){}},init(config){const siteLang=this.getSiteLanguageFromUrl();this.setConfig({...config,language:siteLang.language,subDirectory:siteLang.subDirectory});let browserLanguage=navigator.language;const browserLanguageMap={'nb':'no','zh-TW':'tw','zh-Hant':'tw'} 8browserLanguageMap[browserLanguage]&&(browserLanguage=browserLanguageMap[browserLanguage]);this.getLanguageWrite(browserLanguage,browserLanguage.indexOf(this.getPrimaryLanguageCode(this.config.language))==-1)},getSiteLanguageFromUrl(){let path=window.location.pathname.replace(/\/+/g,'/');let dirs=path.split('/');let language=dirs[1]||'en';const htmlLang=document.querySelector('html').getAttribute('lang');let subDirectory=language!=='en'?'/'+language+'/':'/';return{language:htmlLang,subDirectory}},setConfig(options){for(let k in options){this.config[k]=options[k]}},getPrimaryLanguageCode(languageCode){return languageCode.split('-')[0]},getLanguageWrite(code,openShow){let _this=this;languageShow=sessionStorage.getItem("languageShow");pathname=window.location.pathname.replace(/\/+/g,'/').replace(_this.config.subDirectory,'/');if(languageShow||!openShow){setTimeout(function(){_this.config.notExecutedHandler()},0) 9return} 10$.get(utils.publicUrl+'/assets/json/language_noviai.json',function(data){let ExecutedActive=!1 11Object.keys(data.browser_language).forEach(item=>{if(item.split('_')[0]==_this.getPrimaryLanguageCode(code)){languages_obj[item]=data.browser_language[item] 12if(pathname=='/'){_this.config.styleShow?_this.createCss():'';_this.setPopHandler(item,languages_obj[item].direction)}else{_this.getCurrentHref(item,languages_obj[item].direction)} 13if(!ExecutedActive){ExecutedActive=!0}}});if(!ExecutedActive){_this.config.notExecutedHandler()}})},getCurrentHref(language,direction){try{let _this=this;$.ajax({url:languages_obj[language].website[utils.env]+pathname,type:'HEAD',complete:function(xhr){_this.config.styleShow&&_this.createCss();_this.setPopHandler(language,direction);if(xhr.status===404){$('.language-pop .button').attr('href',languages_obj[language].website[utils.env]+'/')}}})}catch{console.log('error')}},createCss(){let link=document.createElement("link") 14link.type="text/css",link.rel="stylesheet",link.href=utils.publicUrl+'/assets/css/language_pop_plugin_noviai.css',document.getElementsByTagName("head")[0].appendChild(link)},setPopHandler(language,direction){let _this=this 15let popHtml='<div class="language-pop noviai '+language+' '+direction+'"><div class="language-box"></div></div>';$('body').append(popHtml);this.config.domShow?this.setPopContent(language):this.setPopOther();$(".language-pop .close").click(function(){_this.config.closeHandler();_this.config.notExecutedHandler();$('.language-pop').remove();sessionStorage.setItem("languageShow",0)}) 16this.setGATrack(language)},setPopContent(language){let $contentDom='<p class="tip">'+languages_obj[language].tip+'</p><p class="desc">'+languages_obj[language].desc+'</p><div class="language-bottom language-flex"><a class="button" href='+languages_obj[language].website[utils.env]+pathname+' >'+languages_obj[language].button+'</a><div class="close">'+languages_obj[language].close+'</div></div><div class="close-pop close"></div>';$('.language-pop .language-box').append($contentDom);this.config.completedHandler()},setGATrack(language){$(".language-bottom .close").click(function(){dataLayer.push({'event':'language_popup_window','event-action':'continue'})}) 17$(".close-pop.close").click(function(){dataLayer.push({'event':'language_popup_window','event-action':'close'})}) 18$(".language-bottom .button").click(function(){dataLayer.push({'event':'language_popup_window','event-action':'regional_site','event-label':languages_obj[language].website[utils.env]+'/'})})},setPopOther(){this.config.domHandler()}} 19if(typeof module!=="undefined"&&module.exports) 20module.exports=languagePopPlugin;if(typeof define==="function") 21define(function(){return languagePopPlugin});global.languagePopPlugin=languagePopPlugin})(this)
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.