(function() {
    function insert_at_caret(txtarea, text) {
        var scrollPos = txtarea.scrollTop;
        var strPos = 0;
        var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? 
            "ff" : (document.selection ? "ie" : false ) );
        if (br == "ie") { 
            txtarea.focus();
            var range = document.selection.createRange();
            range.moveStart ('character', -txtarea.value.length);
            strPos = range.text.length;
        }
        else if (br == "ff") strPos = txtarea.selectionStart;

        var front = (txtarea.value).substring(0,strPos);  
        var back = (txtarea.value).substring(strPos,txtarea.value.length); 
        txtarea.value=front+text+back;
        strPos = strPos + text.length;
        if (br == "ie") { 
            txtarea.focus();
            var range = document.selection.createRange();
            range.moveStart ('character', -txtarea.value.length);
            range.moveStart ('character', strPos);
            range.moveEnd ('character', 0);
            range.select();
        }
        else if (br == "ff") {
            txtarea.selectionStart = strPos;
            txtarea.selectionEnd = strPos;
            txtarea.focus();
        }
        txtarea.scrollTop = scrollPos;
    }

    $(function() {
        var button = $('<button>Вставить смайлик</button>')
        button.click(show).css('display', 'block').css('margin-bottom', '3px')

        var list = $('<div title="Выбор смайлика"></div>')
        list.dialog({autoOpen: false, width: '500px'})
        list.has_smileys = false

        var editor = $('.bbcode_editor')
        editor.before(button)

        function smiley_onclick() {
            insert_at_caret(editor.get(0), this.getAttribute('title'))
        }

        function show() {
            list.dialog('open')
            if (list.has_smileys) {
                return false
            }

            list.has_smileys = true
            $.each(tesall_smiley_list, function(index, value) {
                var smiley = document.createElement('img')
                smiley.setAttribute('src', '/media/smileys/' + value[1])
                smiley.setAttribute('title', value[0])
                smiley.style.padding = '3px'
                smiley.style.cursor = 'pointer'
                smiley.onclick = smiley_onclick
                list.append(smiley)
            })
            list.dialog({position: 'right center'})

            return false
        }
    })
})()

