var isServerOk = false
var isSetupOk = false
var pluginsMode=0;//0表示jsplugins.xml模式,1表示publish模式,2表示 多进程加动态传递jsplugins.xml模式
//publish自动安装开始
 /*
    * 将自己的加载项地址配置到这里来
    * 需要保证加载项的name和业务业务系统中传递加载项name相对应
    * url必须以/ 结尾,且url+ribbon.xml和url+index.html在清除浏览器缓存的情况下能直接访问,不会被重定向
    * addonType:对应组件类型,wps文字,wpp演示,et表格
    */
    //复制开始
//    var curList = [{"name":"EtOAAssist","addonType":"et","online":"false","url":"http://127.0.0.1/jsplugindir/EtOAAssist.7z","version":"1.0.0"}]; //离线模式参考
var curList=[
    {"name":"WpsOAAssist","addonType":"wps","online":"true","url":"http://127.0.0.1:3888/plugin/wps/"},
    {"name":"EtOAAssist","addonType":"et","online":"true","url":"http://127.0.0.1:3888/plugin/et/"},
    {"name":"WppOAAssist","addonType":"wpp","online":"true","url":"http://127.0.0.1:3888/plugin/wpp/"}
]//在线模式配置参考
var localList=[];
var publishIndex=0;
var publishUnIndex=0;
/*获取用户本地全部加载项的接口是必须要的,这个接口做了判断,
** 如果58890端口未启动,会先去启动这个端口
*/
//加载项安装函数
function installWpsAddin(callBack){
    WpsAddonMgr.getAllConfig(function(e){
        
        
        if(!e.response||e.response.indexOf("null")>=0){//本地没有加载项,直接安装
            if(curList.length>0){
                installWpsAddinOne(callBack);
            } 
        }else{//本地有加载项,先卸载原有加载项,然后再安装
            localList=JSON.parse(e.response)
            // if(e.response)
            unInstallWpsAddinOne(callBack)
        }
            
    })
}
//安装单个加载项
function installWpsAddinOne(callBack){
    WpsAddonMgr.enable(curList[publishIndex],function(e){
        if(e.status){
            console.log(e.msg)
        }else{
            console.log("安装成功")
        }
        publishIndex++;
        if(publishIndex<curList.length){
            installWpsAddinOne();
        }else{
            callBack&&callBack()
        }
    })
}
//卸载单个加载项
function unInstallWpsAddinOne(callBack){
    WpsAddonMgr.disable(localList[publishUnIndex],function(e){
        if(e.status){
            console.log(e.msg)
        }else{
            console.log("卸载成功")
        }
        publishUnIndex++;
        if(publishUnIndex<localList.length){
            unInstallWpsAddinOne(callBack);
        }else{
            if(curList.length>0){
                installWpsAddinOne(callBack);
            } 
        }
    })
}
//publish自动安装结束
function envTest() {
    //1.服务端检测

    var xhr = getHttpObj()
    xhr.onload = function(e) {
        isServerOk = true
            //2.安装包检测
        var xhr1 = getHttpObj()
        xhr1.onload = function(e) {
            if (xhr1.responseText.indexOf('异常') > -1 || xhr1.responseText.indexOf('未安装') > -1 || xhr1.responseText.indexOf('失败') > -1) {
                window.location.href = "./demo.html"
                return;
            }
            isSetupOk = true
            window.location.href.indexOf("file://") > -1 ? window.location.href = "http://127.0.0.1:3888/index.html" : ''
        }
        xhr1.onerror = function(e) {
            isServerOk = false
            window.location.href = "./demo.html"
        }
        xhr1.open('get', 'http://127.0.0.1:3888/WpsSetupTest?pluginsMode='+pluginsMode, true)
        xhr1.send()
    }
    xhr.onerror = function(e) {
        isServerOk = false
        window.location.href = "./demo.html"
    }
    xhr.open('get', 'http://127.0.0.1:3888/FileList', true)
    xhr.send();
}
// 切换到相应 tab. 0: wps  1: wpp  2: et
function SwitchTab(crtTabIndex) {
    var iframe_wps = document.getElementById("iframe_wps");
    var iframe_wpp = document.getElementById("iframe_wpp");
    var iframe_et = document.getElementById("iframe_et");

    if (iframe_wps && iframe_wpp && iframe_et) {
        switch (crtTabIndex) {
            case 0:
                iframe_wpp.setAttribute("height", "0px");
                iframe_et.setAttribute("height", "0px");
                iframe_wps.setAttribute("height", "100%");
                break;
            case 1:
                iframe_wps.setAttribute("height", "0px");
                iframe_wpp.setAttribute("height", "0px");
                iframe_et.setAttribute("height", "100%");
                break;
            case 2:
                iframe_wps.setAttribute("height", "0px");
                iframe_et.setAttribute("height", "0px");
                iframe_wpp.setAttribute("height", "100%");
                break;
            default:
                iframe_wps.setAttribute("height", "0px");
                iframe_wpp.setAttribute("height", "0px");
                iframe_et.setAttribute("height", "0px");
                break;
        }
    }
}

function appChange() {
    var obj = document.getElementById("app");
    SwitchTab(obj.selectedIndex);
}

window.onload = function() {
    var app = document.getElementById("app");
    var opts = app.getElementsByTagName("option"); //得到数组option
    opts[0].selected = true;
    var indexFrame = document.getElementById("indexFrame");
    indexFrame.innerHTML="<iframe src='./resource/wps.html?pluginsMode="+pluginsMode+"' id='iframe_wps' frameborder='0' width='100%' height='0%'></iframe><iframe src='./resource/wpp.html?pluginsMode="+pluginsMode+"' id='iframe_wpp' frameborder='0' width='100%' height='0%'></iframe><iframe src='./resource/et.html?pluginsMode="+pluginsMode+"' id='iframe_et' frameborder='0' width='100%' height='0%'></iframe>"
    // 默认切换到 wps
    SwitchTab(0);
    //demo三种模式进行切换
    envTest()   //自动配置oem.ini
    if(pluginsMode==1){
        installWpsAddin() //自动安装集成
    }else{
        //卸载掉publish模式
        curList=[]
        installWpsAddin() 
    }
    
}

function IEVersion() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器  
    var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器  
    var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
    if (isIE) {
        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
        reIE.test(userAgent);
        var fIEVersion = parseFloat(RegExp["$1"]);
        if (fIEVersion == 7) {
            return 7;
        } else if (fIEVersion == 8) {
            return 8;
        } else if (fIEVersion == 9) {
            return 9;
        } else if (fIEVersion == 10) {
            return 10;
        } else {
            return 6; //IE版本<=7
        }
    } else if (isEdge) {
        return 20; //edge
    } else if (isIE11) {
        return 11; //IE11  
    } else {
        return 30; //不是ie浏览器
    }
}

function getHttpObj() {
    var httpobj = null;
    if (IEVersion() < 10) {
        try {
            httpobj = new XDomainRequest();
        } catch (e1) {
            httpobj = new createXHR();
        }
    } else {
        httpobj = new createXHR();
    }
    return httpobj;
}
//兼容IE低版本的创建xmlhttprequest对象的方法
function createXHR() {
    if (typeof XMLHttpRequest != 'undefined') { //兼容高版本浏览器
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != 'undefined') { //IE6 采用 ActiveXObject, 兼容IE6
        var versions = [ //由于MSXML库有3个版本,因此都要考虑
            'MSXML2.XMLHttp.6.0',
            'MSXML2.XMLHttp.3.0',
            'MSXML2.XMLHttp'
        ];

        for (var i = 0; i < versions.length; i++) {
            try {
                return new ActiveXObject(versions[i]);
            } catch (e) {
                //跳过
            }
        }
    } else {
        throw new Error('您的浏览器不支持XHR对象');
    }
}