1/* exported addBtnActionNewTable */
2/**
3 * Add button action for your toolbar button
4 *
5 * @param  {jQuery}   $btn  Button element to add the action to
6 * @param  {Array}    props Associative array of button properties
7 * @param  {string}   edid  ID of the editor textarea
8 * @return {string}   If button should be appended return the id for in aria-controls,
9 *                    otherwise an empty string
10 */
11window.addBtnActionNewTable = function addBtnActionNewTable($btn, props, edid) {
12    'use strict';
13
14    $btn.click(function () {
15        var editform = jQuery('#dw__editform')[0];
16        var ed = jQuery('#' + edid)[0];
17
18        /**
19         * Add new textarea to the form
20         *
21         * @param {string} name the name attribute of the new field
22         * @param {string} val the value attribute of the new field
23         *
24         * @return {void}
25         */
26        function addField(name, val) {
27            var pos_field = document.createElement('textarea');
28            pos_field.name = 'edittable__new[' + name + ']';
29            pos_field.value = val;
30            pos_field.style.display = 'none';
31            editform.appendChild(pos_field);
32        }
33
34        var sel;
35        if (window.DWgetSelection) {
36            sel = window.DWgetSelection(ed);
37        } else {
38            sel = window.getSelection(ed);
39        }
40        addField('pre', ed.value.substr(0, sel.start));
41        addField('text', ed.value.substr(sel.start, sel.end - sel.start));
42        addField('suf', ed.value.substr(sel.end));
43
44        // adora belle requires a range, even though we handle ranging ourselve here
45        var range = document.createElement('input');
46        range.name = 'range';
47        range.value = '0-0';
48        range.type = 'hidden';
49        editform.appendChild(range);
50
51        // Fake POST
52        var editbutton = document.createElement('input');
53        editbutton.name = 'do[edit]';
54        editbutton.type = 'submit';
55        editbutton.style.display = 'none';
56        editform.appendChild(editbutton);
57        // Prevent warning
58        window.textChanged = false;
59        editbutton.click();
60
61    });
62    return 'click';
63};
64