var Qs_Form_Element_MultiText = { message: new qs.Message({ 'en': { 'add': 'add', 'up': 'up', 'down': 'down', 'delete': 'delete', 'confirmDelete': 'Do you really want to delete this {itemName}?' }, 'ua': { 'add': 'додати', 'up': 'вгору', 'down': 'вниз', 'delete': 'видалити', 'confirmDelete': 'Ви дійсно хочете видалити цей {itemName}?' }, 'ru': { 'add': 'добавить', 'up': 'вверх', 'down': 'вниз', 'delete': 'удалить', 'confirmDelete': 'Вы действительно хотите удалить этот {itemName}?' } }), options: {}, elementOptions: {}, init: function (id, options) { Qs_Form_Element_MultiText.setElementOptions(id, options); Qs_Form_Element_MultiText.updateOptions(id); }, getElementOptions: function (id) { if (typeof Qs_Form_Element_MultiText.elementOptions[id] == 'undefined') { return null; } return Qs_Form_Element_MultiText.elementOptions[id]; }, getElementOption: function (id, name) { var options = Qs_Form_Element_MultiText.getElementOptions(id); if (options) { if (typeof options[name] != 'undefined') { return options[name]; } } return null; }, setElementOption: function (id, name, value) { var options = Qs_Form_Element_MultiText.getElementOptions(id); if (options) { options[name] = value; } else { Qs_Form_Element_MultiText.elementOptions[id] = {name: value}; } }, setElementOptions: function (id, options) { Qs_Form_Element_MultiText.elementOptions[id] = options; }, _renderInput: function(type, name, attribs, options) { var value = ''; var className = ''; if (attribs) { id = attribs.id; className = attribs['class']; } if (!className) { className = type; } html = ''; return html; }, add: function (id) { var isNumering = Qs_Form_Element_MultiText.getElementOption(id, 'isNumering'); var isSortable = Qs_Form_Element_MultiText.getElementOption(id, 'isSortable'); var numeringFormat = Qs_Form_Element_MultiText.getElementOption(id, 'numeringFormat'); var itemName = Qs_Form_Element_MultiText.getElementOption(id, 'itemName'); var name = Qs_Form_Element_MultiText.getElementOption(id, 'name'); var table = document.getElementById(id); var row = ''; if (isNumering) { row += ''; row += numeringFormat.replace(/%number%/, '' + ($('tbody > tr', table).size() + 1) + ''); row += ''; } row += '' + Qs_Form_Element_MultiText._renderInput('text', name, {'class': 'text'}); + ''; row += ''; if (Qs_Form_Element_MultiText.getElementOption(id, 'isSortable')) { row += '' + Qs_Form_Element_MultiText.message.get('up') + ' | '; row += '' + Qs_Form_Element_MultiText.message.get('down') + ' | '; } row += '' + Qs_Form_Element_MultiText.message.get('delete') + ""; row += ''; $('#' + id + ' tbody').append(row); row += ''; Qs_Form_Element_MultiText.updateOptions(id); return false; }, up: function (a, id) { var row = qs.dom.getParentTag(a, 'TR'); var topRow = qs.dom.getPreviousTag(row, 'TR'); if (topRow) { var tbody = qs.dom.getParentTag(topRow, 'TBODY'); tbody.insertBefore(row, topRow); Qs_Form_Element_MultiText.blink(id, row); Qs_Form_Element_MultiText.updateNumeration(id); Qs_Form_Element_MultiText.updateOptions(id); } return false; }, down: function (a, id) { var row = qs.dom.getParentTag(a, 'TR'); var bottomRow = qs.dom.getNextTag(row, 'TR'); if (bottomRow) { var tbody = qs.dom.getParentTag(row, 'TBODY'); tbody.insertBefore(bottomRow, row); Qs_Form_Element_MultiText.blink(id, row); Qs_Form_Element_MultiText.updateNumeration(id); Qs_Form_Element_MultiText.updateOptions(id); } return false; }, blink: function (id, row) { var idTimer = Qs_Form_Element_MultiText.getElementOption(id, 'blinkTimer'); if (idTimer) { clearTimeout(idTimer); } row.className = 'moved'; idTimer = setTimeout(function(){row.className = '';}, 1000); Qs_Form_Element_MultiText.setElementOption(id, 'blinkTimer', idTimer); }, del: function (a, id) { var itemName = Qs_Form_Element_MultiText.getElementOption(id, 'itemName'); var msg = _.str.tpl(Qs_Form_Element_MultiText.message.get('confirmDelete'), {itemName: itemName}); if (confirm(msg)) { var row = qs.dom.getParentTag(a, 'TR'); if (row) { $(row).remove(); } Qs_Form_Element_MultiText.updateNumeration(id); Qs_Form_Element_MultiText.updateOptions(id); } return false; }, updateNumeration: function (id) { $('#' + id + ' tbody > tr > td.no > span.row-number').each(function(i, span){ $(span).text((i+1)); }); }, hideLink: function (link) { $(link).hide(); $(link).each(function(i, el){ if (el.nextSibling && el.nextSibling.tagName == 'SPAN') { $(el.nextSibling).hide(); } }); }, showLink: function (link) { $(link).show(); $(link).each(function(i, el){ if (el.nextSibling && el.nextSibling.tagName == 'SPAN') { $(el.nextSibling).show(); } }); }, updateOptions: function (id) { var selector = '#' + id + ' a'; var del = selector + '.del'; var up = selector + '.up'; var down = selector + '.down'; var rows = $(del).size(); Qs_Form_Element_MultiText.showLink(del); Qs_Form_Element_MultiText.showLink(up); Qs_Form_Element_MultiText.showLink(down); if (rows == 1) { Qs_Form_Element_MultiText.hideLink(del); Qs_Form_Element_MultiText.hideLink(up); Qs_Form_Element_MultiText.hideLink(down); } else if (rows > 1) { Qs_Form_Element_MultiText.hideLink(up + ':first'); Qs_Form_Element_MultiText.hideLink(down + ':last'); } } }