//轮训处理
Namespace.register("U.MD.O.P");

//设置是否允许连接
U.MD.O.P.isconnect = true;
/*
* 链接后台,并发送请求
*/
U.MD.O.P.connect = function () {
    if (US.userInfo.userid) {       //判断用户是否登录
        U.MD.O.P.polling(["login", JSON.stringify({     //发送登录请求
            pageId: US.pageId,
            userId: US.userInfo.userid,
            userName: US.userInfo.username,
            type: US.systemId
        })]);
    }
};


/*
* 数据处理
*/
U.MD.O.P.dataAsyn = function () {


}

/*
* 发送请求进入轮训
*/
U.MD.O.P.polling = function (params) {
    if (U.MD.O.P.isconnect) {
        U.MD.O.P.isconnect = false;
        params = params || ["polling", US.userInfo.userid, US.pageId, US.systemId]
        var start = 0;
        var delimiter = "\r\n"
        var end = 0;
        var text = "";
        var xhr = new XMLHttpRequest();
        var data = "";
        //var time = null;
        //
        var fun = function () {
            //clearTimeout(time)
            text = xhr.responseText;
            var istrue = true;
            while (start < text.length && istrue) {
                end = text.indexOf(delimiter, start);//获取数据的是否已经结束
                if (end > -1) {
                    data += text.substring(start, end);
                    start = end + delimiter.length;
                    try {
                        U.MD.O.P.pollingAsyn({ value: JSON.parse(data) })
                    }
                    catch (e) {
                        console.log(e);
                    }
                    data = "";
                }
                else {
                    istrue = false;
                    //time = setTimeout(fun, 500);//
                }
            }
        };
        xhr.open("POST", US.SCOKET, true);
        xhr.onreadystatechange = function () {
            //获取数据
            if (xhr.readyState == 3 && xhr.status == 200) {
                fun();
            }
            //结束重连
            else if (xhr.readyState == 4) {
                console.log(xhr);
                U.MD.O.P.isconnect = true;
                U.MD.O.P.connect();
            }
        };
        //超时重新连接
        xhr.onerror = function (err) {
            console.log(err);
        };
        try {
            //发送请求
            xhr.send(U.A.Request.toAjaxFormat(params));
        }
        catch (e) {
            console.log(e);
        }
    }
}

/* 
* 处理从后台返回的数据
*
*/

U.MD.O.P.pollingAsyn = function (r) {
    r = r.value;
    if (r) {    //r是否有值
        if (r[0] instanceof Array) {
            r = r[0];
        }
        //        console.log('获取到的数据:', r)
        var _i, _message, _iframe, _contentWindow;
        for (_i = 0; _i < r.length; _i++) {
            _message = r[_i];
            switch (_message.type) {
                case 'us.word':     //判断是否是word 的消息
                    // _iframe = $('#UD_Word' + _message.messageInfo.docId + ' iframe')[0];
                    _iframe = $('#doc iframe')[0];
                    if (_iframe) {
                        _contentWindow = _iframe.contentWindow;
                        if (_message.messageInfo.type == "updateName") {
                            $('#UD_Word' + _message.messageInfo.docId + ' .U_MD_O_H_head_navigation_Title')[0].value = _message.messageInfo.name;
                        }
                        else if (_message.messageInfo.type == "insertModifyRecord") {
                            _contentWindow.U.MD.O.W.Panel.syncHistory(_message.sendId, _message.messageInfo.historyid);
                        }
                        else if (_message.messageInfo.type == "addUser") {
                            _contentWindow.U.MD.O.W.Panel.syncAddUser(_message.messageInfo.userIds, _message.sendId);
                        }
                        else {// if ($('#UD_Word' + _message.messageInfo.docId).css('display') == 'block')
                            switch (_message.messageInfo.type) {// 判断消息种类
                                case 'update':
                                    _contentWindow.U.MD.O.W.E.updateEditorLine(_message.messageInfo);
                                    break;
                                case 'add':
                                    _contentWindow.U.MD.O.W.E.addEditorLine(_message.messageInfo);
                                    break;
                                case 'delete':
                                    _contentWindow.U.MD.O.W.E.deleteEditorLine(_message.messageInfo);
                                    break;
                            }
                        }
                    }
                    break;
                case 'us.nav':
                    _iframe = $('#UD_Word' + _message.messageInfo.docId + ' iframe')[0];
                    if (_message.messageInfo.type == "updateName") {
                        $('#UD_Word' + _message.messageInfo.docId + ' .U_MD_O_H_head_navigation_Title')[0].value = _message.messageInfo.name;
                    } else if (_message.messageInfo.type == "addUser") {
                        _contentWindow.U.MD.O.W.Panel.syncAddUser(_message.messageInfo.userIds, _message.sendId);
                    }
                    else if ($('#UD_Word' + _message.messageInfo.docId).css('display') == 'block') {
                        _contentWindow = _iframe.contentWindow;
                        switch (_message.messageInfo.type) {// 判断消息种类
                            case 'update':
                                _contentWindow.U.MD.O.W.T.N.nowNavId == _message.messageInfo.navId && _contentWindow.U.MD.O.W.E.updateEditorLine(_message.messageInfo);
                                break;
                            case 'add':
                                _contentWindow.U.MD.O.W.T.N.nowNavId == _message.messageInfo.navId && _contentWindow.U.MD.O.W.E.addEditorLine(_message.messageInfo);
                                break;
                            case 'delete':
                                _contentWindow.U.MD.O.W.T.N.nowNavId == _message.messageInfo.navId && _contentWindow.U.MD.O.W.E.deleteEditorLine(_message.messageInfo);
                                break;
                            case 'addNav':
                                _contentWindow.U.MD.O.W.T.N.Poll.addNav(_message.messageInfo);
                                break;
                            case 'updateNav':
                                _contentWindow.U.MD.O.W.T.N.Poll.updateNav(_message.messageInfo);
                                break;
                            case 'deleteNav':
                                _contentWindow.U.MD.O.W.T.N.Poll.deleteNav(_message.messageInfo);
                                break;
                            case 'updateLogo':
                                _contentWindow.U.MD.O.W.T.N.Poll.updateLogo(_message.messageInfo);
                                break;
                        }
                    }
                    break;
                case 'us.excel':     //判断是否是word 的消息
                    _iframe = $('#UD_Excel' + _message.messageInfo.docId + ' iframe')[0];
                    if (_iframe) {
                        if (_message.messageInfo.type == "updateName") {
                            $('#UD_Excel' + _message.messageInfo.docId + ' .U_MD_O_H_head_navigation_Title')[0].value = _message.messageInfo.name;
                        }
                        else if (_message.messageInfo.type == "addUser") {

                        }
                        else {
                            _contentWindow = _iframe.contentWindow;
                            switch (_message.messageInfo.type) {// 判断消息种类
                                case 'blur':
                                    _contentWindow.U.MD.O.E.Receiver.Blur(_message.messageInfo);
                                    break;
                                case 'setBorder':
                                    _contentWindow.U.MD.O.E.Receiver.setBorder(_message.messageInfo);
                                    break;
                                case "addLine":
                                    _contentWindow.U.MD.O.E.Receiver.addLine(_message.messageInfo);
                                    //添加行
                                    break;
                                case "delLine":
                                    _contentWindow.U.MD.O.E.Receiver.delLine(_message.messageInfo);
                                    //刪除行
                                    break;
                                case "addCol":
                                    _contentWindow.U.MD.O.E.Receiver.addCol(_message.messageInfo);
                                    //添加列
                                    break;
                                case "delCol":
                                    _contentWindow.U.MD.O.E.Receiver.delCol(_message.messageInfo);
                                    //刪除列
                                    break;
                                case "merge":
                                    _contentWindow.U.MD.O.E.Receiver.merge(_message.messageInfo);
                                    //合并单元格
                                    break;
                                case "splitCells":
                                    _contentWindow.U.MD.O.E.Receiver.splitCells(_message.messageInfo);
                                    //拆分单元格
                                    break;
                                case "rowExpanding":
                                    _contentWindow.U.MD.O.E.Receiver.rowExpanding(_message.messageInfo);
                                    //行板拉伸
                                    break;
                                case "colExpanding":
                                    _contentWindow.U.MD.O.E.Receiver.colExpanding(_message.messageInfo);
                                    //列板拉伸
                                    break;
                                case "addTask":
                                    _contentWindow.U.MD.O.E.Receiver.addTask(_message.messageInfo);
                                    break;
                                case "deleteTask":
                                    _contentWindow.U.MD.O.E.Receiver.deleteTask(_message.messageInfo);
                                    break;
                                case "reNameTask":
                                    _contentWindow.U.MD.O.E.Receiver.reNameTask(_message.messageInfo);
                                    break;
                                case "img":
                                    _contentWindow.U.MD.O.E.Receiver.img(_message.messageInfo);
                                    //插入图片
                                    break;
                                case "imgChange": //图片拉伸及拖拽
                                    _contentWindow.U.MD.O.E.Receiver.imgChange(_message.messageInfo);
                                    break;
                                case "excelAddHref": //插入链接
                                    _contentWindow.U.MD.O.E.Receiver.excelAddHref(_message.messageInfo);
                                    break;
                                case "clearAContent": //删除链接
                                    _contentWindow.U.MD.O.E.Receiver.clearAContent(_message.messageInfo);
                                    break;
                            }
                        }
                    }
                    break;
                case 'us.mindNetwork':
                    // _iframe = $('#mindNetwork' + _message.messageInfo.docId)[0];
                    _iframe = $('#mindNetwork iframe')[0];
                    if (_iframe) {
                        _contentWindow = _iframe.contentWindow;
                        //    if (_message.messageInfo.type == "addUser") {
                        //        _contentWindow.postMessage({ cid: cid, type: "mindNetwork_addUser" }, "*")
                        //     }
                        //    else 
                        //    if ($('#mindNetwork' + _message.messageInfo.docId).css('display') == 'block') {
                        switch (_message.messageInfo.type) {// 判断消息种类
                            case 'update':
                                _contentWindow.postMessage({ info: _message.messageInfo, type: "mindNetwork_update" }, "*")
                                break;
                            case 'delete':
                                _contentWindow.postMessage({ info: _message.messageInfo, type: "mindNetwork_delete" }, "*")
                                break;
                            case 'move':
                                _contentWindow.postMessage({ info: _message.messageInfo, type: "mindNetwork_move" }, "*")
                                break;
                        }
                        // }
                    }
                    break;
                case 'us.realTimeClass':
                    _iframe = $('#studentClassRoom iframe')[0];
                    if (_iframe) {
                        _contentWindow = _iframe.contentWindow;
                        switch (_message.messageInfo.type) {// 判断消息种类
                            case 'update'://修改页码
                                _contentWindow.postMessage({ info: _message.messageInfo, type: "realTimeClass_update" }, "*")
                                break;
                        }
                        // }
                    }
                    break;
                case 'us.cscl':
                    _iframe = $('#futureClass iframe')[0];
                    if (_iframe) {
                        _contentWindow = _iframe.contentWindow;
                        _contentWindow.postMessage({ info: _message.messageInfo, type: _message.messageInfo.type }, "*");
                    }
                    break;
            }
        }
    }
    //U.MD.O.P.polling(); //进入轮循
}