
$(document).ready(function () {
    //公共数组存放文本域
    var bigArr = [];
    //公共下标
    var ind = 0;

    //文本域禁用键盘
    $('.wrap').on('keydown', 'textarea', function (ev) {
        if (ev.keyCode == 37 || ev.keyCode == 38 || ev.keyCode == 39 || ev.keyCode == 40) {
            return true;
        // } else if (ev.keyCode == 8) {   //删除事件
        //     ev.preventDefault();
        //     var position = posCursor();
        //     if (!(bigArr[ind] instanceof Array)) {
        //         bigArr[ind] = [];
        //     }
        //     var gindex = getArrIndex(bigArr[ind], position[0]);
        //     bigArr[ind].splice(gindex, 1);
        //     $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
        //     var temp = bigArr[ind].slice(0, gindex);
        //     var strLength = 0;
        //     for (var i = 0; i < temp.length; i++) {
        //         strLength += temp[i].length;
        //     }
        //     setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
        //     // console.log(position)                
        //     // var potext =  $('.textcon li').eq(ind).find($('textarea')).text();
        //     // console.log(potext)
        //     // var potextArr = potext.split('');
        //     // potextArr.splice(position[1]-1,1);
        //     // var newpotext = potextArr.join('');
        //     // console.log(newpotext)
        //     // $('.textcon li').eq(ind).find($('textarea')).text(newpotext);
        // } else if (ev.keyCode == 13) {  //回车换行事件
        //     ev.preventDefault();
        //     var text = '\n';
        //     var gindex = getArrIndex(bigArr[ind], posCursor()[0]);
        //     bigArr[ind].splice(gindex + 1, 0, text);
        //     $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
        //     var temp = bigArr[ind].slice(0, gindex + 1);
        //     var strLength = 0;
        //     for (var i = 0; i < temp.length; i++) {
        //         strLength += temp[i].length;
        //     }
        //     strLength += text.length;
        //     setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
        // } 
        }else {
            ev.preventDefault();
        }
    })

    //光标问题1
    var isIE = !(!document.all);
    function posCursor() {
        var liid = $('.textcon li').eq(ind).find('textarea').attr('id', 'ta' + ind).attr('id');
        var start = 0, end = 0;
        var oTextarea = document.getElementById(liid);
        if (isIE) {
            var sTextRange = document.selection.createRange();
            if (sTextRange.parentElement() == oTextarea) {
                var oTextRange = document.body.createTextRange();
                oTextRange.moveToElementText(oTextarea);
                for (start = 0; oTextRange.compareEndPoints("StartToStart", sTextRange) < 0; start++) {
                    oTextRange.moveStart('character', 1);
                }
                for (var i = 0; i <= start; i++) {
                    if (oTextarea.value.charAt(i) == '\n') {
                        start++;
                    }
                }
                oTextRange.moveToElementText(oTextarea);
                for (end = 0; oTextRange.compareEndPoints('StartToEnd', sTextRange) < 0; end++) {
                    oTextRange.moveStart('character', 1);
                }
                for (var i = 0; i <= end; i++) {
                    if (oTextarea.value.charAt(i) == '\n') {
                        end++;
                    }
                }
            }
        } else {
            start = oTextarea.selectionStart;
            end = oTextarea.selectionEnd;
        }
        return [start, end];
    }

    //公式问题

    //tab切换 
    function init(i) {
        $('.lists li').eq(i).addClass('actived').siblings().removeClass('actived');
        $('.textcon li').eq(i).show().siblings().hide();
    }

    //初始化显示
    $('.lists li').eq(0).addClass('actived').siblings().removeClass('actived');
    $('.textcon li').eq(0).show().siblings().hide();

    //点击切换显示
    function clickind() {
        $('.lists li').click(function () {
            ind = $(this).index();
            $(this).addClass('actived').siblings().removeClass('actived');
            $('.textcon li').eq(ind).show().siblings().hide();
            getSE(ind);
        });
    }

    //初始化textarea
    clickind();

    //公式对应文本域  获取当前文本域光标位置
    function getSE(ind) {
        $('.textcon li').eq(ind).find('textarea').on('click', posCursor);
    }

    //新增公式
    $('.addnew').on('click', function () {
        //prompt弹窗
        // var name = prompt("请输入新的公式名", "");
        // if (name == '' || name === null) {
        //     return
        // }
        // var newlis = document.createElement('li');
        // $('.lists').append($(newlis).text(name));
        // var newTextP = document.createElement('li');
        // var newTextC = document.createElement('textarea');
        // $('.textcon').append($(newTextP).append($(newTextC)));
        //prompt弹窗新增下标
        // ind = $('.lists li').length - 1;
        // init(ind);
        // clickind(ind)

        //封装弹窗  
        $('.mark').css('display','block');
    })

    //关闭弹窗
    //点击关闭
    $('.closem').on('click',function(){
        $('.mark').css('display','none');
    });
    //点击取消
    $('.cancm').on('click',function(){
        $('.setname').val('');
        $('.mark').css('display','none');
    });
    //点击确定
    $('.surem').on('click',function(){
        var sname =  $('.setname').val();
        if(!sname.trim().length){
            alert('这是必填项！');                    
        }else{
            var newlis = document.createElement('li');
            $('.lists').append($(newlis).text(sname));
            var newTextP = document.createElement('li');
            var newTextC = document.createElement('textarea');
            $('.textcon').append($(newTextP).append($(newTextC)));
            //新增下标
            ind = $('.lists li').length - 1;
            init(ind);
            clickind(ind)
            $('.setname').val('');
            $('.mark').css('display','none');
        }
    
    });
    
    //删除公式
    $('.delete').on('click', function () {
        $('.lists li').eq(ind).remove();
        $('.textcon li').eq(ind).remove();
        init(0);
        ind = 0;
    })

    //按钮问题
    //动态渲染按钮
    var opts = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '(', ')', '如果', '那么', '+', '-', '*', '%', '/', '且', '或', '非', '<', '>', '!=', '<=', '>=','del','重置'];
    for (var i = 0; i < opts.length; i++) {
        var keybtn = document.createElement('a');
        $(keybtn).text(opts[i]);
        $('.keys').append(keybtn);
    }

    //模拟下拉菜单
    $('.selected').on('click', function () {
        $('.sels').slideToggle();
        var selhei = $('.sels').height();
        if (selhei == 1) {
            $('.iconm').css({ 'border-bottom': 'solid 5px transparent', 'border-top': 'solid 5px #000', 'top': '64px' });
        } else {
            $('.iconm').css({ 'border-bottom': 'solid 5px #000', 'border-top': 'solid 5px transparent', 'top': '58px' })
        }
    })
    $('.iconm').on('click', function () {
        $('.sels').slideToggle();
        var selhei = $('.sels').height();
        if (selhei == 1) {
            $('.iconm').css({ 'border-bottom': 'solid 5px transparent', 'border-top': 'solid 5px #000', 'top': '64px' });
        } else {
            $('.iconm').css({ 'border-bottom': 'solid 5px #000', 'border-top': 'solid 5px transparent', 'top': '58px' })
        }
    })

    

    //点击按钮获取文字
    $('.sels').on('click', 'li', function (e) {
        $('.selected').text(text);//文字显示在下拉菜单合起的地方
        $('.sels').slideUp();
        $('.iconm').css({ 'border-bottom': 'solid 5px #000', 'border-top': 'solid 5px transparent', 'top': '58px' })
        if (!(bigArr[ind] instanceof Array)) {
            bigArr[ind] = [];
        }
        var text = $(e.target).text();
        // console.log(text)
        var gindex = getArrIndex(bigArr[ind], posCursor()[0]);
        bigArr[ind].splice(gindex + 1, 0, text);
        $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
        var temp = bigArr[ind].slice(0, gindex + 1);
        var strLength = 0;
        for (var i = 0; i < temp.length; i++) {
            strLength += temp[i].length;
        }
        strLength += text.length;
        setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
    })
    //点击虚拟键盘获取文字
    $('.keys').on('click', 'a', function (e) {
        if (!(bigArr[ind] instanceof Array)) {
            bigArr[ind] = [];
        }
        var text = $(e.target).text();
        if(text=='del'){
            var position = posCursor();
            if (!(bigArr[ind] instanceof Array)) {
                bigArr[ind] = [];
            }
            var gindex = getArrIndex(bigArr[ind], position[0]);
            bigArr[ind].splice(gindex, 1);
            $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
            var temp = bigArr[ind].slice(0, gindex);
            var strLength = 0;
            for (var i = 0; i < temp.length; i++) {
                strLength += temp[i].length;
            }
            setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
        }else if(text=='如果'){
            if(bigArr[ind].length){
                var text1 = '\n';
                var gindex = getArrIndex(bigArr[ind], posCursor()[0]);
                bigArr[ind].splice(gindex + 1, 0, text1 , text);
                $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
                var temp = bigArr[ind].slice(0, gindex + 2);
                var strLength = 0;
                for (var i = 0; i < temp.length; i++) {
                    strLength += temp[i].length;
                }
                strLength += text.length;
                setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
            }else{
                var gindex = getArrIndex(bigArr[ind], posCursor()[0]);
                bigArr[ind].splice(gindex + 1, 0, text);
                $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
                var temp = bigArr[ind].slice(0, gindex + 1);
                var strLength = 0;
                for (var i = 0; i < temp.length; i++) {
                    strLength += temp[i].length;
                }
                strLength += text.length;
                setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
            }
        }else if(text=='重置'){
            console.log('re')
            location.reload();
        }else{
            var gindex = getArrIndex(bigArr[ind], posCursor()[0]);
            bigArr[ind].splice(gindex + 1, 0, text);
            $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
            var temp = bigArr[ind].slice(0, gindex + 1);
            var strLength = 0;
            for (var i = 0; i < temp.length; i++) {
                strLength += temp[i].length;
            }
            strLength += text.length;
            setSelectionPos($('.textcon li').eq(ind).find($('textarea'))[0], strLength);
        }
        
    })

    //点击转化按钮

    $('.word').on('click', function () { //文字表达式
        $('.textcon li').eq(ind).find($('textarea')).text(bigArr[ind].join(''));
    });

    $('.func').on('click', function () {
        var newArr = bigArr[ind].join(',').split(',');
        for (var i = 0; i < newArr.length; i++) {
            if (newArr[i] == '如果') {
                newArr[i] = 'if';
            } else if (newArr[i] == '那么') {
                newArr[i] = '{';
            } else if (newArr[i] == '\n') {
                newArr[i] = '};\n';
            } else if (newArr[i] == '且') {
                newArr[i] = '&&';
            } else if (newArr[i] == '非') {
                newArr[i] = '!';
            } else if (newArr[i] == '或') {
                newArr[i] = '||';
            }
        }
        if (!(newArr[newArr.length - 1] == '};\n')) {
            newArr.push('};\n');
        }
        var strf = newArr.join('');
        $('.textcon li').eq(ind).find($('textarea')).text(strf);
    });

    $('.cond').on('click', function () {
        var newStr = bigArr[ind].join('');
        var regex = /[^\(\)]+(?=\))/g;
        var strarr=newStr.match(regex);
        $('.textcon li').eq(ind).find($('textarea')).text(strarr.join('\n'));
    });

    // 根据字符串的位置获取光标在数组中的位置
    function getArrIndex(textContentArr, strIndex) {
        var num = 0;
        for (var i = 0; i < textContentArr.length; i++) {
            num += textContentArr[i].length;
            if (num >= strIndex) {
                return i;
            }
        }
    }
    // getArrIndex(['如果','非','1','那么','aaaa'],7);

    //设置光标方法  兼容
    function setSelectionPos(elem, ind) {
        elem.focus();
        if (elem.setSelectionRange) {
            elem.setSelectionRange(ind, ind);
        } else {
            var Range = elem.createTextRange();
            Range.moveStart('character', ind);
            Range.moveEnd('character', ind);
            Range.select();
        }
    }

    //公式示例
    // bigArr[0] = ['如果','(','aaaa','>','1',')','那么','bbbb','*','3'];
    // $('.textcon li').eq(0).find($('textarea')).text(bigArr[0].join(''));
    
});

    //添加进去的元素如何转化成公式