/* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.*/
/***
 * 该文件用来根据语言环境加载相应的示例页面文本提示
 * notice:
 * 1.依赖jQuery
 * 2.配置：依赖locales目录，具体的文本键值对在locales下的resources.js文件中配置。
 * 3.使用：在具体的示例页使用键值对，命名空间为resources.
 *   如 alert(resources.msg_tip),alert(resources.text_btn)
 */
var Localization = {
    //初始化加载国际化资源文件
    initializeI18N: null,
    //执行翻译替换
    localize: null,
    //挂在全局变量
    initGlobal: null
};
(function (nameSpace, $) {
    var targetScript = (function () {
        var r = new RegExp("(^|(.*?\\/js\\/))(localization\.js)(\\?|$)"),
            s = document.getElementsByTagName('script');
        for (var i = 0; i < s.length; i++) {
            var src = s[i].getAttribute('src');
            if (src && src.match(r)) {
                return s[i];
            }
        }
    })();


    function initializeI18N(path, callback) {
        var localPath = path + "./locales",
            file = "/resources.js";

        var filePathMap = {
            "en-US": localPath + "/en-US" + file,
            "zh-CN": localPath + "/zh-CN" + file
        };

        //脚本加载完成标志
        var lang = utils.getLanguage();

        inputScript(filePathMap[lang], function () {

            i18next.init({
                lng: lang,
                whitelist: ["zh-CN", "en-US"],
                fallbackLng: ["zh-CN", "en-US"]
            },function(){
                if (window.isSite) {
                    var webResourceURL = '../../web/locales/'+lang+'/resources.js';
                    $.get(webResourceURL, function () {
                        for (var name in window.webResources) {
                            var subWeb = window.webResources[name];
                            var subExamples = window.examplesResources[name];
                            //重名以webResource为准
                            if (typeof window.webResources[name] == 'object') {
    
                                if (!subExamples) {
                                    subExamples = {};
                                }
                                for (var name1 in subWeb) {
                                    subExamples[name1] = subWeb[name1];
                                }
                            } else {
                                subExamples[name1] = subWeb[name];
                            }
    
                        }
                        window.resources = window.examplesResources;
                        i18next.addResourceBundle && i18next.addResourceBundle(lang, 'translation', window.resources);
                        callback && callback();
    
                    })
    
                } else {
                    window.resources = window.examplesResources;
                    i18next.addResourceBundle && i18next.addResourceBundle(lang, 'translation', window.resources);
                    callback && callback();
                }
            });
            

        });

    }

    //国际化dom中的文本
    function localize() {
        jqueryI18next.init(i18next, $);
        $("html").localize(); //翻译页面所有含data-i18n属性的标签的文本
    }

    //全局变量挂载
    function initGlobal(root) {
        var rootNameSpace = root || window;
        if (rootNameSpace.resources) {
            rootNameSpace.oldResources = rootNameSpace.resources;
        }
        //example只开放资源映射到resources字段
        var resources = i18next.getResourceBundle && i18next.getResourceBundle(utils.getLanguage());
        rootNameSpace.resources = resources && resources.resources;
    }

    //插入script
    function inputScript(url, callback) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        if (script.readyState) { //for IE
            script.onreadystatechange = function () {
                if (script.readyState === "loaded" || script.readyState === "complete") {
                    script.onreadystatechange = null;
                    callback && callback();
                }
            };
        } else { //for Others
            script.onload = function () {
                callback && callback();
            };
        }
        script.src = url;
        targetScript.parentElement.insertBefore(script, targetScript);
    }

    nameSpace.initializeI18N = initializeI18N;
    nameSpace.localize = localize;
    nameSpace.initGlobal = initGlobal;
})(Localization, jQuery);