var auState = 'on';//是否开启声音
$.extend({
    /**
     * 加载提示框
     */
    loadingHtml: function () {
        return '<li id="loadingHtml"><div class="text-center centers" style=" margin: 20px 0;position: relative;z-index: 99999;">' +
            '<img src="http://static.wz169.net/plugins/layer/theme/default/loading-2.gif" /></div></li>';
    },
    /**
     * 滚动到div最底部
     */
    scrollBottom: function ($messageList) {
        $messageList.scrollTop($messageList[0].scrollHeight); //滚动到div最底部
    },
    /**
     * 换行转换
     * @param content
     * @returns {*}
     * @constructor
     */
    transferString: function (content) {
        var string = content;
        try {
            string = string.replace(/\\r\n/g, "<br/>");
            string = string.replace(/\r\n/g, "<br/>")
            string = string.replace(/\\n/g, '<br/>');
            string = string.replace(/\n/g, '<br/>');
        } catch (e) {
            alert(e.message);
        }
        return string;
    },
    /**
     * 初始化音频
     */
    initAudio: function () {
        var e = document.getElementById("chat-message-audio-source").src
            , b = document.getElementById("chat-message-audio");
        b.src = "";
        var p = b.play();
        p && p.then(function () {
        }).catch(function (e) {
        });
        b.src = e;
        $(document).unbind("click", $.initAudio);
    },
    /**
     * 计算输入框光标的换行位置
     * @param el
     */
    getCaret: function (el) {
        if (el.selectionStart) {
            return el.selectionStart;
        } else if (document.selection) {
            el.focus();
            var r = document.selection.createRange();
            if (r == null) {
                return 0;
            }
            var re = el.createTextRange(),
                rc = re.duplicate();
            re.moveToBookmark(r.getBookmark());
            rc.setEndPoint('EndToStart', re);
            return rc.text.length;
        }
        return 0;
    },
    /**
     * 加载面板窗口
     */
    loadWindow: function () {
        let _h = parseFloat($(window).height()), $footerH = $(".chat-footer").height(), $chatBody = $(".chat-body"),
            $messageList = $('.message-list'), chatBodyH = _h - $footerH;
        $chatBody.height(chatBodyH);
        $messageList.height(chatBodyH);
        $.scrollBottom($messageList);//滚动到div最底部
    },
    /**
     * 将时间戳转为时间日期
     * @param unixTime
     * @param format YmdHis
     * @param timeZone
     * @returns {string}
     */
    getLocalTime: function (unixTime, format = 'H:i', timeZone = 8) {
        if (typeof (timeZone) === 'number') {
            unixTime = parseInt(unixTime) + timeZone * 60 * 60;
        }
        let time = new Date(unixTime * 1000);
        let year = time.getUTCFullYear(), month = (time.getUTCMonth() + 1), day = time.getUTCDate();
        let hour = time.getUTCHours(), minute = time.getUTCMinutes(), seconds = time.getUTCSeconds();
        format = format.replace('Y', year.toString());
        format = format.replace('m', month.toString());
        format = format.replace('d', day.toString());
        format = format.replace('H', hour.toString());
        format = format.replace('i', minute.toString());
        format = format.replace('s', seconds.toString());
        return format;
    },
    /**
     * 设置最后的消息数据
     * @param $lastMaxMessageId
     */
    setLastMaxMessageId: function ($lastMaxMessageId) {
        let $messageIdObj = $("#lastMaxMessageId");
        if (parseInt($lastMaxMessageId) > parseInt($messageIdObj.val())) {
            $messageIdObj.val($lastMaxMessageId);
        }
    },
    /**
     * 监听有没最新消息
     */
    listenMessage: function () {
        var $messageBox = $('#m-message ul');
        $.ajax({
            type: "POST",
            url: "/AutoOnlineService/listen",
            dataType: 'json',
            data: {"uuid": $conversationId, 'lastMaxMessageId': $("#lastMaxMessageId").val()},
            success: function (data) {
                if (data.code == 1) {
                    $messageBox.find(".not-message").remove();
                    $messageBox.append(data.data.template);
                    $.setLastMaxMessageId(data.data.lastMaxMessageId);
                    $.scrollBottom($('#m-message'));//滚动到div最底部
                    if (auState !== 'off') {
                        document.getElementById("chat-message-audio").play();//播放声音
                    }
                }
            }
        });
    },
    /**
     * 加载消息列表
     */
    messageList: function ($uuid) {
        var $messageBox = $('#m-message ul');
        $messageBox.html($.loadingHtml());
        $.ajax({
            type: "POST",
            url: "/AutoOnlineService/message_list",
            dataType: 'json',
            data: {"uuid": $uuid},
            success: function (data) {
                $messageBox.find("#loadingHtml").remove();
                $messageBox.html('<li class="finish"><div class="finish-bubble">欢迎您的咨询，期待为您服务!</div></li>');
                if (data.code == 1) {
                    if (data.data.message == 1) {
                        $messageBox.append(data.data.template);
                        $.setLastMaxMessageId(data.data.lastMaxMessageId);
                        $.scrollBottom($('#m-message'));//滚动到div最底部
                    }
                    setInterval(function () {
                        $.listenMessage();  //开启监听
                    }, 2000);
                } else {
                    layer.msg(data.msg, {icon: 2});
                }
            }
        });
    },
    /**
     * 格式化输出
     */
    formatContent: function (data) {
        var $messageContent = $.transferString(data['message']['content']);
        switch (parseInt(data['message']['messageType'])) {
            case 1 :
                $messageContent = '<img src="' + data['message']['fileInfo']['url'] + '"  class="upload_img" style="max-width:100px" />';
                break; //图片
            case 2 :
                $messageContent = '<a href="' + data['message']['fileInfo']['url'] + '" target="_blank"><img src="/static/online/file/' + data['message']['fileInfo']['ext'] + '.png" style="max-width:100px" /> <br />[下载]</a>';  //下载文件
                break; //文件
        }
        var html = '<li class="right"><div class="info"><div class="name-box">\n' +
            '<div class="name">您</div>\n' +
            '<div class="t">' + $.getLocalTime(data['message']['time']) + '</div>\n' +
            '</div>\n' +
            '<div class="user-msg-content fs16">' + $messageContent + '</div>\n' +
            ' </div>\n' +
            '</li>';
        var $notMessage = $("#m-message").find(".not-message");
        if ($notMessage.length > 0) {
            $notMessage.remove();
        }
        $("#m-message ul").append(html);
    },
    removeScriptTags: function (htmlString) {
        return htmlString.replace(/<script[\s\S]*?<\/script>/gi, '');
    },
    //发送消息
    onSubmit: function ($sendContent = '') {
        var $contentObj = $("#sendContent");
        if ($.trim($sendContent).length <= 0) {
            $sendContent = $contentObj.val();
        }
        if ($.trim($sendContent).length <= 0) {
            layer.msg('请输入发送内容'); //请输入发送内容
            return false;
        }
        var $showContent = $sendContent.replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r');//显示聊天记录列表
        $showContent=$.removeScriptTags($showContent);
        var saveData = {"message": {"content": $showContent, "messageType": 0, "time": $timestamp}};
        $.formatContent(saveData);
        $contentObj.focus().val('');
        $.scrollBottom($('#m-message'));
        $.post('/AutoOnlineService/send', {'uuid': $conversationId, 'messageType': 0, 'content': saveData.message.content}, function (data) {
            if (data.code) {
                $.setLastMaxMessageId(data.data.lastMaxMessageId);
            } else {
                layer.msg(data.msg);
            }
        })
    },
    hint: function () {
        if (auState === "on") {
            $('.state-mp3').removeClass('icon-shengyin').addClass('icon-shengyinguan1');
            auState = 'off';
            layer.msg('关闭提示音');
        } else {
            $('.state-mp3').removeClass('icon-shengyinguan1').addClass('icon-shengyin');
            auState = 'on';
            layer.msg('开启提示音');
        }
    }

})
$(function () {
    $(document).on("click", $.initAudio);
    $.loadWindow();
    $.messageList($conversationId);
    //enter发送，ctrl+enter换行
    $('#sendContent').keydown(function (event) {
        //按下enter
        if ((event.keyCode == 13 || event.keyCode == 10) && !event.shiftKey && !event.ctrlKey && !event.altKey) {
            event.returnValue = false;
            $.onSubmit();
            return false;
            //ctrl+enter换行
        } else if ((event.keyCode == 13 || event.keyCode == 10) && event.ctrlKey) {
            var curr = $.getCaret(this);
            var val = jQuery(this).val();
            var end = val.length;
            this.value = val.substr(0, curr) + '\r\n' + val.substr(curr, end);
        }
    });
    //单机聊天框内容重新发送内容
    $(document).on("click", ".oneSendMessage", function () {
        let $title = $(this).attr("title");
        if ($.trim($title).length > 0) {
            $.onSubmit($title);
        }
    })
    //提交留言咨询
    $(document).on("click", ".net_callBack_btn", function () {
        var $input = $("#net_callBack_input"), mobile = $input.val();
        if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(mobile))) {
            layer.msg("请输入有效的手机号码");
            return false;
        }
        var $loading = layer.load();
        $.post('/AutoOnlineService/mobile', {'uuid': $conversationId, 'mobile': mobile}, function (data) {
            layer.close($loading);
            if (data.code == 1) {
                $input.val('').focus();
                layer.msg(data.msg, {icon: 1});
            } else {
                layer.msg(data.msg);
            }
        })
        return false;
    })
    //点击显示大图
    $(document).on("click", ".upload_img", function () {
        var src = $(this).attr("src");
        var _w = parseInt($(window).width());//获取浏览器的宽度
        var _h = parseInt($(window).height());//获取浏览器的宽度
        var area;
        var img = new Image();
        // 改变图片的src
        img.src = src;
        img.onload = function () {
            if (img.width > _w) {
                area = ["60%"];
            } else {
                if (img.height > _h) {
                    area = ['60%', "80%"];
                } else {
                    area = [img.width + "px", img.height + "px"];
                }
            }
            layer.open({
                type: 1,
                shade: false,
                area: area,
                title: false,
                content: '<img src="' + src + '"  style=" max-width:100%; max-height:100%" />',
                success: function (layero, index) {
                    layer.iframeAuto(index);
                }
            });
        }
    })
})