function bin2hex(s) {
    var i, l, o = '',
        n;

    s += '';

    for (i = 0, l = s.length; i < l; i++) {
        n = s.charCodeAt(i)
            .toString(16);
        o += n.length < 2 ? '0' + n : n;
    }

    return o;
}

function getUUID(domain) {
    var canvas = document.createElement('canvas');
    var ctx = canvas.getContext("2d");
    var txt = domain;
    ctx.textBaseline = "top";
    ctx.font = "14px 'Arial'";
    ctx.textBaseline = "tencent";
    ctx.fillStyle = "#f60";
    ctx.fillRect(125, 1, 62, 20);
    ctx.fillStyle = "#069";
    ctx.fillText(txt, 2, 15);
    ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
    ctx.fillText(txt, 4, 17);

    var b64 = canvas.toDataURL().replace("data:image/png;base64,", "");
    var bin = atob(b64);
    var crc = bin2hex(bin.slice(-16, -12));
    return crc;
}

var btn_wait = 60;

function timeOutOfBtn(domBtn, langBtn) {
    if (btn_wait === 0) {
        domBtn.removeAttribute("disabled");
        domBtn.innerText = langBtn;
        btn_wait = 60;
        document.getElementById('nb_nodeboard_set_lx').style.display = 'block';
        document.getElementById('nb_nodeboard_success_lx').style.display = 'none';
    } else {
        domBtn.innerText = langBtn + "(" + btn_wait + ")";
        btn_wait--;
        setTimeout(function () {
            timeOutOfBtn(domBtn, langBtn);
        }, 1000);
    }
}

function apiHelper(api_path, api_params, fn) {
    $.ajax({
        url: 'https://cms.lian-xin.com/' + api_path,
        type: 'post',
        timeout: 3000,
        cache: false,
        data: api_params,
        dataType: "JSON",
        headers: {
            Origin: "https://lian.zj11.net"
        },
        success: function (result) {
            if (typeof result == "string") {
                result = JSON.parse(result);
            }
            fn(result);
        },
        error: function (message) {
            console.debug('敏感词检查出错');
        }
    });
}

function apiCheck(api_path, api_params, fn) {
    if (typeof $ === "undefined") {
        setTimeout(function () {
            apiHelper(api_path, api_params, fn);
        }, 2000);
    } else {
        apiHelper(api_path, api_params, fn);
    }
}

function apiCheckOfNowPage(PKS, fn) {
    apiCheck('Site/GuestRequest/CheckIsSite', PKS.guest, fn);
}

function apiCheckOfNodeBoard(api_path, api_params, ins_nb_nodeboard_tips, fn) {
    apiCheck('LeaveMsg/' + api_path, api_params, result => {
        if (result.hasOwnProperty('isSuccess') && result.hasOwnProperty('msg')) {
            if (result.isSuccess) {
                if (ins_nb_nodeboard_tips != null) {
                    ins_nb_nodeboard_tips.innerText = '';
                }
                if (typeof fn == "function") {
                    fn(result.data);
                }
            } else {
                if (ins_nb_nodeboard_tips != null) {
                    ins_nb_nodeboard_tips.innerText = result.msg;
                } else {
                    alert(result.msg);
                }
            }
        } else {
            console.debug('敏感词检查返回不正常');
        }
    });
}

function apiCheckOfAuth(PKS, ins_nb_nodeboard_tips, langBtn) {
    timeOutOfBtn(document.getElementById('nb_nodeboard_send_lx'), langBtn);
    var params_form = $('#nb_nodeboard_form_lx').serializeArray();
    var params_api = Object.assign(Object.create(null), PKS.guest);
    for (let paramsFormElement of params_form) {
        params_api[paramsFormElement.name] = paramsFormElement.value;
    }
    apiCheckOfNodeBoard('AuthLeaveMsg/', params_api, ins_nb_nodeboard_tips, res => {
        if (res.hasOwnProperty('sign')) {
            document.getElementById('nb_nodeboard_set_lx').style.display = 'none';
            document.getElementById('nb_nodeboard_success_lx').style.display = 'block';
            apiCheckOfNodeBoard('PushLeaveMsg', {key: res.sign}, ins_nb_nodeboard_tips);
        }
    });
}

function apiCheckOfAuthByForm(params_api) {
    apiCheckOfNodeBoard('AuthLeaveMsg/', params_api, null, res => {
        if (res.hasOwnProperty('sign')) {
            apiCheckOfNodeBoard('PushLeaveMsg', {key: res.sign}, null);
        }
    });
}

;!function (win, doc) {
    var PKS = {
        config: {
            url: 'https://lian.zj11.net'
        },
        guest: {
            domainName: location.hostname,
            protocol: location.protocol,
            pageTitle: doc.getElementsByTagName('title')[0].innerHTML,
            pageUrl: location.href,
            UUID: getUUID(location.hostname)
        },
        server: {
            isOnline: false,
            name: '',
            id: ''
        },
        level: {
            leavelMsg: 'lian_leaveMsg',
            onChat: 'lian_onChat'
        },
        style: {
            ins_nbWebImLightContainer: "right: 20px;bottom: 10px;z-index:9999;",
            m_nbWebImLightContainer: 'width:90%',
            ins_nodeboard_hide: function () {
                let result = PKS.style.ins_nbWebImLightContainer;
                    let now_lang = doc.getElementsByTagName('html')[0].getAttribute('lang');
                if (now_lang !== 'en') {
                    return result + "width:160px;";
                } else {
                    return result +  "widtn:230px;";
                }
            }
        },
        language: {
            action_input: {
                'zh-cn': '请输入',
                'en': 'please enter'
            },
            action_format_email: {
                'zh-cn': '邮箱请使用正确的邮箱',
                'en': 'Please use the correct email address'
            },
            action_format_phone: {
                'zh-cn': '请输入正确的中国手机号，或者是有地区号的固定（国际）电话',
                'en': 'Please enter the correct Chinese mobile phone number, or a fixed (international) phone with an area code'
            },
            chat_tips: {
                'zh-cn': '咨询客服',
                'en': 'Consulting'
            },
            chat_btn: {
                'zh-cn': '发送',
                'en': 'Send'
            },
            chat_reply: {
                'zh-cn': '咨询的内容不能为空',
                'en': 'The content of the inquiry cannot be empty'
            },
            leaveMsg_btnSubmit: {
                'zh-cn': '发送',
                'en': 'Submit'
            },
            leaveMsg_btnReset: {
                'zh-cn': '重置',
                'en': 'Reset'
            },
            leaveMsg_fromContent: {
                'zh-cn': '内容（必填）',
                'en': 'content(Required)'
            },
            leaveMsg_fromTipsContent: {
                'zh-cn': '请在此输入留言内容，我们会在24小时内尽快与您联络。（必填）',
                'en': 'Please enter the message content here, we will contact you as soon as possible within 24 hours. (Required)'
            },
            leaveMsg_fromEmail: {
                'zh-cn': '联系邮箱（必填）',
                'en': 'Email(Required)'
            },
            leaveMsg_fromName: {
                'zh-cn': '姓名（必填）',
                'en': 'Name(Required)'
            },
            leaveMsg_fromPhone: {
                'zh-cn': '手机号码（必填）',
                'en': 'Phone(Required)'
            },
            state_serverOnline: {
                'zh-cn': '客服：xxx，正在为您服务',
                'en': 'Customer service: xxx, at your service'
            },
            state_serverOnline_simple: {
                'zh-cn': '咨询客服',
                'en': 'Advisory Service'
            },
            state_leaveMsg: {
                'zh-cn': '请您询盘',
                'en': 'Please leave a message'
            },
            leaveMsg_tipsTitle: {
                'zh-cn': '提交成功',
                'en': 'Submitted successfully'
            },
            leaveMsg_tipsContent: {
                'zh-cn': '尊敬的 lianChat_userName 客户：感谢您的留言，我们已经收到您的消息，尽快与您取得联系。',
                'en': 'honorific lianChat_userName Thank you for your message. We have received your message and will contact you as soon as possible.'
            },
            leaveMsg_tipsForbidden: {
                'zh-cn': '留言内容存在敏感信息，不能提交！',
                'en': 'The message content contains sensitive information and cannot be submitted!'
            }
        },
        list_input: {
            'leaveMsg_fromName': 'userName',
            'leaveMsg_fromPhone': 'userPhone',
            'leaveMsg_fromEmail': 'userEmail'
        }
    }
        , is_mobile = function () {
        var is;
        if (is === undefined) {
            var ua = navigator.userAgent,
                isWindowsPhone = /(?:Windows Phone)/.test(ua),
                isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,
                isAndroid = /(?:Android)/.test(ua),
                isFireFox = /(?:Firefox)/.test(ua),
                isChrome = /(?:Chrome|CriOS)/.test(ua),
                isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),
                isPhone = /(?:iPhone)/.test(ua) && !isTablet;
            is = isPhone || isAndroid || isSymbian;
            // console.log('is_mobile', is);
        }
        return is;
    }
        , ins_newBridge = doc.createElement('ins')
        , ins_nbWebImLightContainer = doc.createElement('ins')
        , ins_nbWLTitle = doc.createElement('ins')
        , ins_nbWLEditor = doc.createElement('ins')
        , ins_nbWLMessageContainer = doc.createElement('ins')
        , ins_nbWLToggle = doc.createElement('ins')
        , ins_nbWLToolBar = doc.createElement('ins')
        , ins_nb_nodeBoard = doc.createElement('ins')
        , lang = function (key) {
        let now_lang = doc.getElementsByTagName('html')[0].getAttribute('lang');
        if (now_lang !== 'en') {
            now_lang = 'zh-cn';
        }
        let keys = PKS.language[key];
        return keys[now_lang];
    }
        , localLayui = function () {
        var headobj = doc.getElementsByTagName('head')[0];

        var style_main = doc.createElement('link');
        style_main.rel = "stylesheet";
        style_main.href = PKS.config.url + '/main.css';
        headobj.appendChild(style_main);

        var style_newBridge = doc.createElement('link');
        style_newBridge.rel = "stylesheet";
        style_newBridge.href = PKS.config.url + '/newBridge.css';
        headobj.appendChild(style_newBridge);

        if (typeof $ === "undefined") {
            var sObj = doc.createElement('script');
            sObj.type = "text/javascript";
            sObj.src = PKS.config.url + '/jquery-1.8.3.min.js';
            headobj.appendChild(sObj);
        }
    }
        , chatbox_content = function (userName, time, content, fn) {
        var msg_title = doc.createElement('ins');
        msg_title.className = 'nb-webim-light-message-title';
        var msg_user = doc.createElement('ins');
        msg_user.className = 'nb-webim-light-message-name';
        msg_user.innerText = '';
        msg_title.append(msg_user);
        var msg_time = doc.createElement('ins');
        msg_time.className = 'nb-webim-light-message-time';
        msg_time.innerText = time;
        msg_title.append(msg_time);
        var msg_content = doc.createElement('ins');
        msg_content.className = 'nb-webim-light-message-content';
        msg_content.innerText = content;
        fn(msg_title, msg_content);
    }
        , chatbox_guest = function (time, content) {
        chatbox_content('', time, content,
            function (html_title, html_content) {
                var ins_msg = doc.createElement('ins');
                ins_msg.className = 'nb-webim-light-message nb-webim-light-message-0';
                ins_msg.append(html_title);
                ins_msg.append(html_content);
                ins_nbWLMessageContainer.append(ins_msg);
                ins_nbWLMessageContainer.scrollTop = ins_nbWLMessageContainer.scrollHeight;
            });
    }
        , chatbox_server = function (userName, time, content,) {
        chatbox_content(userName, time, content, function (html_title, html_content) {
            var ins_msg = doc.createElement('ins');
            ins_msg.className = 'nb-webim-light-message nb-webim-light-message-1';
            ins_msg.append(html_title);
            ins_msg.append(html_content);
            ins_nbWLMessageContainer.append(ins_msg);
            ins_nbWLMessageContainer.scrollTop = ins_nbWLMessageContainer.scrollHeight;
        });
    }
        , chat_msgOfGuest = function () {
        var dom = doc.getElementById('nbWebimLightEditor');
        var reply_msg = dom.innerHTML;
        if (reply_msg == null || reply_msg === '') {
            layer.msg(lang('chat_reply'));
        } else {
            reply_msg = reply_msg.replace(/<.*?>/g, "");
            var myDate = new Date();
            var now_time = myDate.getHours() + ':' + myDate.getMinutes() + ':' + myDate.getSeconds();
            PKWS.send('sendMsg', {
                reply: reply_msg, time: now_time
            });
            chatbox_guest(now_time, reply_msg);
            dom.innerHTML = '';
            dom.focus();
        }
    }
        , view_chat = function () {
        if (!doc.getElementById('nbwlMessageContainer')) {
            // 聊天信息
            ins_nbWLMessageContainer.id = 'nbwlMessageContainer';
            ins_nbWLMessageContainer.style.display = 'none';
            ins_nbWebImLightContainer.append(ins_nbWLMessageContainer);
            // 编辑框
            ins_nbWLEditor.id = 'nbwlEditor';
            ins_nbWLEditor.style.display = 'none';
            ins_nbWebImLightContainer.append(ins_nbWLEditor);
            var ins_nbWebImLightEditor = doc.createElement('ins');
            ins_nbWebImLightEditor.id = 'nbWebimLightEditor';
            ins_nbWebImLightEditor.className = 'editor';
            ins_nbWebImLightEditor.contentEditable = "true";
            ins_nbWebImLightEditor.style.fontFamily = '微软雅黑';
            ins_nbWebImLightEditor.style.fontSize = '9pt';
            ins_nbWebImLightEditor.style.color = 'rgb(0, 0, 0);';
            ins_nbWLEditor.append(ins_nbWebImLightEditor);
            ins_nbWebImLightEditor.focus();
            ins_nbWebImLightEditor.onkeyup = function () {
                if (ins_nbWebImLightEditor.innerHTML.length >= 2) {
                    ins_nbWLSendBtn.disabled = false;
                } else {
                    ins_nbWLSendBtn.disabled = true;
                }
            };
            // 操作栏
            ins_nbWLToolBar.id = 'nbwlToolBar_lx';
            ins_nbWLToolBar.style.display = 'none';
            ins_nbWebImLightContainer.append(ins_nbWLToolBar);
            var ins_nbWLSendBtn = doc.createElement('button');
            ins_nbWLSendBtn.id = 'nbwlSendBtn';
            ins_nbWLSendBtn.className = 'nb-webim-light-toolbar-send';
            ins_nbWLSendBtn.innerText = lang('chat_btn');
            ins_nbWLSendBtn.disabled = true;
            ins_nbWLToolBar.append(ins_nbWLSendBtn);
            ins_nbWLSendBtn.onclick = function (e) {
                chat_msgOfGuest();
            }
        }
    }
        , view_msg = function () {
        if (!doc.getElementById('nb_nodeboard_lx')) {
            ins_nb_nodeBoard.id = 'nb_nodeboard_lx';
            ins_nb_nodeBoard.className = 'nb-nodeboard-base nb-hide';
            ins_nbWebImLightContainer.append(ins_nb_nodeBoard);
            var ins_contain = doc.createElement('ins');
            ins_contain.className = 'nb-nodeboard-contain-base nb-nodeboard-contain';
            ins_nb_nodeBoard.append(ins_contain);
            var form_nb_nodeboard_form = doc.createElement('form');
            form_nb_nodeboard_form.id = 'nb_nodeboard_form_lx';
            form_nb_nodeboard_form.className = 'nb-board-form';
            ins_contain.append(form_nb_nodeboard_form);
            var ins_nb_nodeBoard_set = doc.createElement('ins');
            ins_nb_nodeBoard_set.id = 'nb_nodeboard_set_lx';
            ins_nb_nodeBoard_set.className = 'nb-nodeboard-set';
            form_nb_nodeboard_form.append(ins_nb_nodeBoard_set);
            // content
            var ins_nb_nodeBoard_content = doc.createElement('ins');
            ins_nb_nodeBoard_content.id = 'nb-nodeboard-content_lx';
            ins_nb_nodeBoard_set.append(ins_nb_nodeBoard_content);
            var textarea_nb_nodeboard_set_content_js = doc.createElement('textarea');
            textarea_nb_nodeboard_set_content_js.id = 'nb-nodeboard-set-content-js';
            textarea_nb_nodeboard_set_content_js.name = 'content';
            textarea_nb_nodeboard_set_content_js.placeholder = lang('leaveMsg_fromTipsContent');
            textarea_nb_nodeboard_set_content_js.className = 'nb-nodeboard-set-content nb-nodeboard-param';
            ins_nb_nodeBoard_content.append(textarea_nb_nodeboard_set_content_js);
            // user name
            var ins_nb_nodeBoard_name = doc.createElement('ins');
            ins_nb_nodeBoard_name.className = 'nb-nodeboard-name';
            ins_nb_nodeBoard_set.append(ins_nb_nodeBoard_name);
            var ins_icon_name = doc.createElement('ins');
            ins_icon_name.className = 'nb-nodeboard-icon nodeName';
            ins_nb_nodeBoard_name.append(ins_icon_name);
            var input_set_name = doc.createElement('input');
            input_set_name.placeholder = lang('leaveMsg_fromName');
            input_set_name.id = 'nb_nodeboard_set_name_lx';
            input_set_name.className = 'nb-nodeboard-input nb-nodeboard-param';
            input_set_name.name = 'userName';
            input_set_name.maxLength = 30;
            input_set_name.type = 'text';
            ins_nb_nodeBoard_name.append(input_set_name);
            // phone
            var ins_nb_nodeBoard_phone = doc.createElement('ins');
            ins_nb_nodeBoard_phone.id = 'nb_nodeboard_phone_lx';
            ins_nb_nodeBoard_phone.className = 'nb-nodeboard-name';
            ins_nb_nodeBoard_set.append(ins_nb_nodeBoard_phone);
            var ins_icon_phone = doc.createElement('ins');
            ins_icon_phone.className = 'nb-nodeboard-icon nodePhone';
            ins_nb_nodeBoard_phone.append(ins_icon_phone);
            var input_set_phone = doc.createElement('input');
            input_set_phone.placeholder = lang('leaveMsg_fromPhone');
            input_set_phone.id = 'nb_nodeboard_set_phone';
            input_set_phone.className = 'nb-nodeboard-input nb-nodeboard-param';
            input_set_phone.name = 'userPhone';
            input_set_phone.maxLength = 30;
            input_set_phone.type = 'text';
            ins_nb_nodeBoard_phone.append(input_set_phone);
            // email
            var ins_nb_nodeBoard_email = doc.createElement('ins');
            ins_nb_nodeBoard_email.id = 'nb_nodeboard_email_lx';
            ins_nb_nodeBoard_email.className = 'nb-nodeboard-name nb-nodeboard-ext-input';
            ins_nb_nodeBoard_set.append(ins_nb_nodeBoard_email);
            var ins_icon_email = doc.createElement('ins');
            ins_icon_email.className = 'nb-nodeboard-icon nodeMail';
            ins_nb_nodeBoard_email.append(ins_icon_email);
            var input_set_email = doc.createElement('input');
            input_set_email.placeholder = lang('leaveMsg_fromEmail');
            input_set_email.id = 'nb_nodeboard_set_email';
            input_set_email.className = 'nb-nodeboard-input nb-nodeboard-param';
            input_set_email.name = 'userEmail';
            input_set_email.maxLength = 30;
            input_set_email.type = 'text';
            ins_nb_nodeBoard_email.append(input_set_email);
            // state
            var ins_nb_nodeBoard_success = doc.createElement('ins');
            ins_nb_nodeBoard_success.id = 'nb_nodeboard_success_lx';
            ins_nb_nodeBoard_success.className = 'nb-nodeboard-success';
            ins_contain.append(ins_nb_nodeBoard_success);
            var ins_nb_success_box = doc.createElement('ins');
            ins_nb_success_box.className = 'nb-success-box';
            ins_nb_nodeBoard_success.append(ins_nb_success_box);
            var ins_nb_success_icon = doc.createElement('ins');
            ins_nb_success_icon.className = 'nb-success-icon';
            ins_nb_success_box.append(ins_nb_success_icon);
            var ins_nb_node_messagetitle = doc.createElement('ins');
            ins_nb_node_messagetitle.innerText = lang('leaveMsg_tipsTitle');
            ins_nb_node_messagetitle.id = 'nb_node_messagetitle';
            ins_nb_node_messagetitle.className = 'nb-success-title';
            ins_nb_success_box.append(ins_nb_node_messagetitle);
            var ins_nb_node_messagecontent = doc.createElement('ins');
            ins_nb_node_messagecontent.id = 'nb_node_messagecontent';
            ins_nb_node_messagecontent.className = 'nb-success-content';
            ins_nb_success_box.append(ins_nb_node_messagecontent);
            var ins_nb_nodeboard_tips = doc.createElement('ins');
            ins_nb_nodeboard_tips.id = 'nb-nodeboard-tips-js_lx';
            ins_nb_nodeboard_tips.className = 'nb-nodeboard-tips';
            ins_nb_nodeBoard_set.append(ins_nb_nodeboard_tips);
            // btn
            var ins_nb_node_contain = doc.createElement('ins');
            ins_nb_node_contain.id = 'nb_node_contain_lx';
            ins_nb_node_contain.className = 'nb-nodeboard-send';
            ins_contain.append(ins_nb_node_contain);
            var ins_nb_nodeBoard_send = doc.createElement('button');
            ins_nb_nodeBoard_send.id = 'nb_nodeboard_send_lx';
            ins_nb_nodeBoard_send.className = 'nb-nodeboard-send-btn nb-nodeboard-send-btn-0';
            ins_nb_nodeBoard_send.style = 'background-color: #4e6ef2;background-image: none;';
            ins_nb_nodeBoard_send.innerText = lang('leaveMsg_btnSubmit');
            ins_nb_node_contain.append(ins_nb_nodeBoard_send);
            // btn click
            ins_nb_nodeBoard_send.onclick = function () {
                ins_nb_nodeBoard_send.setAttribute('disabled', 'disabled');
                let phone = input_set_phone.value;
                let email = input_set_email.value;
                if (textarea_nb_nodeboard_set_content_js.value == '') {
                    ins_nb_nodeboard_tips.innerText = (lang('action_input') + ' ' + lang('leaveMsg_fromContent'));
                    ins_nb_nodeBoard_send.removeAttribute('disabled');
                } else if (input_set_name.value == '') {
                    ins_nb_nodeboard_tips.innerText = (lang('action_input') + ' ' + lang('leaveMsg_fromName'));
                    ins_nb_nodeBoard_send.removeAttribute('disabled');
                } else if (phone == '') {
                    ins_nb_nodeboard_tips.innerText = (lang('action_input') + ' ' + lang('leaveMsg_fromPhone'));
                    ins_nb_nodeBoard_send.removeAttribute('disabled');
                } else if (email == '') {
                    ins_nb_nodeboard_tips.innerText = (lang('action_input') + ' ' + lang('leaveMsg_fromEmail'));
                    ins_nb_nodeBoard_send.removeAttribute('disabled');
                } else {
                    let pattern_tel = new RegExp("^(\\+\\d{2}-)?0\\d{2,3}-\\d{7,8}$", 'i');
                    let pattern_phone = new RegExp("^1[3456789][0-9]{9}$", 'i');
                    if (!pattern_phone.test(phone) && !pattern_tel.test(phone)) {
                        ins_nb_nodeboard_tips.innerText = (lang('action_format_phone'));
                        ins_nb_nodeBoard_send.removeAttribute('disabled');
                    } else {
                        var innerText = lang('leaveMsg_tipsContent');
                        ins_nb_node_messagecontent.innerText = innerText.replace('lianChat_userName', input_set_name.value);
                        let pattern_mail = new RegExp("^[A-Za-zd0-9]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$", 'i');
                        if (!pattern_mail.test(email)) {
                            ins_nb_nodeboard_tips.innerText = (lang('action_format_email'));
                            ins_nb_nodeBoard_send.removeAttribute('disabled');
                        } else {
                            apiCheckOfAuth(PKS, ins_nb_nodeboard_tips, lang('leaveMsg_btnSubmit'));
                        }
                    }
                }
                return false;
            }
        }
    }
        , show_nbWebImLightContainer = function () {
        if (is_mobile()) {
            let style;
            if (win.screen.availWidth <= 320) {
                style = 'width:100%;bottom: 10px;right:0px;';
            } else {
                style = PKS.style.m_nbWebImLightContainer + PKS.style.ins_nbWebImLightContainer;
            }
            ins_nbWebImLightContainer.style = style;
        } else {
            ins_nbWebImLightContainer.style = PKS.style.ins_nbWebImLightContainer;
        }
    }
        , show_chat = function () {
        show_nbWebImLightContainer();
        ins_nbWLToggle.className = 'nb-webim-light-status-bar-toggle';
        ins_nbWLMessageContainer.style.display = 'block';
        ins_nbWLEditor.style.display = 'block';
        ins_nbWLToolBar.style.display = 'block';
        var title = lang('state_serverOnline');
        ins_nbWLTitle.innerText = title.replace('xxx', PKS.server.name);
        doc.getElementById('nbWebimLightEditor').focus();
        ins_nbWLMessageContainer.scrollTop = ins_nbWLMessageContainer.scrollHeight;
    }
        , show_msg = function () {
        show_nbWebImLightContainer();
        ins_nb_nodeBoard.style.display = 'grid';
        ins_nbWLToggle.className = 'nb-webim-light-status-bar-toggle';
    }
        , PKWS = {
        ws: null,
        timer_count: 0,
        //计时器
        interval_timer: null,
        is_online: true,
        is_getMsgOfNew: false,
        myTimer: function () {
            // 定时器具体实现方法
            //TODO 如果超过半小时没有交互，则关闭计时器
            if (this.timer_count >= 1800) {
                clearInterval(this.interval_timer);
            } else {
                this.timer_count += 30;
                this.send('OnlineServer');
                console.log('timer_count', this.timer_count);
            }
        },
        init_start_timer: function () {
            // 设置一个 30秒的轮询监听方法，避免页面关闭
            // 重置计数器
            this.timer_count = 0;
            if (this.interval_timer != null) {
                clearInterval(this.interval_timer);
                this.interval_timer = null;
            }
            this.interval_timer = setInterval(function () {
                PKWS.myTimer();
            }, 30000);
        },
        websocketInit: function () {
            this.ws.onopen = function (e) {
                console.log("连接服务器成功");
                PKWS.send('online');
            }

            this.ws.onclose = function (e) {
                console.log("服务器关闭");
                ins_nbWLTitle.innerText = lang('state_leaveMsg');
            }

            this.ws.onerror = function () {
                console.log("连接出错");
                ins_nbWLTitle.innerText = lang('state_leaveMsg');
            }

            // 这里接受服务器端发过来的消息
            this.ws.onmessage = function (e) {
                // console.log("接收消息", typeof e.data, e.data);
                let json = JSON.parse(e.data);
                if (json.hasOwnProperty('Inquiry')) {
                    switch (json.Inquiry) {
                        case 'online':
                            PKWS.send('OnlineServer');
                            break;
                        case 'noLine':
                            PKS.server.isOnline = false;
                            PKS.server.name = '';
                            PKS.server.id = '';
                            ins_nbWLTitle.innerText = lang('state_leaveMsg');
                            break;
                        case 'onLineServer':
                            PKS.server.isOnline = true;
                            if (json.hasOwnProperty('name')) {
                                PKS.server.name = json.name;
                                if (ins_nbWLMessageContainer.style.display !== 'block') {
                                    ins_nbWLTitle.innerText = lang('state_serverOnline_simple');
                                }
                                if (!PKWS.is_getMsgOfNew) {
                                    // 聊天历史
                                    PKWS.send('getChatMsg', {});
                                }
                            }
                            break;
                        case 'pushMsg':
                            if (json.hasOwnProperty('reply') && json.hasOwnProperty('userName')) {
                                chatbox_server(json.userName, json.time, json.reply);
                            }
                            break;
                        case 'resultMsg':
                            if (json.hasOwnProperty('list')) {
                                var list_json = JSON.parse(json.list);
                                console.log(list_json);
                                for (var listJsonElement of list_json) {
                                    switch (listJsonElement.msg_type) {
                                        case "guest":
                                            chatbox_guest(listJsonElement.time, listJsonElement.reply);
                                            break;
                                        case "server":
                                            if (listJsonElement.hasOwnProperty('reply') && listJsonElement.hasOwnProperty('userName')) {
                                                chatbox_server(listJsonElement.userName, listJsonElement.time, listJsonElement.reply);
                                            }
                                            break;
                                    }
                                }
                            }
                            break;
                    }
                }
            }
        },
        isOnlineCurrUser: function () {
            if (this.ws) {
                if (this.ws.readyState === WebSocket.OPEN) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        },
        createOrConnectWebSocket: function () {
            if (!this.ws) {
                if (win.WebSocket) {
                    this.ws = new WebSocket('wss://lianchat.pkcms.cn:8001');
                    PKWS.websocketInit();
                }
            } else {
                if (!PKWS.isOnlineCurrUser()) {
                    this.ws = null;
                    PKWS.createOrConnectWebSocket();
                }
            }
            // 开启定时器
            PKWS.init_start_timer();
        },
        send: function (action, params) {
            var params_send = Object.assign(Object.create(null), PKS.guest);
            if (typeof params == "object") {
                params_send = Object.assign(params_send, params);
            }
            var noLine = [WebSocket.CLOSING, WebSocket.CLOSED];
            if (noLine.indexOf(this.ws.readyState) > -1) {
                this.is_online = false;
                clearInterval(this.interval_timer);
            } else {
                this.timer_count = 0;
                this.ws.send(JSON.stringify({action, params: params_send}));
            }
        }
    }
        , lianChat = function () {
    };

    ins_nbWLToggle.onclick = function () {
        console.log(PKS.server.isOnline);
        let is_show = false;

        if (PKS.server.isOnline) {
            // 客服在线
            if (doc.getElementById('nb_nodeboard_lx')) {
                doc.getElementById('nb_nodeboard_lx').remove();
            }
            if (doc.getElementById('nbwlMessageContainer')) {
                is_show = ins_nbWLMessageContainer.style.display === 'block';
                if (is_show) {
                    ins_nbWLTitle.innerText = lang('state_serverOnline_simple');
                    ins_nbWebImLightContainer.style = PKS.style.ins_nodeboard_hide();
                    ins_nbWLMessageContainer.style.display = 'none';
                    ins_nbWLEditor.style.display = 'none';
                    ins_nbWLToolBar.style.display = 'none';
                    ins_nbWLToggle.className = 'nb-webim-light-status-bar-toggle nb-webim-light-hide';
                } else {
                    show_chat();
                }
            } else {
                view_chat();
                setTimeout(function () {
                    show_chat();
                }, 500);
            }
        } else {
            // 客服不在线
            if (doc.getElementById('nbwlMessageContainer')) {
                ins_nbWLMessageContainer.remove();
                ins_nbWLEditor.remove();
                ins_nbWLToolBar.remove();
            }
            if (doc.getElementById('nb_nodeboard_lx')) {
                is_show = ins_nb_nodeBoard.style.display === 'grid';
                if (is_show) {
                    ins_nbWebImLightContainer.style = PKS.style.ins_nodeboard_hide();
                    ins_nb_nodeBoard.style.display = 'none';
                    ins_nbWLToggle.className = 'nb-webim-light-status-bar-toggle nb-webim-light-hide';
                } else {
                    show_msg();
                }
            } else {
                view_msg();
                setTimeout(function () {
                    show_msg();
                }, 500);
            }
        }
        if (is_mobile()) {
            ins_newBridge.style.display = is_show ? 'none' : 'block';
        }
    };
    lianChat.prototype.init = function () {
        apiCheckOfNowPage(PKS, function () {
            localLayui();
            if (!doc.getElementById('newBridge_lx')) {
                ins_newBridge.id = 'newBridge_lx';
                ins_newBridge.style.display = is_mobile() ? 'none' : 'block';
                doc.body.append(ins_newBridge);
                // 外框
                ins_nbWebImLightContainer.id = 'nbWebImLightContainer_lx';
                ins_nbWebImLightContainer.className = 'nb-webim-light-windowsos maxMessageContainer';
                ins_nbWebImLightContainer.style = PKS.style.ins_nodeboard_hide();
                ins_newBridge.append(ins_nbWebImLightContainer);
                // 头部状态栏
                var ins_nbWLStatusBar = doc.createElement('ins');
                ins_nbWLStatusBar.id = 'nbwlStatusBar_lx';
                ins_nbWebImLightContainer.append(ins_nbWLStatusBar);
                // 标题
                ins_nbWLTitle.innerText = lang('state_leaveMsg');;
                ins_nbWLTitle.className = 'nb-webim-light-status-bar-title';
                ins_nbWLStatusBar.append(ins_nbWLTitle);
                // 切换
                ins_nbWLToggle.id = 'nbwlToggle_lx';
                ins_nbWLToggle.className = 'nb-webim-light-status-bar-toggle nb-webim-light-hide';
                ins_nbWLStatusBar.append(ins_nbWLToggle);
                var ins_icon = doc.createElement('ins');
                ins_icon.className = 'nb-webim-light-toggle-icon';
                ins_nbWLToggle.append(ins_icon);
                //PKWS.createOrConnectWebSocket();
            }
        });
    };
    lianChat.prototype.btnRun = function () {
        ins_nbWLToggle.click();
    }
    doc.onkeydown = function (event) {
        var e = event || win.event || arguments.callee.caller.arguments[0];
        if (e && e.keyCode == 13) { // enter 键
            console.log('按回车了');
            if (doc.getElementById('nbwlSendBtn')) {
                chat_msgOfGuest();
            }
        }
    };
    win.lianChat = new lianChat();

}(window, document);
