diff --git a/example/www/config.js b/example/www/config.js index 757f762..1067550 100644 --- a/example/www/config.js +++ b/example/www/config.js @@ -9,7 +9,7 @@ window.InfinniUI.config.configName = 'test'; window.InfinniUI.config.homePage = '/viewExample/homePage.json'; -window.InfinniUI.config.lang = 'ru-RU'; +window.InfinniUI.config.lang = 'en-US'; // when disableAutoHeightService = true, body will have full height and will scrollable // window.InfinniUI.config.disableAutoHeightService = true; diff --git a/out/platform.js b/out/platform.js index 5a74732..34e5a28 100644 --- a/out/platform.js +++ b/out/platform.js @@ -275,6 +275,14 @@ InfinniUI.localizations['ru-RU'].strings = { clear: 'Очистить', today: 'Сегодня', date: 'Дата' + }, + + "DeleteAction": { + "warnMessage": "Вы уверены, что хотите удалить?", + "warnMessageNoItem": "Вы не выбрали элемент который необходимо удалить", + "agree": "Да", + "disagree": "Нет", + "cancel": "Закрыть" } }; @@ -294,8 +302,17 @@ InfinniUI.localizations['en-US'].strings = { clear: 'Clear', today: 'Today', date: 'Date' + }, + + "DeleteAction": { + "warnMessage": "Are you sure to remove item?", + "warnMessageNoItem": "Choose item that you want to remove", + "agree": "Yes", + "disagree": "No", + "cancel": "Close" } }; + //####app\utils\collection\collection.js /** * @@ -12605,58 +12622,64 @@ var TablePanelView = ContainerView.extend( } ); -//####app\controls\tablePanel\row\rowControl.js +//####app\controls\tablePanel\cell\cellControl.js /** * * @param parent * @constructor * @augments ContainerControl */ -function RowControl(parent) { - _.superClass(RowControl, this, parent); +function CellControl(parent) { + _.superClass(CellControl, this, parent); } -_.inherit(RowControl, ContainerControl); +_.inherit(CellControl, ContainerControl); -_.extend(RowControl.prototype, - /** @lends RowControl.prototype */ +_.extend(CellControl.prototype, + /** @lends CellControl.prototype */ { createControlModel: function () { - return new RowModel(); + return new CellModel(); }, createControlView: function (model) { - return new RowView({model: model}); + return new CellView({model: model}); } } ); -//####app\controls\tablePanel\row\rowModel.js +//####app\controls\tablePanel\cell\cellModel.js /** * @constructor * @augments ContainerModel */ -var RowModel = ContainerModel.extend( - /** @lends RowModel.prototype */ +var CellModel = ContainerModel.extend( + /** @lends CellModel.prototype */ { + defaults: _.defaults({ + columnSpan: 1 + }, ContainerModel.prototype.defaults), + initialize: function () { ContainerModel.prototype.initialize.apply(this, Array.prototype.slice.call(arguments)); } } ); -//####app\controls\tablePanel\row\rowView.js +//####app\controls\tablePanel\cell\cellView.js /** * @class * @augments ControlView */ -var RowView = ContainerView.extend( - /** @lends RowView.prototype */ +var CellView = ContainerView.extend( + /** @lends CellView.prototype */ { - className: 'pl-row row', + className: 'pl-cell', initialize: function (options) { ContainerView.prototype.initialize.call(this, options); + + this.initColumnSpan(); }, render: function () { @@ -12690,68 +12713,86 @@ var RowView = ContainerView.extend( }); }, + initColumnSpan: function () { + this.listenTo(this.model, 'change:columnSpan', this.updateColumnSpan); + this.updateColumnSpan(); + }, + + updateColumnSpan: function () { + var columnSpan = this.model.get('columnSpan'), + currentColumnSpan = this.columnSpan; + + if(columnSpan != currentColumnSpan){ + + if(currentColumnSpan){ + this.$el + .removeClass('col-xs-' + currentColumnSpan); + } + + this.$el + .addClass('col-xs-' + columnSpan); + + this.columnSpan = columnSpan; + } + + }, + updateGrouping: function(){} } ); -//####app\controls\tablePanel\cell\cellControl.js +//####app\controls\tablePanel\row\rowControl.js /** * * @param parent * @constructor * @augments ContainerControl */ -function CellControl(parent) { - _.superClass(CellControl, this, parent); +function RowControl(parent) { + _.superClass(RowControl, this, parent); } -_.inherit(CellControl, ContainerControl); +_.inherit(RowControl, ContainerControl); -_.extend(CellControl.prototype, - /** @lends CellControl.prototype */ +_.extend(RowControl.prototype, + /** @lends RowControl.prototype */ { createControlModel: function () { - return new CellModel(); + return new RowModel(); }, createControlView: function (model) { - return new CellView({model: model}); + return new RowView({model: model}); } } ); -//####app\controls\tablePanel\cell\cellModel.js +//####app\controls\tablePanel\row\rowModel.js /** * @constructor * @augments ContainerModel */ -var CellModel = ContainerModel.extend( - /** @lends CellModel.prototype */ +var RowModel = ContainerModel.extend( + /** @lends RowModel.prototype */ { - defaults: _.defaults({ - columnSpan: 1 - }, ContainerModel.prototype.defaults), - initialize: function () { ContainerModel.prototype.initialize.apply(this, Array.prototype.slice.call(arguments)); } } ); -//####app\controls\tablePanel\cell\cellView.js +//####app\controls\tablePanel\row\rowView.js /** * @class * @augments ControlView */ -var CellView = ContainerView.extend( - /** @lends CellView.prototype */ +var RowView = ContainerView.extend( + /** @lends RowView.prototype */ { - className: 'pl-cell', + className: 'pl-row row', initialize: function (options) { ContainerView.prototype.initialize.call(this, options); - - this.initColumnSpan(); }, render: function () { @@ -12785,30 +12826,6 @@ var CellView = ContainerView.extend( }); }, - initColumnSpan: function () { - this.listenTo(this.model, 'change:columnSpan', this.updateColumnSpan); - this.updateColumnSpan(); - }, - - updateColumnSpan: function () { - var columnSpan = this.model.get('columnSpan'), - currentColumnSpan = this.columnSpan; - - if(columnSpan != currentColumnSpan){ - - if(currentColumnSpan){ - this.$el - .removeClass('col-xs-' + currentColumnSpan); - } - - this.$el - .addClass('col-xs-' + columnSpan); - - this.columnSpan = columnSpan; - } - - }, - updateGrouping: function(){} } ); @@ -13143,6 +13160,129 @@ var TabPanelView = ContainerView.extend(/** @lends TabPanelView.prototype */ { }); +//####app\controls\tabPanel\tabHeader\tabHeaderView.js +var TabHeaderModel = Backbone.Model.extend({ + + defaults: { + text: '', + canClose: false + } +}); + +var TabHeaderView = Backbone.View.extend({ + + className: "pl-tabheader", + + tagName: "li", + + template: InfinniUI.Template["controls/tabPanel/tabHeader/template/tabHeader.tpl.html"], + + events: { + "click": "onClickHandler", + "click .pl-close": "onClickCloseHandler" + }, + + UI: { + label: '.pl-tabheader-text', + close: '.pl-close' + }, + + initialize: function (options) { + this.model = new TabHeaderModel(options); + + this.on('rendered', this.onRenderedHandler); + }, + + render: function () { + this.$el.html(this.template); + this.bindUIElements(); + this.trigger('rendered'); + //devblockstart + window.InfinniUI.global.messageBus.send('render', {element: this}); + //devblockstop + return this; + }, + + /** + * + * @param {string} value + */ + setText: function (value) { + this.model.set('text', value); + }, + + /** + * + * @param {boolean} value + */ + setCanClose: function (value) { + this.model.set('canClose', value); + }, + + /** + * + * @param {boolean} value + */ + setSelected: function (value) { + this.model.set('selected', value); + }, + + /** + * @protected + */ + updateProperties: function () { + this.updateTextHandler(); + this.updateCanClose(); + this.updateSelectedHandler(); + }, + + /** + * @protected + */ + onRenderedHandler: function () { + this.updateProperties(); + this.listenTo(this.model, 'change:text', this.updateTextHandler); + this.listenTo(this.model, 'change:selected', this.updateSelectedHandler); + this.listenTo(this.model, 'cahnge:canClose', this.updateCanClose); + }, + + /** + * @protected + */ + updateTextHandler: function () { + var text = this.model.get('text'); + this.ui.label.text(text); + }, + + /** + * @protected + */ + updateCanClose: function () { + var canClose = this.model.get('canClose'); + this.ui.close.toggleClass('hidden', !canClose); + }, + + /** + * @protected + */ + updateSelectedHandler: function () { + var selected = this.model.get('selected'); + this.$el.toggleClass('pl-active active', selected); + }, + + onClickHandler: function (event) { + this.trigger('selected'); + }, + + onClickCloseHandler: function (event) { + event.stopPropagation(); + this.trigger('close'); + } + +}); + +_.extend(TabHeaderView.prototype, bindUIElementsMixin); + //####app\controls\tabPanel\tabPage\tabPageControl.js /** * @@ -13268,129 +13408,6 @@ var TabPageView = ContainerView.extend(/** @lends TabPageView.prototype */ { }); -//####app\controls\tabPanel\tabHeader\tabHeaderView.js -var TabHeaderModel = Backbone.Model.extend({ - - defaults: { - text: '', - canClose: false - } -}); - -var TabHeaderView = Backbone.View.extend({ - - className: "pl-tabheader", - - tagName: "li", - - template: InfinniUI.Template["controls/tabPanel/tabHeader/template/tabHeader.tpl.html"], - - events: { - "click": "onClickHandler", - "click .pl-close": "onClickCloseHandler" - }, - - UI: { - label: '.pl-tabheader-text', - close: '.pl-close' - }, - - initialize: function (options) { - this.model = new TabHeaderModel(options); - - this.on('rendered', this.onRenderedHandler); - }, - - render: function () { - this.$el.html(this.template); - this.bindUIElements(); - this.trigger('rendered'); - //devblockstart - window.InfinniUI.global.messageBus.send('render', {element: this}); - //devblockstop - return this; - }, - - /** - * - * @param {string} value - */ - setText: function (value) { - this.model.set('text', value); - }, - - /** - * - * @param {boolean} value - */ - setCanClose: function (value) { - this.model.set('canClose', value); - }, - - /** - * - * @param {boolean} value - */ - setSelected: function (value) { - this.model.set('selected', value); - }, - - /** - * @protected - */ - updateProperties: function () { - this.updateTextHandler(); - this.updateCanClose(); - this.updateSelectedHandler(); - }, - - /** - * @protected - */ - onRenderedHandler: function () { - this.updateProperties(); - this.listenTo(this.model, 'change:text', this.updateTextHandler); - this.listenTo(this.model, 'change:selected', this.updateSelectedHandler); - this.listenTo(this.model, 'cahnge:canClose', this.updateCanClose); - }, - - /** - * @protected - */ - updateTextHandler: function () { - var text = this.model.get('text'); - this.ui.label.text(text); - }, - - /** - * @protected - */ - updateCanClose: function () { - var canClose = this.model.get('canClose'); - this.ui.close.toggleClass('hidden', !canClose); - }, - - /** - * @protected - */ - updateSelectedHandler: function () { - var selected = this.model.get('selected'); - this.$el.toggleClass('pl-active active', selected); - }, - - onClickHandler: function (event) { - this.trigger('selected'); - }, - - onClickCloseHandler: function (event) { - event.stopPropagation(); - this.trigger('close'); - } - -}); - -_.extend(TabHeaderView.prototype, bindUIElementsMixin); - //####app\controls\treeView\treeViewControl.js function TreeViewControl() { _.superClass(TreeViewControl, this); @@ -14492,76 +14509,6 @@ var ContextMenuView = ContainerView.extend({ }); -//####app\controls\divider\dividerControl.js -/** - * - * @param parent - * @constructor - * @arguments Control - */ -function DividerControl(parent) { - _.superClass(DividerControl, this, parent); -} - -_.inherit(DividerControl, Control); - -_.extend(DividerControl.prototype, { - - createControlModel: function () { - return new DividerModel(); - }, - - createControlView: function (model) { - return new DividerView({model: model}); - } -}); - - -//####app\controls\divider\dividerModel.js -/** - * @class - * @arguments ControlModel - */ -var DividerModel = ControlModel.extend(/** @lends DividerModel.prototype */{ - - initialize: function () { - ControlModel.prototype.initialize.apply(this, Array.prototype.slice.call(arguments)); - } - -}); - -//####app\controls\divider\dividerView.js -/** - * @class - * @arguments ControlView - */ -var DividerView = ControlView.extend( - /** @lends DividerView.prototype */ - { - tagName: 'hr', - - className: 'pl-divider', - - initialize: function (options) { - ControlView.prototype.initialize.call(this, options); - }, - - render: function () { - this.prerenderingActions(); - - this.updateProperties(); - this.trigger('render'); - - this.postrenderingActions(); - //devblockstart - window.InfinniUI.global.messageBus.send('render', {element: this}); - //devblockstop - return this; - } - - } -); - //####app\controls\extensionPanel\extensionPanel.js var ExtensionPanelControl = function () { _.superClass(ExtensionPanelControl, this); @@ -15051,6 +14998,214 @@ var FileBoxView = ControlView.extend(/** @lends FileBoxView.prototype */ _.exten })); +//####app\controls\form\formControl.js +function FormControl(parent) { + _.superClass(FormControl, this, parent); +} + +_.inherit(FormControl, StackPanelControl); + +_.extend(FormControl.prototype, { + + createControlModel: function () { + return new FormModel(); + }, + + createControlView: function (model) { + return new FormView({model: model}); + }, + + onSubmit: function (callback) { + this.controlView.$el.on('submit', callback); + }, + + setSubmitFunction: function(func) { + this.controlModel.set('submitFunction', func); + }, + + getSubmitFunction: function() { + return this.controlModel.get('submitFunction'); + }, + + setMethod: function(method) { + this.controlModel.set('method', method); + }, + + getMethod: function() { + return this.controlModel.get('method'); + }, + + setAction: function(action) { + this.controlModel.set('action', action); + }, + + getAction: function() { + return this.controlModel.get('action'); + } + +}); + +//####app\controls\form\formModel.js +var FormModel = StackPanelModel.extend({ + + defaults: _.defaults({ + submitFunction: null, + method: '', + action: '' + }, StackPanelModel.prototype.defaults) + +}); + +//####app\controls\form\formView.js +/** + * @class FormView + * @augments StackPanelView + */ +var FormView = StackPanelView.extend({ + + className: 'pl-form', + + tagName: 'form', + + template: { + plain: InfinniUI.Template["controls/form/template/form.tpl.html"] + }, + + events: { + 'submit': 'onSubmit' + }, + + onSubmit: function (e) { + e.preventDefault(); + }, + + initialize: function (options) { + StackPanelView.prototype.initialize.call(this, options); + + this.listenTo(this.model, 'change:method', this.updateMethod); + this.listenTo(this.model, 'change:action', this.updateAction); + }, + + updateGrouping: function(){ + this.strategy = new StackPanelViewPlainStrategy(this); + }, + + render: function () { + this.prerenderingActions(); + + this.removeChildElements(); + + var preparedItems = this.strategy.prepareItemsForRendering(); + var template = this.strategy.getTemplate(); + + this.$el.html(template(preparedItems)); + + this.strategy.appendItemsContent(preparedItems, '.pl-form-i'); + + this.bindUIElements(); + this.updateProperties(); + this.trigger('render'); + + this.postrenderingActions(); + + //devblockstart + window.InfinniUI.global.messageBus.send('render', {element: this}); + //devblockstop + + return this; + }, + + updateProperties: function() { + StackPanelView.prototype.updateProperties.call(this); + + this.updateMethod(); + this.updateAction(); + }, + + updateMethod: function() { + var method = this.model.get('method'); + + this.$el.attr('method', method); + }, + + updateAction: function() { + var action = this.model.get('action'); + + this.$el.attr('action', action); + } + +}); + +//####app\controls\divider\dividerControl.js +/** + * + * @param parent + * @constructor + * @arguments Control + */ +function DividerControl(parent) { + _.superClass(DividerControl, this, parent); +} + +_.inherit(DividerControl, Control); + +_.extend(DividerControl.prototype, { + + createControlModel: function () { + return new DividerModel(); + }, + + createControlView: function (model) { + return new DividerView({model: model}); + } +}); + + +//####app\controls\divider\dividerModel.js +/** + * @class + * @arguments ControlModel + */ +var DividerModel = ControlModel.extend(/** @lends DividerModel.prototype */{ + + initialize: function () { + ControlModel.prototype.initialize.apply(this, Array.prototype.slice.call(arguments)); + } + +}); + +//####app\controls\divider\dividerView.js +/** + * @class + * @arguments ControlView + */ +var DividerView = ControlView.extend( + /** @lends DividerView.prototype */ + { + tagName: 'hr', + + className: 'pl-divider', + + initialize: function (options) { + ControlView.prototype.initialize.call(this, options); + }, + + render: function () { + this.prerenderingActions(); + + this.updateProperties(); + this.trigger('render'); + + this.postrenderingActions(); + //devblockstart + window.InfinniUI.global.messageBus.send('render', {element: this}); + //devblockstop + return this; + } + + } +); + //####app\controls\frame\frameControl.js /** * @@ -15154,144 +15309,6 @@ var FrameView = ControlView.extend(_.extend({}, editorBaseViewMixin, /** @lends })); -//####app\controls\form\formControl.js -function FormControl(parent) { - _.superClass(FormControl, this, parent); -} - -_.inherit(FormControl, StackPanelControl); - -_.extend(FormControl.prototype, { - - createControlModel: function () { - return new FormModel(); - }, - - createControlView: function (model) { - return new FormView({model: model}); - }, - - onSubmit: function (callback) { - this.controlView.$el.on('submit', callback); - }, - - setSubmitFunction: function(func) { - this.controlModel.set('submitFunction', func); - }, - - getSubmitFunction: function() { - return this.controlModel.get('submitFunction'); - }, - - setMethod: function(method) { - this.controlModel.set('method', method); - }, - - getMethod: function() { - return this.controlModel.get('method'); - }, - - setAction: function(action) { - this.controlModel.set('action', action); - }, - - getAction: function() { - return this.controlModel.get('action'); - } - -}); - -//####app\controls\form\formModel.js -var FormModel = StackPanelModel.extend({ - - defaults: _.defaults({ - submitFunction: null, - method: '', - action: '' - }, StackPanelModel.prototype.defaults) - -}); - -//####app\controls\form\formView.js -/** - * @class FormView - * @augments StackPanelView - */ -var FormView = StackPanelView.extend({ - - className: 'pl-form', - - tagName: 'form', - - template: { - plain: InfinniUI.Template["controls/form/template/form.tpl.html"] - }, - - events: { - 'submit': 'onSubmit' - }, - - onSubmit: function (e) { - e.preventDefault(); - }, - - initialize: function (options) { - StackPanelView.prototype.initialize.call(this, options); - - this.listenTo(this.model, 'change:method', this.updateMethod); - this.listenTo(this.model, 'change:action', this.updateAction); - }, - - updateGrouping: function(){ - this.strategy = new StackPanelViewPlainStrategy(this); - }, - - render: function () { - this.prerenderingActions(); - - this.removeChildElements(); - - var preparedItems = this.strategy.prepareItemsForRendering(); - var template = this.strategy.getTemplate(); - - this.$el.html(template(preparedItems)); - - this.strategy.appendItemsContent(preparedItems, '.pl-form-i'); - - this.bindUIElements(); - this.updateProperties(); - this.trigger('render'); - - this.postrenderingActions(); - - //devblockstart - window.InfinniUI.global.messageBus.send('render', {element: this}); - //devblockstop - - return this; - }, - - updateProperties: function() { - StackPanelView.prototype.updateProperties.call(this); - - this.updateMethod(); - this.updateAction(); - }, - - updateMethod: function() { - var method = this.model.get('method'); - - this.$el.attr('method', method); - }, - - updateAction: function() { - var action = this.model.get('action'); - - this.$el.attr('action', action); - } - -}); - //####app\controls\gridPanel\gridPanelControl.js /** * @@ -15410,101 +15427,6 @@ var GridPanelView = ContainerView.extend( } ); -//####app\controls\icon\iconControl.js -/** - * - * @param parent - * @constructor - * @augments Control - */ -function IconControl() { - _.superClass(IconControl, this); -} - -_.inherit(IconControl, Control); - -_.extend(IconControl.prototype, { - - createControlModel: function () { - return new IconModel(); - }, - - createControlView: function (model) { - return new IconView({model: model}); - } - -}); -//####app\controls\icon\iconModel.js -/** - * @class - * @augments ControlModel - */ -var IconModel = ControlModel.extend({ - - defaults: _.defaults({ - value: null, - focusable: false - - }, ControlModel.prototype.defaults), - - initialize: function () { - ControlModel.prototype.initialize.apply(this, arguments); - } - -}); -//####app\controls\icon\iconView.js -/** - * @class IconView - * @arguments ControlView - */ -var IconView = ControlView.extend({ - - className: 'pl-icon fa', - - tagName: 'i', - - render: function(){ - this.prerenderingActions(); - this.updateProperties(); - this.trigger('render'); - this.postrenderingActions(); - //devblockstart - window.InfinniUI.global.messageBus.send('render', {element: this}); - //devblockstop - return this; - }, - - renderIcon: function () { - var value = this.model.get('value'); - this.switchClass('fa', value); - }, - - initHandlersForProperties: function () { - ControlView.prototype.initHandlersForProperties.call(this); - this.listenTo(this.model, 'change:value', this.updateValue); - }, - - updateProperties: function () { - ControlView.prototype.updateProperties.call(this); - this.updateValue(); - }, - - updateFocusable: function () { - var focusable = this.model.get('focusable'); - - if (focusable) { - this.$el.attr('tabindex', 0); - } else { - this.$el.removeAttr('tabindex'); - } - }, - - updateValue: function () { - this.renderIcon(); - } - -}); - //####app\controls\imageBox\imageBoxControl.js /** * @@ -15842,111 +15764,142 @@ var IndeterminateCheckBoxView = CheckBoxView.extend({ } }); -//####app\controls\link\linkElementControl.js +//####app\controls\icon\iconControl.js /** * * @param parent * @constructor * @augments Control */ -function LinkElementControl() { - _.superClass(LinkElementControl, this); +function IconControl() { + _.superClass(IconControl, this); } -_.inherit(LinkElementControl, ButtonControl); - -_.extend( - LinkElementControl.prototype, { +_.inherit(IconControl, Control); - createControlModel: function () { - return new LinkElementModel(); - }, +_.extend(IconControl.prototype, { - createControlView: function (model) { - return new LinkElementView({model: model}); - } + createControlModel: function () { + return new IconModel(); + }, - }); + createControlView: function (model) { + return new IconView({model: model}); + } -//####app\controls\link\linkElementModel.js +}); +//####app\controls\icon\iconModel.js /** * @class - * @augments ButtonModel + * @augments ControlModel */ -var LinkElementModel = ButtonModel.extend({ +var IconModel = ControlModel.extend({ defaults: _.defaults({ - href: "javascript:;", - target: "self" - }, ButtonModel.prototype.defaults), + value: null, + focusable: false + + }, ControlModel.prototype.defaults), initialize: function () { - ButtonModel.prototype.initialize.apply(this, arguments); + ControlModel.prototype.initialize.apply(this, arguments); } }); - -//####app\controls\link\linkElementView.js +//####app\controls\icon\iconView.js /** - * @class LinkElementView - * @augments CommonButtonView + * @class IconView + * @arguments ControlView */ -var LinkElementView = CommonButtonView.extend({ +var IconView = ControlView.extend({ - tagName: 'a', + className: 'pl-icon fa', - className: 'pl-link', + tagName: 'i', - events: { - 'click': 'onClickHandler' + render: function(){ + this.prerenderingActions(); + this.updateProperties(); + this.trigger('render'); + this.postrenderingActions(); + //devblockstart + window.InfinniUI.global.messageBus.send('render', {element: this}); + //devblockstop + return this; }, - template: function(){return '';}, - - updateProperties: function(){ - CommonButtonView.prototype.updateProperties.call(this); - - this.updateHref(); - this.updateTarget(); + renderIcon: function () { + var value = this.model.get('value'); + this.switchClass('fa', value); }, - getButtonElement: function(){ - return this.$el; + initHandlersForProperties: function () { + ControlView.prototype.initHandlersForProperties.call(this); + this.listenTo(this.model, 'change:value', this.updateValue); }, - initHandlersForProperties: function(){ - CommonButtonView.prototype.initHandlersForProperties.call(this); - - this.listenTo(this.model, 'change:href', this.updateHref); - this.listenTo(this.model, 'change:target', this.updateTarget); + updateProperties: function () { + ControlView.prototype.updateProperties.call(this); + this.updateValue(); }, - updateHref: function() { - var newHref = this.model.get('href'), - $link = this.getButtonElement(); + updateFocusable: function () { + var focusable = this.model.get('focusable'); - $link.attr('href', newHref); + if (focusable) { + this.$el.attr('tabindex', 0); + } else { + this.$el.removeAttr('tabindex'); + } }, - updateTarget: function() { - var newTarget = this.model.get('target'), - $link = this.getButtonElement(); + updateValue: function () { + this.renderIcon(); + } - $link.attr('target', '_' + newTarget); - }, +}); - onClickHandler: function(e) { - var href = this.model.get('href'); - if( href.indexOf('http://') === -1 ) { - InfinniUI.AppRouter.navigate(href, {trigger: true}); - if( e.which !== 2 ) { - e.preventDefault(); - } +//####app\controls\loaderIndicator\loaderIndicator.js +(function () { + var template = InfinniUI.Template["controls/loaderIndicator/template.tpl.html"]; + + InfinniUI.loaderIndicator = { + show: function(){ + $.blockUI({ + message: $(template()), + ignoreIfBlocked: true, + baseZ: 99999 + }); + }, + hide: function(){ + $.unblockUI(); } + }; + + if (!InfinniUI.config.useLoaderIndicator) { + return; } -}); + jQuery(function () { + var $indicator = $(template()); + $('body').append($indicator); + $.blockUI.defaults.css = {}; + $(document).ajaxStart(function () { + $.blockUI({ + message: $indicator, + ignoreIfBlocked: true, + baseZ: 99999 + }); + }) + .ajaxStop(function () { + $.unblockUI(); + }) + .ajaxError(function () { + $.unblockUI(); + }); + }); +})(); //####app\controls\menuBar\menuBarControl.js /** * @@ -16046,121 +15999,185 @@ var MenuBarView = ContainerView.extend( } ); -//####app\controls\loaderIndicator\loaderIndicator.js -(function () { - var template = InfinniUI.Template["controls/loaderIndicator/template.tpl.html"]; - - InfinniUI.loaderIndicator = { - show: function(){ - $.blockUI({ - message: $(template()), - ignoreIfBlocked: true, - baseZ: 99999 - }); - }, - hide: function(){ - $.unblockUI(); - } - }; - - if (!InfinniUI.config.useLoaderIndicator) { - return; - } - - jQuery(function () { - var $indicator = $(template()); - $('body').append($indicator); - $.blockUI.defaults.css = {}; - $(document).ajaxStart(function () { - $.blockUI({ - message: $indicator, - ignoreIfBlocked: true, - baseZ: 99999 - }); - }) - .ajaxStop(function () { - $.unblockUI(); - }) - .ajaxError(function () { - $.unblockUI(); - }); - }); - -})(); -//####app\controls\numericBox\numericBoxControl.js +//####app\controls\link\linkElementControl.js /** * * @param parent * @constructor - * @augments TextEditorBaseControl + * @augments Control */ -function NumericBoxControl(parent) { - _.superClass(NumericBoxControl, this, parent); +function LinkElementControl() { + _.superClass(LinkElementControl, this); } -_.inherit(NumericBoxControl, TextEditorBaseControl); +_.inherit(LinkElementControl, ButtonControl); -_.extend(NumericBoxControl.prototype, { +_.extend( + LinkElementControl.prototype, { - createControlModel: function () { - return new NumericBoxModel(); - }, + createControlModel: function () { + return new LinkElementModel(); + }, - createControlView: function (model) { - return new NumericBoxView({model: model}); - } -}); + createControlView: function (model) { + return new LinkElementView({model: model}); + } + }); -//####app\controls\numericBox\numericBoxModel.js +//####app\controls\link\linkElementModel.js /** * @class - * @augments TextEditorBaseModel + * @augments ButtonModel */ -var NumericBoxModel = TextEditorBaseModel.extend(/** @lends TextBoxModel.prototype */{ - defaults: _.defaults( - { - increment: 1, - inputType: 'number' - }, - TextEditorBaseModel.prototype.defaults - ), - - incValue: function () { - var delta = this.get('increment'); - this.addToValue(delta); - }, +var LinkElementModel = ButtonModel.extend({ - decValue: function () { - var delta = this.get('increment'); - this.addToValue(-delta); - }, + defaults: _.defaults({ + href: "javascript:;", + target: "self" + }, ButtonModel.prototype.defaults), - addToValue: function (delta) { + initialize: function () { + ButtonModel.prototype.initialize.apply(this, arguments); + } - var value = this.get('value'); - var startValue = this.get('startValue'); - var minValue = this.get('minValue'); - var maxValue = this.get('maxValue'); +}); - var newValue = _.isNumber(value) ? value : +value; +//####app\controls\link\linkElementView.js +/** + * @class LinkElementView + * @augments CommonButtonView + */ +var LinkElementView = CommonButtonView.extend({ - if (this.isSetValue(value) && _.isNumber(value)) { - newValue += delta; - } else { - newValue = (_.isNumber(startValue)) ? startValue : 0; - } + tagName: 'a', - if (_.isNumber(minValue) && newValue < minValue) { - newValue = minValue; - } else if (_.isNumber(maxValue) && newValue > maxValue) { - newValue = maxValue; - } + className: 'pl-link', - this.set('value', newValue); + events: { + 'click': 'onClickHandler' }, - initialize: function () { + template: function(){return '';}, + + updateProperties: function(){ + CommonButtonView.prototype.updateProperties.call(this); + + this.updateHref(); + this.updateTarget(); + }, + + getButtonElement: function(){ + return this.$el; + }, + + initHandlersForProperties: function(){ + CommonButtonView.prototype.initHandlersForProperties.call(this); + + this.listenTo(this.model, 'change:href', this.updateHref); + this.listenTo(this.model, 'change:target', this.updateTarget); + }, + + updateHref: function() { + var newHref = this.model.get('href'), + $link = this.getButtonElement(); + + $link.attr('href', newHref); + }, + + updateTarget: function() { + var newTarget = this.model.get('target'), + $link = this.getButtonElement(); + + $link.attr('target', '_' + newTarget); + }, + + onClickHandler: function(e) { + var href = this.model.get('href'); + if( href.indexOf('http://') === -1 ) { + InfinniUI.AppRouter.navigate(href, {trigger: true}); + if( e.which !== 2 ) { + e.preventDefault(); + } + } + } + +}); + +//####app\controls\numericBox\numericBoxControl.js +/** + * + * @param parent + * @constructor + * @augments TextEditorBaseControl + */ +function NumericBoxControl(parent) { + _.superClass(NumericBoxControl, this, parent); +} + +_.inherit(NumericBoxControl, TextEditorBaseControl); + +_.extend(NumericBoxControl.prototype, { + + createControlModel: function () { + return new NumericBoxModel(); + }, + + createControlView: function (model) { + return new NumericBoxView({model: model}); + } +}); + + +//####app\controls\numericBox\numericBoxModel.js +/** + * @class + * @augments TextEditorBaseModel + */ +var NumericBoxModel = TextEditorBaseModel.extend(/** @lends TextBoxModel.prototype */{ + defaults: _.defaults( + { + increment: 1, + inputType: 'number' + }, + TextEditorBaseModel.prototype.defaults + ), + + incValue: function () { + var delta = this.get('increment'); + this.addToValue(delta); + }, + + decValue: function () { + var delta = this.get('increment'); + this.addToValue(-delta); + }, + + addToValue: function (delta) { + + var value = this.get('value'); + var startValue = this.get('startValue'); + var minValue = this.get('minValue'); + var maxValue = this.get('maxValue'); + + var newValue = _.isNumber(value) ? value : +value; + + if (this.isSetValue(value) && _.isNumber(value)) { + newValue += delta; + } else { + newValue = (_.isNumber(startValue)) ? startValue : 0; + } + + if (_.isNumber(minValue) && newValue < minValue) { + newValue = minValue; + } else if (_.isNumber(maxValue) && newValue > maxValue) { + newValue = maxValue; + } + + this.set('value', newValue); + }, + + initialize: function () { TextEditorBaseModel.prototype.initialize.apply(this, Array.prototype.slice.call(arguments)); }, @@ -22315,6 +22332,167 @@ _.extend(ButtonBuilder.prototype, { }, buttonBuilderMixin); +//####app\elements\buttonEdit\buttonEdit.js +/** + * + * @param parent + * @constructor + * @augments TextBox + */ +function ButtonEdit(parent) { + _.superClass(ButtonEdit, this, parent); +} + +window.InfinniUI.ButtonEdit = ButtonEdit; + +_.inherit(ButtonEdit, TextBox); + +ButtonEdit.prototype.createControl = function (parent) { + return new ButtonEditControl(parent); +}; + +/** + * @public + * @param {String} icon + */ +ButtonEdit.prototype.setIcon = function (icon) { + if (icon && icon.toLowerCase) { + icon = icon.toLowerCase(); + } + this.control.set('icon', icon); +}; + +/** + * @public + * @returns {String} + */ +ButtonEdit.prototype.getIcon = function () { + return this.control.get('icon'); +}; + +/** + * @public + * @param {boolean} readOnly + */ +ButtonEdit.prototype.setReadOnly = function (readOnly) { + if (typeof readOnly !== 'undefined' && readOnly !== null) { + this.control.set('readOnly', !!readOnly); + } +}; + +/** + * @public + * @returns {boolean} + */ +ButtonEdit.prototype.getReadOnly = function () { + return this.control.get('readOnly'); +}; + +/** + * @public + * @param {boolean} showClear + */ +ButtonEdit.prototype.setShowClear = function (showClear) { + if (typeof showClear !== 'undefined' && showClear !== null) { + this.control.set('showClear', !!showClear); + } +}; + +/** + * @public + * @returns {boolean} + */ +ButtonEdit.prototype.getShowClear = function () { + return this.control.get('showClear'); +}; + + +ButtonEdit.prototype.onButtonClick = function (handler) { + var element = this; + var callback = function (nativeEventData) { + var eventData = element._getHandlingMouseEventData(nativeEventData); + handler(eventData); + }; + return this.control.onButtonClick(callback); +}; + +//####app\elements\buttonEdit\buttonEditBuilder.js +/** + * + * @constructor + * @augments TextBoxBuilder + */ +function ButtonEditBuilder() { + _.superClass(ButtonEditBuilder, this); +} + +window.InfinniUI.ButtonEditBuilder = ButtonEditBuilder; + +_.inherit(ButtonEditBuilder, TextBoxBuilder); + +ButtonEditBuilder.prototype.createElement = function (params) { + return new ButtonEdit(params.parent); +}; + +ButtonEditBuilder.prototype.applyMetadata = function (params) { + TextBoxBuilder.prototype.applyMetadata.call(this, params); + + this.initBindingToProperty(params, 'Icon'); + this.initBindingToProperty(params, 'ReadOnly', true); + this.initBindingToProperty(params, 'ShowClear', true); + + this.buildOnButtonClick(params); + this.buildButtonAction(params); +}; + + +/** + * @protected + * @param params + */ +ButtonEditBuilder.prototype.buildButtonAction = function (params) { + /** @type {ButtonEdit} **/ + var element = params.element; + var metadata = params.metadata; + var builder = params.builder; + + if (!metadata.Action) { + return; + } + + var args = { + parentView: params.parentView, + parent: element, + basePathOfProperty: params.basePathOfProperty + }; + var action = builder.build(metadata.Action, args); + element.onButtonClick(function(){ + action.execute(); + }); +}; + +/** + * @protected + * @param params + */ +ButtonEditBuilder.prototype.buildOnButtonClick = function (params) { + /** @type {ButtonEdit} **/ + var element = params.element; + var metadata = params.metadata; + + var onButtonClick = metadata.OnButtonClick; + if (!onButtonClick) { + return; + } + + element.onButtonClick(function (args) { + new ScriptExecutor(element.getScriptsStorage()).executeScript(onButtonClick.Name || onButtonClick, args); + }); + +}; + + + //####app\elements\checkBox\checkBox.js /** * @@ -22371,6 +22549,185 @@ _.extend(CheckBoxBuilder.prototype, { }, editorBaseBuilderMixin); +//####app\elements\comboBox\comboBox.js +/** + * @augments ListEditorBase + * @param parent + * @constructor + * @mixes labelTextElementMixin + */ +function ComboBox(parent) { + _.superClass(ComboBox, this, parent); +} + +window.InfinniUI.ComboBox = ComboBox; + +_.inherit(ComboBox, ListEditorBase); + +_.extend(ComboBox.prototype, labelTextElementMixin); + +ComboBox.prototype.createControl = function () { + return new ComboBoxControl(); +}; + +ComboBox.prototype.setValueTemplate = function (value) { + this.control.set('valueTemplate', value); +}; + +ComboBox.prototype.getValueTemplate = function () { + return this.control.get('valueTemplate'); +}; + +ComboBox.prototype.getAutocomplete = function () { + return this.control.get('autocomplete'); +}; + +ComboBox.prototype.setAutocomplete = function (value) { + if (typeof value === 'boolean') { + this.control.set('autocomplete', value); + } +}; + +ComboBox.prototype.setShowClear = function (value) { + if (typeof value === 'boolean') { + this.control.set('showClear', value); + } +}; + +ComboBox.prototype.getShowClear = function () { + return this.control.get('showClear'); +}; + +ComboBox.prototype.getAutocompleteValue = function () { + return this.control.get('autocompleteValue'); +}; + +ComboBox.prototype.setAutocompleteValue = function (value) { + this.control.set('autocompleteValue', value); +}; + + +//####app\elements\comboBox\comboBoxBuilder.js +/** + * @augments ListEditorBaseBuilder + * @constructor + */ +function ComboBoxBuilder() { + _.superClass(ComboBoxBuilder, this); +} + +window.InfinniUI.ComboBoxBuilder = ComboBoxBuilder; + +_.inherit(ComboBoxBuilder, ListEditorBaseBuilder); + +_.extend(ComboBoxBuilder.prototype, /** @lends ComboBoxBuilder.prototype */{ + + createElement: function (params) { + return new ComboBox(params.parent); + }, + + applyMetadata: function (params) { + var element = params.element; + var that = this; + + var data = ListEditorBaseBuilder.prototype.applyMetadata.call(this, params); + this.initValueTemplate(data.valueBinding, params); + this.initBindingToProperty(params, 'LabelText'); + element.setAutocomplete(params.metadata.Autocomplete); + element.setShowClear(params.metadata.ShowClear); + + if(params.metadata.Autocomplete){ + var name = element.getName(); + + if(!name){ + name = that.generateName(); + element.setName(name); + } + } + + }, + + initValueTemplate: function (binding, params) { + + var metadata = params.metadata; + var element = params.element; + var valueTemplate; + var property; + + + if ('ValueTemplate' in metadata) { + valueTemplate = this.buildValueTemplate(metadata.ValueTemplate, params); + } else if ('ValueFormat' in metadata) { + valueTemplate = this.buildValueTemplateByFormat(binding, metadata.ValueFormat, params); + } else { + valueTemplate = this.buildValueTemplateByDefault(binding, params); + } + + element.setValueTemplate(valueTemplate); + }, + + buildValueTemplate: function (templateMetadata, params) { + var element = params.element; + var builder = params.builder; + var basePathOfProperty = params.basePathOfProperty || new BasePathOfProperty(''); + var that = this; + + return function (context, args) { + var index = args.index; + var bindingIndex; + var argumentForBuilder = { + parent: params.element, + parentView: params.parentView + }; + + if (index !== undefined && index !== null) { + //bindingIndex = that.bindingIndexByItemsIndex(index, params); + bindingIndex = index; + + if (bindingIndex !== undefined && bindingIndex !== null) { + argumentForBuilder.basePathOfProperty = basePathOfProperty.buildChild('', bindingIndex); + } else { + argumentForBuilder.basePathOfProperty = basePathOfProperty.buildChild('', index); + } + } + + return builder.build(templateMetadata, argumentForBuilder); + }; + }, + + buildValueTemplateByFormat: function (binding, valueFormatMetadata, params) { + var format = this.buildDisplayFormat(valueFormatMetadata, params); + return function (context, args) { + var index = args.index; + var value = args.value; + + var label = new Label(this); + label.setHorizontalAlignment('Left'); + label.setDisplayFormat(format); + label.setValue(value); + return label; + }; + }, + + buildValueTemplateByDefault: function (binding, params) { + + return function (context, args) { + var index = args.index; + var value = args.value; + + var label = new Label(this); + label.setHorizontalAlignment('Left'); + label.setValue(value); + + return label; + }; + }, + + generateName: function(){ + return 'combobox-' + guid(); + } +}); + //####app\elements\dataGrid\dataGrid.js function DataGrid(parent) { _.superClass(DataGrid, this, parent); @@ -22992,185 +23349,6 @@ DataGridColumnBuilder.prototype.buildHeaderTemplateByDefault = function (params) }; -//####app\elements\comboBox\comboBox.js -/** - * @augments ListEditorBase - * @param parent - * @constructor - * @mixes labelTextElementMixin - */ -function ComboBox(parent) { - _.superClass(ComboBox, this, parent); -} - -window.InfinniUI.ComboBox = ComboBox; - -_.inherit(ComboBox, ListEditorBase); - -_.extend(ComboBox.prototype, labelTextElementMixin); - -ComboBox.prototype.createControl = function () { - return new ComboBoxControl(); -}; - -ComboBox.prototype.setValueTemplate = function (value) { - this.control.set('valueTemplate', value); -}; - -ComboBox.prototype.getValueTemplate = function () { - return this.control.get('valueTemplate'); -}; - -ComboBox.prototype.getAutocomplete = function () { - return this.control.get('autocomplete'); -}; - -ComboBox.prototype.setAutocomplete = function (value) { - if (typeof value === 'boolean') { - this.control.set('autocomplete', value); - } -}; - -ComboBox.prototype.setShowClear = function (value) { - if (typeof value === 'boolean') { - this.control.set('showClear', value); - } -}; - -ComboBox.prototype.getShowClear = function () { - return this.control.get('showClear'); -}; - -ComboBox.prototype.getAutocompleteValue = function () { - return this.control.get('autocompleteValue'); -}; - -ComboBox.prototype.setAutocompleteValue = function (value) { - this.control.set('autocompleteValue', value); -}; - - -//####app\elements\comboBox\comboBoxBuilder.js -/** - * @augments ListEditorBaseBuilder - * @constructor - */ -function ComboBoxBuilder() { - _.superClass(ComboBoxBuilder, this); -} - -window.InfinniUI.ComboBoxBuilder = ComboBoxBuilder; - -_.inherit(ComboBoxBuilder, ListEditorBaseBuilder); - -_.extend(ComboBoxBuilder.prototype, /** @lends ComboBoxBuilder.prototype */{ - - createElement: function (params) { - return new ComboBox(params.parent); - }, - - applyMetadata: function (params) { - var element = params.element; - var that = this; - - var data = ListEditorBaseBuilder.prototype.applyMetadata.call(this, params); - this.initValueTemplate(data.valueBinding, params); - this.initBindingToProperty(params, 'LabelText'); - element.setAutocomplete(params.metadata.Autocomplete); - element.setShowClear(params.metadata.ShowClear); - - if(params.metadata.Autocomplete){ - var name = element.getName(); - - if(!name){ - name = that.generateName(); - element.setName(name); - } - } - - }, - - initValueTemplate: function (binding, params) { - - var metadata = params.metadata; - var element = params.element; - var valueTemplate; - var property; - - - if ('ValueTemplate' in metadata) { - valueTemplate = this.buildValueTemplate(metadata.ValueTemplate, params); - } else if ('ValueFormat' in metadata) { - valueTemplate = this.buildValueTemplateByFormat(binding, metadata.ValueFormat, params); - } else { - valueTemplate = this.buildValueTemplateByDefault(binding, params); - } - - element.setValueTemplate(valueTemplate); - }, - - buildValueTemplate: function (templateMetadata, params) { - var element = params.element; - var builder = params.builder; - var basePathOfProperty = params.basePathOfProperty || new BasePathOfProperty(''); - var that = this; - - return function (context, args) { - var index = args.index; - var bindingIndex; - var argumentForBuilder = { - parent: params.element, - parentView: params.parentView - }; - - if (index !== undefined && index !== null) { - //bindingIndex = that.bindingIndexByItemsIndex(index, params); - bindingIndex = index; - - if (bindingIndex !== undefined && bindingIndex !== null) { - argumentForBuilder.basePathOfProperty = basePathOfProperty.buildChild('', bindingIndex); - } else { - argumentForBuilder.basePathOfProperty = basePathOfProperty.buildChild('', index); - } - } - - return builder.build(templateMetadata, argumentForBuilder); - }; - }, - - buildValueTemplateByFormat: function (binding, valueFormatMetadata, params) { - var format = this.buildDisplayFormat(valueFormatMetadata, params); - return function (context, args) { - var index = args.index; - var value = args.value; - - var label = new Label(this); - label.setHorizontalAlignment('Left'); - label.setDisplayFormat(format); - label.setValue(value); - return label; - }; - }, - - buildValueTemplateByDefault: function (binding, params) { - - return function (context, args) { - var index = args.index; - var value = args.value; - - var label = new Label(this); - label.setHorizontalAlignment('Left'); - label.setValue(value); - - return label; - }; - }, - - generateName: function(){ - return 'combobox-' + guid(); - } -}); - //####app\elements\contextMenu\contextMenu.js /** * @class @@ -23374,166 +23552,78 @@ _.extend(DataNavigationBuilder.prototype, { }); -//####app\elements\buttonEdit\buttonEdit.js -/** - * - * @param parent - * @constructor - * @augments TextBox - */ -function ButtonEdit(parent) { - _.superClass(ButtonEdit, this, parent); +//####app\elements\extensionPanel\extensionPanel.js +function ExtensionPanel(parent) { + _.superClass(ExtensionPanel, this, parent); } -window.InfinniUI.ButtonEdit = ButtonEdit; +window.InfinniUI.ExtensionPanel = ExtensionPanel; -_.inherit(ButtonEdit, TextBox); +_.inherit(ExtensionPanel, Container); -ButtonEdit.prototype.createControl = function (parent) { - return new ButtonEditControl(parent); -}; +_.extend(ExtensionPanel.prototype, { + createControl: function () { + var control = new ExtensionPanelControl(); + return control; + }, -/** - * @public - * @param {String} icon - */ -ButtonEdit.prototype.setIcon = function (icon) { - if (icon && icon.toLowerCase) { - icon = icon.toLowerCase(); - } - this.control.set('icon', icon); -}; + setExtensionName: function (extensionName) { + return this.control.set('extensionName', extensionName); + }, -/** - * @public - * @returns {String} - */ -ButtonEdit.prototype.getIcon = function () { - return this.control.get('icon'); -}; + setParameters: function (parameters) { + return this.control.set('parameters', parameters); + }, -/** - * @public - * @param {boolean} readOnly - */ -ButtonEdit.prototype.setReadOnly = function (readOnly) { - if (typeof readOnly !== 'undefined' && readOnly !== null) { - this.control.set('readOnly', !!readOnly); - } -}; + getParameters: function () { + return this.control.get('parameters'); + }, -/** - * @public - * @returns {boolean} - */ -ButtonEdit.prototype.getReadOnly = function () { - return this.control.get('readOnly'); -}; + setContext: function (context) { + this.control.set('context', context); + }, -/** - * @public - * @param {boolean} showClear - */ -ButtonEdit.prototype.setShowClear = function (showClear) { - if (typeof showClear !== 'undefined' && showClear !== null) { - this.control.set('showClear', !!showClear); + setBuilder: function (builder) { + this.control.set('builder', builder); } -}; - -/** - * @public - * @returns {boolean} - */ -ButtonEdit.prototype.getShowClear = function () { - return this.control.get('showClear'); -}; - - -ButtonEdit.prototype.onButtonClick = function (handler) { - var element = this; - var callback = function (nativeEventData) { - var eventData = element._getHandlingMouseEventData(nativeEventData); - handler(eventData); - }; - return this.control.onButtonClick(callback); -}; - -//####app\elements\buttonEdit\buttonEditBuilder.js -/** - * - * @constructor - * @augments TextBoxBuilder - */ -function ButtonEditBuilder() { - _.superClass(ButtonEditBuilder, this); -} - -window.InfinniUI.ButtonEditBuilder = ButtonEditBuilder; +}); -_.inherit(ButtonEditBuilder, TextBoxBuilder); +//####app\elements\extensionPanel\extensionPanelBuilder.js +function ExtensionPanelBuilder() {} -ButtonEditBuilder.prototype.createElement = function (params) { - return new ButtonEdit(params.parent); -}; +window.InfinniUI.ExtensionPanelBuilder = ExtensionPanelBuilder; -ButtonEditBuilder.prototype.applyMetadata = function (params) { - TextBoxBuilder.prototype.applyMetadata.call(this, params); +_.inherit(ExtensionPanelBuilder, ContainerBuilder); - this.initBindingToProperty(params, 'Icon'); - this.initBindingToProperty(params, 'ReadOnly', true); - this.initBindingToProperty(params, 'ShowClear', true); +_.extend(ExtensionPanelBuilder.prototype, { - this.buildOnButtonClick(params); - this.buildButtonAction(params); -}; + applyMetadata: function (params) { + var metadata = params.metadata; + var element = params.element; + var parentView = params.parentView; + var builder = params.builder; + ContainerBuilder.prototype.applyMetadata.call(this, params); -/** - * @protected - * @param params - */ -ButtonEditBuilder.prototype.buildButtonAction = function (params) { - /** @type {ButtonEdit} **/ - var element = params.element; - var metadata = params.metadata; - var builder = params.builder; + element.setExtensionName(metadata['ExtensionName']); - if (!metadata.Action) { - return; - } + var parameters = {}; + _.each(metadata.Parameters, function (parameterMetadata) { + var param = builder.buildType('Parameter', parameterMetadata, {parentView: parentView, basePathOfProperty: params.basePathOfProperty}); + parameters[param.getName()] = param; + }); - var args = { - parentView: params.parentView, - parent: element, - basePathOfProperty: params.basePathOfProperty - }; - var action = builder.build(metadata.Action, args); - element.onButtonClick(function(){ - action.execute(); - }); -}; + element.setParameters(parameters); + element.setContext(parentView.getContext()); + element.setBuilder(builder); + }, -/** - * @protected - * @param params - */ -ButtonEditBuilder.prototype.buildOnButtonClick = function (params) { - /** @type {ButtonEdit} **/ - var element = params.element; - var metadata = params.metadata; + createElement: function (params) { + var element = new ExtensionPanel(params.parent); - var onButtonClick = metadata.OnButtonClick; - if (!onButtonClick) { - return; + return element; } - - element.onButtonClick(function (args) { - new ScriptExecutor(element.getScriptsStorage()).executeScript(onButtonClick.Name || onButtonClick, args); - }); - -}; - - +}); //####app\elements\divider\divider.js /** @@ -23791,171 +23881,6 @@ FileBoxValueConverter.prototype.toElement = function (context, args) { return url; }; -//####app\elements\extensionPanel\extensionPanel.js -function ExtensionPanel(parent) { - _.superClass(ExtensionPanel, this, parent); -} - -window.InfinniUI.ExtensionPanel = ExtensionPanel; - -_.inherit(ExtensionPanel, Container); - -_.extend(ExtensionPanel.prototype, { - createControl: function () { - var control = new ExtensionPanelControl(); - return control; - }, - - setExtensionName: function (extensionName) { - return this.control.set('extensionName', extensionName); - }, - - setParameters: function (parameters) { - return this.control.set('parameters', parameters); - }, - - getParameters: function () { - return this.control.get('parameters'); - }, - - setContext: function (context) { - this.control.set('context', context); - }, - - setBuilder: function (builder) { - this.control.set('builder', builder); - } -}); - -//####app\elements\extensionPanel\extensionPanelBuilder.js -function ExtensionPanelBuilder() {} - -window.InfinniUI.ExtensionPanelBuilder = ExtensionPanelBuilder; - -_.inherit(ExtensionPanelBuilder, ContainerBuilder); - -_.extend(ExtensionPanelBuilder.prototype, { - - applyMetadata: function (params) { - var metadata = params.metadata; - var element = params.element; - var parentView = params.parentView; - var builder = params.builder; - - ContainerBuilder.prototype.applyMetadata.call(this, params); - - element.setExtensionName(metadata['ExtensionName']); - - var parameters = {}; - _.each(metadata.Parameters, function (parameterMetadata) { - var param = builder.buildType('Parameter', parameterMetadata, {parentView: parentView, basePathOfProperty: params.basePathOfProperty}); - parameters[param.getName()] = param; - }); - - element.setParameters(parameters); - element.setContext(parentView.getContext()); - element.setBuilder(builder); - }, - - createElement: function (params) { - var element = new ExtensionPanel(params.parent); - - return element; - } -}); - -//####app\elements\form\form.js -/** - * - * @param parent - * @constructor - * @augment StackPanel - */ -function Form(parent) { - _.superClass(Form, this, parent); -} - -window.InfinniUI.Form = Form; - -_.inherit(Form, StackPanel); - -Form.prototype.createControl = function (parent) { - return new FormControl(parent); -}; - -Form.prototype.onSubmit = function (handler) { - var that = this, - callback = function (nativeEventData) { - handler(nativeEventData); - }; - return this.control.onSubmit(callback); -}; - -Form.prototype.setSubmitFunction = function(func) { - this.control.setSubmitFunction(func); -}; - -Form.prototype.getSubmitFunction = function() { - return this.control.getSubmitFunction(); -}; - -Form.prototype.setMethod = function(method) { - this.control.setMethod(method); -}; - -Form.prototype.getMethod = function() { - return this.control.getMethod(); -}; - -Form.prototype.setAction = function(action) { - this.control.setAction(action); -}; - -Form.prototype.getAction = function() { - return this.control.getAction(); -}; - -//####app\elements\form\formBuilder.js -/** - * - * @constructor - * @augments StackPanelBuilder - */ -function FormBuilder() { - _.superClass(FormBuilder, this); -} - -window.InfinniUI.FormBuilder = FormBuilder; - -_.inherit(FormBuilder, StackPanelBuilder); - -_.extend(FormBuilder.prototype, { - - createElement: function (params) { - return new Form(params.parent); - }, - - applyMetadata: function(params) { - var element = params.element, - metadata = params.metadata; - StackPanelBuilder.prototype.applyMetadata.call(this, params); - - if( metadata.OnSubmit ) { - element.onSubmit(function() { - return new ScriptExecutor(element.getScriptsStorage()).executeScript(metadata.OnSubmit.Name || metadata.OnSubmit); - }); - } - - if( metadata.Method ) { - element.setMethod(metadata.Method); - } - - if( metadata.Action ) { - element.setAction(metadata.Action); - } - } -}); - //####app\elements\frame\frame.js /** * @@ -24015,113 +23940,6 @@ _.extend(FrameBuilder.prototype, { editorBaseBuilderMixin ); -//####app\elements\gridPanel\gridPanel.js -/** - * @param parent - * @constructor - * @augments Container - */ -function GridPanel(parent) { - _.superClass(GridPanel, this, parent); -} - -window.InfinniUI.GridPanel = GridPanel; - -_.inherit(GridPanel, Container); - -_.extend(GridPanel.prototype, { - createControl: function () { - return new GridPanelControl(); - } -}); - -//####app\elements\gridPanel\gridPanelBuilder.js -/** - * @constructor - * @augments ContainerBuilder - */ -function GridPanelBuilder() { - _.superClass(GridPanelBuilder, this); -} - -window.InfinniUI.GridPanelBuilder = GridPanelBuilder; - -_.inherit(GridPanelBuilder, ContainerBuilder); - -_.extend(GridPanelBuilder.prototype, - /** @lends GridPanelBuilder.prototype*/ - { - createElement: function (params) { - return new GridPanel(params.parent); - }, - - /** - * @param {Object} params - * @param {TablePanel} params.element - * @param {Object} params.metadata - */ - applyMetadata: function (params) { - var - metadata = params.metadata, - element = params.element; - - ContainerBuilder.prototype.applyMetadata.call(this, params); - } - - }); - -//####app\elements\icon\icon.js -function Icon(parent) { - _.superClass(Icon, this, parent); -} - -window.InfinniUI.Icon = Icon; - -_.inherit(Icon, Element); - -_.extend(Icon.prototype, { - - createControl: function () { - return new IconControl(); - }, - - setValue: function(value){ - this.control.set('value', value); - }, - - getValue: function(){ - return this.control.get('value'); - }, - - onValueChanged: function(){} - -}); - -//####app\elements\icon\iconBuilder.js -function IconBuilder() { - _.superClass(ButtonBuilder, this); -} - -window.InfinniUI.IconBuilder = IconBuilder; - -_.inherit(IconBuilder, ElementBuilder); - -_.extend(IconBuilder.prototype, { - - createElement: function (params) { - return new Icon(params.parent); - }, - - applyMetadata: function (params) { - ElementBuilder.prototype.applyMetadata.call(this, params); - - var metadata = params.metadata; - - this.initBindingToProperty(params, 'Value'); - } - -}); - //####app\elements\imageBox\imageBox.js /** * @@ -24284,6 +24102,113 @@ ImageBoxValueConverter.prototype.toElement = function (context, args) { } return url; }; +//####app\elements\gridPanel\gridPanel.js +/** + * @param parent + * @constructor + * @augments Container + */ +function GridPanel(parent) { + _.superClass(GridPanel, this, parent); +} + +window.InfinniUI.GridPanel = GridPanel; + +_.inherit(GridPanel, Container); + +_.extend(GridPanel.prototype, { + createControl: function () { + return new GridPanelControl(); + } +}); + +//####app\elements\gridPanel\gridPanelBuilder.js +/** + * @constructor + * @augments ContainerBuilder + */ +function GridPanelBuilder() { + _.superClass(GridPanelBuilder, this); +} + +window.InfinniUI.GridPanelBuilder = GridPanelBuilder; + +_.inherit(GridPanelBuilder, ContainerBuilder); + +_.extend(GridPanelBuilder.prototype, + /** @lends GridPanelBuilder.prototype*/ + { + createElement: function (params) { + return new GridPanel(params.parent); + }, + + /** + * @param {Object} params + * @param {TablePanel} params.element + * @param {Object} params.metadata + */ + applyMetadata: function (params) { + var + metadata = params.metadata, + element = params.element; + + ContainerBuilder.prototype.applyMetadata.call(this, params); + } + + }); + +//####app\elements\icon\icon.js +function Icon(parent) { + _.superClass(Icon, this, parent); +} + +window.InfinniUI.Icon = Icon; + +_.inherit(Icon, Element); + +_.extend(Icon.prototype, { + + createControl: function () { + return new IconControl(); + }, + + setValue: function(value){ + this.control.set('value', value); + }, + + getValue: function(){ + return this.control.get('value'); + }, + + onValueChanged: function(){} + +}); + +//####app\elements\icon\iconBuilder.js +function IconBuilder() { + _.superClass(ButtonBuilder, this); +} + +window.InfinniUI.IconBuilder = IconBuilder; + +_.inherit(IconBuilder, ElementBuilder); + +_.extend(IconBuilder.prototype, { + + createElement: function (params) { + return new Icon(params.parent); + }, + + applyMetadata: function (params) { + ElementBuilder.prototype.applyMetadata.call(this, params); + + var metadata = params.metadata; + + this.initBindingToProperty(params, 'Value'); + } + +}); + //####app\elements\indeterminateCheckBox\indeterminateCheckBox.js /** * @@ -24578,6 +24503,98 @@ _.extend(LinkBuilder.prototype, routerServiceMixin, { }); +//####app\elements\form\form.js +/** + * + * @param parent + * @constructor + * @augment StackPanel + */ +function Form(parent) { + _.superClass(Form, this, parent); +} + +window.InfinniUI.Form = Form; + +_.inherit(Form, StackPanel); + +Form.prototype.createControl = function (parent) { + return new FormControl(parent); +}; + +Form.prototype.onSubmit = function (handler) { + var that = this, + callback = function (nativeEventData) { + handler(nativeEventData); + }; + return this.control.onSubmit(callback); +}; + +Form.prototype.setSubmitFunction = function(func) { + this.control.setSubmitFunction(func); +}; + +Form.prototype.getSubmitFunction = function() { + return this.control.getSubmitFunction(); +}; + +Form.prototype.setMethod = function(method) { + this.control.setMethod(method); +}; + +Form.prototype.getMethod = function() { + return this.control.getMethod(); +}; + +Form.prototype.setAction = function(action) { + this.control.setAction(action); +}; + +Form.prototype.getAction = function() { + return this.control.getAction(); +}; + +//####app\elements\form\formBuilder.js +/** + * + * @constructor + * @augments StackPanelBuilder + */ +function FormBuilder() { + _.superClass(FormBuilder, this); +} + +window.InfinniUI.FormBuilder = FormBuilder; + +_.inherit(FormBuilder, StackPanelBuilder); + +_.extend(FormBuilder.prototype, { + + createElement: function (params) { + return new Form(params.parent); + }, + + applyMetadata: function(params) { + var element = params.element, + metadata = params.metadata; + StackPanelBuilder.prototype.applyMetadata.call(this, params); + + if( metadata.OnSubmit ) { + element.onSubmit(function() { + return new ScriptExecutor(element.getScriptsStorage()).executeScript(metadata.OnSubmit.Name || metadata.OnSubmit); + }); + } + + if( metadata.Method ) { + element.setMethod(metadata.Method); + } + + if( metadata.Action ) { + element.setAction(metadata.Action); + } + } +}); + //####app\elements\menuBar\menuBar.js /** * @param parent @@ -25061,6 +25078,81 @@ _.extend(PanelBuilder.prototype, /** @lends PanelBuilder.prototype*/ { }); +//####app\elements\popupButton\popupButton.js +/** + * @class + * @constructor + * @augments Container + * @augments Button + */ +function PopupButton(parent, viewMode) { + _.superClass(PopupButton, this, parent, viewMode); + this.buttonInit(); +} + +window.InfinniUI.PopupButton = PopupButton; + +_.inherit(PopupButton, Container); + +_.extend(PopupButton.prototype, { + + createControl: function (viewMode) { + return new PopupButtonControl(viewMode); + } + +}, buttonMixin); + +//####app\elements\popupButton\popupButtonBuilder.js +/** + * @constructor + * @augments ContainerBuilder + */ +function PopupButtonBuilder() { + _.superClass(PopupButtonBuilder, this); +} + +window.InfinniUI.PopupButtonBuilder = PopupButtonBuilder; + +_.inherit(PopupButtonBuilder, ContainerBuilder); + +_.extend(PopupButtonBuilder.prototype, /** @lends PopupButtonBuilder.prototype */{ + + createElement: function (params) { + var viewMode = this.detectViewMode(params); + return new PopupButton(params.parent, viewMode); + }, + + detectViewMode: function(params){ + var viewMode = params.metadata['ViewMode']; + var el = params.parent; + var exit = false; + + if(!viewMode){ + while(!exit){ + if(el){ + if(el instanceof MenuBar){ + viewMode = 'forMenu'; + exit = true; + }else{ + el = el.parent; + } + }else{ + exit = true; + } + } + + } + + return viewMode + }, + + applyMetadata: function (params) { + ContainerBuilder.prototype.applyMetadata.call(this, params); + this.applyButtonMetadata.call(this, params); + } + +}, buttonBuilderMixin); + //####app\elements\passwordBox\passwordBox.js /** * @@ -25141,81 +25233,6 @@ _.extend(PasswordBoxBuilder.prototype, /** @lends PasswordBoxBuilder.prototype * editorBaseBuilderMixin ); -//####app\elements\popupButton\popupButton.js -/** - * @class - * @constructor - * @augments Container - * @augments Button - */ -function PopupButton(parent, viewMode) { - _.superClass(PopupButton, this, parent, viewMode); - this.buttonInit(); -} - -window.InfinniUI.PopupButton = PopupButton; - -_.inherit(PopupButton, Container); - -_.extend(PopupButton.prototype, { - - createControl: function (viewMode) { - return new PopupButtonControl(viewMode); - } - -}, buttonMixin); - -//####app\elements\popupButton\popupButtonBuilder.js -/** - * @constructor - * @augments ContainerBuilder - */ -function PopupButtonBuilder() { - _.superClass(PopupButtonBuilder, this); -} - -window.InfinniUI.PopupButtonBuilder = PopupButtonBuilder; - -_.inherit(PopupButtonBuilder, ContainerBuilder); - -_.extend(PopupButtonBuilder.prototype, /** @lends PopupButtonBuilder.prototype */{ - - createElement: function (params) { - var viewMode = this.detectViewMode(params); - return new PopupButton(params.parent, viewMode); - }, - - detectViewMode: function(params){ - var viewMode = params.metadata['ViewMode']; - var el = params.parent; - var exit = false; - - if(!viewMode){ - while(!exit){ - if(el){ - if(el instanceof MenuBar){ - viewMode = 'forMenu'; - exit = true; - }else{ - el = el.parent; - } - }else{ - exit = true; - } - } - - } - - return viewMode - }, - - applyMetadata: function (params) { - ContainerBuilder.prototype.applyMetadata.call(this, params); - this.applyButtonMetadata.call(this, params); - } - -}, buttonBuilderMixin); - //####app\elements\radioGroup\radioGroupBuilder.js function RadioGroupBuilder() { _.superClass(RadioGroupBuilder, this); @@ -26638,6 +26655,66 @@ _.extend(RowBuilder.prototype, }); +//####app\elements\tablePanel\cell\cell.js +/** + * @param parent + * @constructor + * @augments Container + */ +function Cell(parent) { + _.superClass(Cell, this, parent); +} + +_.inherit(Cell, Container); + +_.extend(Cell.prototype, { + createControl: function () { + return new CellControl(); + }, + + getColumnSpan: function(){ + return this.control.get('columnSpan'); + }, + + setColumnSpan: function(newColumnSpan){ + this.control.set('columnSpan', newColumnSpan); + } +}); +//####app\elements\tablePanel\cell\cellBuilder.js +/** + * @constructor + * @augments ContainerBuilder + */ +function CellBuilder() { + _.superClass(CellBuilder, this); +} + +_.inherit(CellBuilder, ContainerBuilder); + +_.extend(CellBuilder.prototype, + /** @lends CellBuilder.prototype*/ + { + createElement: function (params) { + return new Cell(params.parent); + }, + + /** + * @param {Object} params + * @param {CellBuilder} params.element + * @param {Object} params.metadata + */ + applyMetadata: function (params) { + var + metadata = params.metadata, + element = params.element; + + ContainerBuilder.prototype.applyMetadata.call(this, params); + + params.element.setColumnSpan(metadata.ColumnSpan); + } + + }); + //####app\elements\tabPanel\tabPage\tabPage.js /** * @param parent @@ -26815,66 +26892,6 @@ _.extend(TabPageBuilder.prototype, /** @lends TabPageBuilder.prototype*/ { }); -//####app\elements\tablePanel\cell\cell.js -/** - * @param parent - * @constructor - * @augments Container - */ -function Cell(parent) { - _.superClass(Cell, this, parent); -} - -_.inherit(Cell, Container); - -_.extend(Cell.prototype, { - createControl: function () { - return new CellControl(); - }, - - getColumnSpan: function(){ - return this.control.get('columnSpan'); - }, - - setColumnSpan: function(newColumnSpan){ - this.control.set('columnSpan', newColumnSpan); - } -}); -//####app\elements\tablePanel\cell\cellBuilder.js -/** - * @constructor - * @augments ContainerBuilder - */ -function CellBuilder() { - _.superClass(CellBuilder, this); -} - -_.inherit(CellBuilder, ContainerBuilder); - -_.extend(CellBuilder.prototype, - /** @lends CellBuilder.prototype*/ - { - createElement: function (params) { - return new Cell(params.parent); - }, - - /** - * @param {Object} params - * @param {CellBuilder} params.element - * @param {Object} params.metadata - */ - applyMetadata: function (params) { - var - metadata = params.metadata, - element = params.element; - - ContainerBuilder.prototype.applyMetadata.call(this, params); - - params.element.setColumnSpan(metadata.ColumnSpan); - } - - }); - //####app\actions\_base\baseAction\baseAction.js function BaseAction(parentView){ this.parentView = parentView; @@ -26936,6 +26953,41 @@ var BaseActionBuilderMixin = { } } }; +//####app\actions\_base\baseFallibleAction\baseFallibleActionBuilderMixin.js +var BaseFallibleActionBuilderMixin = { + applyBaseFallibleActionMetadata: function(action, params) { + var metadata = params.metadata; + + if('OnSuccess' in metadata) { + action.setProperty('onSuccessHandler', function(args) { + new ScriptExecutor(action.parentView).executeScript(metadata.OnSuccess.Name || metadata.OnSuccess, args); + }); + } + + if('OnError' in metadata) { + action.setProperty('onErrorHandler', function(args) { + new ScriptExecutor(action.parentView).executeScript(metadata.OnError.Name || metadata.OnError, args); + }); + } + } +}; +//####app\actions\_base\baseFallibleAction\baseFallibleActionMixin.js +var BaseFallibleActionMixin = { + onSuccessHandler: function(args) { + var onSuccessHandler = this.getProperty('onSuccessHandler'); + + if(_.isFunction(onSuccessHandler)) { + onSuccessHandler(args); + } + }, + onErrorHandler: function(args) { + var onErrorHandler = this.getProperty('onErrorHandler'); + + if(_.isFunction(onErrorHandler)) { + onErrorHandler(args); + } + } +}; //####app\actions\_base\baseEditAction\baseEditAction.js function BaseEditAction(parentView){ _.superClass(BaseEditAction, this, parentView); @@ -27029,41 +27081,67 @@ var BaseEditActionBuilderMixin = { action.setProperty('destinationProperty', destinationProperty); } }; -//####app\actions\_base\baseFallibleAction\baseFallibleActionBuilderMixin.js -var BaseFallibleActionBuilderMixin = { - applyBaseFallibleActionMetadata: function(action, params) { - var metadata = params.metadata; +//####app\actions\addAction\addAction.js +function AddAction(parentView){ + _.superClass(AddAction, this, parentView); +} - if('OnSuccess' in metadata) { - action.setProperty('onSuccessHandler', function(args) { - new ScriptExecutor(action.parentView).executeScript(metadata.OnSuccess.Name || metadata.OnSuccess, args); - }); - } +_.inherit(AddAction, BaseEditAction); - if('OnError' in metadata) { - action.setProperty('onErrorHandler', function(args) { - new ScriptExecutor(action.parentView).executeScript(metadata.OnError.Name || metadata.OnError, args); - }); + +_.extend(AddAction.prototype, { + setSelectedItem: function(){ + var editDataSource = this.getProperty('editDataSource'), + editView = editDataSource.getView(); + + editView.onBeforeLoaded(function() { + editDataSource.createItem(); + }); + + return true; + }, + + save: function(){ + var editDataSource = this.getProperty('editDataSource'), + destinationDataSource = this.getProperty('destinationDataSource'), + destinationProperty = this.getProperty('destinationProperty') || ""; + + if( this._isObjectDataSource(editDataSource) ) { + var items = destinationDataSource.getProperty(destinationProperty) || [], + newItem = editDataSource.getSelectedItem(); + + items = _.clone(items); + items.push(newItem); + + destinationDataSource.setProperty(destinationProperty, items); + } else { + destinationDataSource.updateItems(); } } -}; -//####app\actions\_base\baseFallibleAction\baseFallibleActionMixin.js -var BaseFallibleActionMixin = { - onSuccessHandler: function(args) { - var onSuccessHandler = this.getProperty('onSuccessHandler'); +}); - if(_.isFunction(onSuccessHandler)) { - onSuccessHandler(args); - } - }, - onErrorHandler: function(args) { - var onErrorHandler = this.getProperty('onErrorHandler'); +window.InfinniUI.AddAction = AddAction; - if(_.isFunction(onErrorHandler)) { - onErrorHandler(args); +//####app\actions\addAction\addActionBuilder.js +function AddActionBuilder(){} + +_.extend(AddActionBuilder.prototype, + BaseActionBuilderMixin, + BaseEditActionBuilderMixin, + { + build: function(context, args){ + var action = new AddAction(args.parentView); + + this.applyBaseActionMetadata(action, args); + this.applyBaseEditActionMetadata(action, args); + + return action; } } -}; +); + +window.InfinniUI.AddActionBuilder = AddActionBuilder; + //####app\actions\acceptAction\acceptAction.js function AcceptAction(parentView){ _.superClass(AcceptAction, this, parentView); @@ -27155,67 +27233,6 @@ _.extend(CancelActionBuilder.prototype, window.InfinniUI.CancelActionBuilder = CancelActionBuilder; -//####app\actions\addAction\addAction.js -function AddAction(parentView){ - _.superClass(AddAction, this, parentView); -} - -_.inherit(AddAction, BaseEditAction); - - -_.extend(AddAction.prototype, { - setSelectedItem: function(){ - var editDataSource = this.getProperty('editDataSource'), - editView = editDataSource.getView(); - - editView.onBeforeLoaded(function() { - editDataSource.createItem(); - }); - - return true; - }, - - save: function(){ - var editDataSource = this.getProperty('editDataSource'), - destinationDataSource = this.getProperty('destinationDataSource'), - destinationProperty = this.getProperty('destinationProperty') || ""; - - if( this._isObjectDataSource(editDataSource) ) { - var items = destinationDataSource.getProperty(destinationProperty) || [], - newItem = editDataSource.getSelectedItem(); - - items = _.clone(items); - items.push(newItem); - - destinationDataSource.setProperty(destinationProperty, items); - } else { - destinationDataSource.updateItems(); - } - } -}); - -window.InfinniUI.AddAction = AddAction; - -//####app\actions\addAction\addActionBuilder.js -function AddActionBuilder(){} - -_.extend(AddActionBuilder.prototype, - BaseActionBuilderMixin, - BaseEditActionBuilderMixin, - { - build: function(context, args){ - var action = new AddAction(args.parentView); - - this.applyBaseActionMetadata(action, args); - this.applyBaseEditActionMetadata(action, args); - - return action; - } - } -); - -window.InfinniUI.AddActionBuilder = AddActionBuilder; - //####app\actions\deleteAction\deleteAction.js function DeleteAction(parentView){ _.superClass(DeleteAction, this, parentView); @@ -27236,17 +27253,17 @@ _.extend(DeleteAction.prototype, if( dataSource.getProperty(property) ) { if(accept){ new MessageBox({ - text: 'Вы уверены, что хотите удалить?', + text: localized.strings.DeleteAction.warnMessage, buttons: [ { - name: 'Да', + name: localized.strings.DeleteAction.agree, type: 'action', onClick: function() { that.remove(callback); } }, { - name: 'Нет' + name: localized.strings.DeleteAction.disagree } ] }); @@ -27255,10 +27272,10 @@ _.extend(DeleteAction.prototype, } } else { new MessageBox({ - text: 'Вы не выбрали элемент который необходимо удалить', + text: localized.strings.DeleteAction.warnMessageNoItem, buttons: [ { - name: 'Закрыть' + name: localized.strings.DeleteAction.cancel } ] }); @@ -27543,6 +27560,84 @@ _.extend(OpenActionBuilder.prototype, window.InfinniUI.OpenActionBuilder = OpenActionBuilder; +//####app\actions\routeToAction\routeToAction.js +function RouteToAction(){ + _.superClass(RouteToAction, this); + this.href = ''; +} + +_.inherit(RouteToAction, BaseAction); + + +_.extend(RouteToAction.prototype, { + + execute: function(callback){ + var router = InfinniUI.AppRouter, + href = this.getHref(); + + router.navigate(href, {trigger: true}); + }, + + getHref: function() { + return this.href; + }, + + setHref: function(href) { + this.href = href; + } + +}); + +window.InfinniUI.RouteToAction = RouteToAction; + +//####app\actions\routeToAction\routeToActionBuilder.js +function RouteToActionBuilder() {} + +_.extend(RouteToActionBuilder.prototype, BaseActionBuilderMixin, routerServiceMixin, { + + build: function (context, args) { + var action = new RouteToAction(), + newHref = routerService.getLinkByName(args.metadata.Name, 'no'), + hrefParams = args.metadata.Params, + query = args.metadata.Query; + + action.setHref(newHref); + args.element = action; + + if( hrefParams ) { + for( var i = 0, ii = hrefParams.length; i < ii; i += 1 ) { + if( typeof hrefParams[i].Value === 'string' ) { + if( action.getHref() !== newHref ) { + newHref = action.getHref(); + } + newHref = this.replaceParamsInHref(newHref, hrefParams[i].Name, hrefParams[i].Value); + action.setHref(newHref); + } else { + this.bindParams(args, hrefParams[i].Name, hrefParams[i].Value, newHref); + } + } + } + + if( query ) { + for( var i = 0, ii = query.length; i < ii; i += 1 ) { + if( typeof query[i].Value === 'string' ) { + if( action.getHref() !== newHref ) { + newHref = action.getHref(); + } + newHref = this.replaceParamsInQuery(newHref, query[i].Name, query[i].Value); + action.setHref(newHref); + } else { + this.bindQuery(args, query[i].Name, query[i].Value, newHref); + } + } + } + return action; + } + +}); + +window.InfinniUI.RouteToActionBuilder = RouteToActionBuilder; + //####app\actions\saveAction\saveAction.js function SaveAction(parentView){ _.superClass(SaveAction, this, parentView); @@ -28014,84 +28109,6 @@ _.extend(SelectActionBuilder.prototype, window.InfinniUI.SelectActionBuilder = SelectActionBuilder; -//####app\actions\routeToAction\routeToAction.js -function RouteToAction(){ - _.superClass(RouteToAction, this); - this.href = ''; -} - -_.inherit(RouteToAction, BaseAction); - - -_.extend(RouteToAction.prototype, { - - execute: function(callback){ - var router = InfinniUI.AppRouter, - href = this.getHref(); - - router.navigate(href, {trigger: true}); - }, - - getHref: function() { - return this.href; - }, - - setHref: function(href) { - this.href = href; - } - -}); - -window.InfinniUI.RouteToAction = RouteToAction; - -//####app\actions\routeToAction\routeToActionBuilder.js -function RouteToActionBuilder() {} - -_.extend(RouteToActionBuilder.prototype, BaseActionBuilderMixin, routerServiceMixin, { - - build: function (context, args) { - var action = new RouteToAction(), - newHref = routerService.getLinkByName(args.metadata.Name, 'no'), - hrefParams = args.metadata.Params, - query = args.metadata.Query; - - action.setHref(newHref); - args.element = action; - - if( hrefParams ) { - for( var i = 0, ii = hrefParams.length; i < ii; i += 1 ) { - if( typeof hrefParams[i].Value === 'string' ) { - if( action.getHref() !== newHref ) { - newHref = action.getHref(); - } - newHref = this.replaceParamsInHref(newHref, hrefParams[i].Name, hrefParams[i].Value); - action.setHref(newHref); - } else { - this.bindParams(args, hrefParams[i].Name, hrefParams[i].Value, newHref); - } - } - } - - if( query ) { - for( var i = 0, ii = query.length; i < ii; i += 1 ) { - if( typeof query[i].Value === 'string' ) { - if( action.getHref() !== newHref ) { - newHref = action.getHref(); - } - newHref = this.replaceParamsInQuery(newHref, query[i].Name, query[i].Value); - action.setHref(newHref); - } else { - this.bindQuery(args, query[i].Name, query[i].Value, newHref); - } - } - } - return action; - } - -}); - -window.InfinniUI.RouteToActionBuilder = RouteToActionBuilder; - //####app\actions\updateAction\updateAction.js function UpdateAction(parentView){ _.superClass(UpdateAction, this, parentView); @@ -34657,29 +34674,6 @@ var AjaxLoaderIndicatorView = Backbone.View.extend({ } }); -//####app\services\contextMenuService\contextMenuService.js -InfinniUI.ContextMenuService = (function () { - - var exchange = window.InfinniUI.global.messageBus; - - exchange.subscribe(messageTypes.onContextMenu.name, function (context, args) { - var message = args.value; - initContextMenu(getSourceElement(message.source), message.content); - }); - - function getSourceElement(source) { - return source.control.controlView.$el - } - - function initContextMenu($element, content) { - $element.on('contextmenu', function(event) { - event.preventDefault(); - - exchange.send(messageTypes.onOpenContextMenu.name, { x: event.pageX, y: event.pageY }); - }); - } -})(); - //####app\services\messageBox\messageBox.js /** * @constructor @@ -34829,6 +34823,29 @@ InfinniUI.MessageBox = MessageBox; } ] });*/ +//####app\services\contextMenuService\contextMenuService.js +InfinniUI.ContextMenuService = (function () { + + var exchange = window.InfinniUI.global.messageBus; + + exchange.subscribe(messageTypes.onContextMenu.name, function (context, args) { + var message = args.value; + initContextMenu(getSourceElement(message.source), message.content); + }); + + function getSourceElement(source) { + return source.control.controlView.$el + } + + function initContextMenu($element, content) { + $element.on('contextmenu', function(event) { + event.preventDefault(); + + exchange.send(messageTypes.onOpenContextMenu.name, { x: event.pageX, y: event.pageY }); + }); + } +})(); + //####app\services\router\routerService.js var routerService = (function(myRoutes) { if( !myRoutes ) { diff --git a/out/platform.min.js b/out/platform.min.js index 5883b39..c56754a 100644 --- a/out/platform.min.js +++ b/out/platform.min.js @@ -1,15 +1,15 @@ -;(function(){"use strict";function Culture(e){this.name=e,this.caption=InfinniUI.localizations[e].caption,this.dateTimeFormatInfo=InfinniUI.localizations[e].dateTimeFormatInfo,this.numberFormatInfo=InfinniUI.localizations[e].numberFormatInfo}function Collection(e,t,n){function i(e,t){return t>e?-1:e>t?1:0}Array.isArray(e)||(e=[]),this._items=e.map(function(e,t){return this.createCollectionItem(e,t)},this),this._idProperty=t,this._comparator=n||i,this.events=new CollectionEventManager}function CollectionEventManager(){}function BasePathOfProperty(e,t,n){this.isRelativeProperty(e)?this.basePathOfProperty=n.basePathOfProperty+this.excludeFirstChar(e):this.basePathOfProperty=e,n?(this.indexesInParentLists=n.indexesInParentLists?n.indexesInParentLists.slice():[],this.indexesInParentLists.push(t),this.parentBasePath=n):void 0!==t&&null!==t&&(this.indexesInParentLists=[t],this.basePathOfProperty+=t)}function EventsManager(){this.handlers={}}function HashMap(){this._keys=[],this._values=[]}function hiddenScreen(){this.middleElement=$("
").css({position:"absolute",top:"-10000px"})}function Logger(e){this.messages=[],this.setLevel(e||LOG_LEVEL.debug),this.showMessages=!0}function guid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,n="x"==e?t:3&t|8;return n.toString(16)})}function MessageBus(e){function t(e){return"object"==typeof e&&"undefined"!=typeof e.name&&(e=e.name),e}var n={};this.send=function(i,o){if(i=t(i),n[i]){var r;e&&e.getContext&&(r=e.getContext()),_.each(n[i],function(e){e(r,{value:o})})}},this.subscribe=function(e,i){e=t(e),n[e]||(n[e]=[]),n[e].push(i)},this.unsubscribeByType=function(e){e=t(e),n[e]&&delete n[e]},this.getView=function(){return e}}function ContainerControl(e){_.superClass(ContainerControl,this,e)}function ListEditorBaseControl(e){_.superClass(ListEditorBaseControl,this,e),this.initialize_editorBaseControl()}function TextEditorBaseControl(e){_.superClass(TextEditorBaseControl,this,e),this.initialize_editorBaseControl()}function EventManager(){this.handlers={}}function TextEditorModelBaseModeStrategy(){}function TextEditorModelDisplayModeStrategy(){TextEditorModelBaseModeStrategy.call(this)}function TextEditorModelEditModeStrategy(){TextEditorModelBaseModeStrategy.call(this)}function TextBoxControl(e){_.superClass(TextBoxControl,this,e)}function DateTimePickerControl(e){_.superClass(DateTimePickerControl,this,e)}function DatePickerControl(e){_.superClass(DatePickerControl,this,e)}function TimePickerControl(e){_.superClass(TimePickerControl,this,e)}function AuthenticationProvider(e){this.baseAddress=e}function getUserInfo(e){var t=new AuthenticationProvider(InfinniUI.config.serverUrl);t.getCurrentUser(function(t){e.model.set("result",t)},function(e){showObject("#signInInternalResult",e)})}function refreshUserInfo(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.getCurrentUser(function(e){InfinniUI.user.onReadyDeferred.resolve(e)},function(e){InfinniUI.user.onReadyDeferred.resolve(null)})}function changePassword(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.changePassword($("#oldPassword").val(),$("#newPassword").val(),function(e){refreshUserInfo()},function(e){showObject("#changePasswordResult",e)})}function changeProfile(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.changeProfile($("#displayName").val(),$("#description").val(),function(e){refreshUserInfo()},function(e){showObject("#changeProfileResult",e)})}function changeActiveRole(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.changeActiveRole($("#activeRole").val(),function(e){refreshUserInfo()},function(e){showObject("#сhangeActiveRoleResult",e)})}function getLinkExternalLoginForm(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.getLinkExternalLoginForm(getAbsoluteUri("/Home/SignInSuccess"),getAbsoluteUri("/Home/SignInFailure"),function(e){$("#linkExternalLoginForm").append(e)},function(e){showObject("#linkExternalLoginResult",e)})}function unlinkExternalLogin(e,t){var n=new AuthenticationProvider(InfinniUI.config.serverUrl);n.unlinkExternalLogin(e,t,function(e){refreshUserInfo()},function(e){showObject("#unlinkExternalLoginResult",e)})}function signOut(e){var t=new AuthenticationProvider(InfinniUI.config.serverUrl);onSuccessSignOut(getHomePageContext()),t.signOut(function(t){window.getCurrentUserName=function(){return null},e.model.set("result",null),location.reload()},function(e){showObject("#getCurrentUserResult",e.responseJSON)})}function setUserInfo(e){if(null!==e.Logins&&void 0!==e.Logins)for(var t=$("#externalLogins"),n=0;n-1&&toastr.error("Неверный логин или пароль","Ошибка!"),showObject("#signInInternalResult",e)})}function getSignInExternalForm(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.getSignInExternalForm(getAbsoluteUri("/Home/SignInSuccess"),getAbsoluteUri("/Home/SignInFailure"),function(e){$("#signInExternalForm").append(e)},function(e){showObject("#signInExternalResult",e)})}function getAbsoluteUri(e){return location.protocol+"//"+location.host+e}function showObject(e,t){var n=formatObject(t);$(e).text(n)}function formatObject(e){return JSON.stringify(e,null,4)}function ButtonControl(e){_.superClass(ButtonControl,this,e)}function ButtonEditControl(e){_.superClass(ButtonEditControl,this,e)}function ComboBoxBaseViewStrategy(e){this.dropdownView=e}function ComboBoxGroupViewStrategy(e){ComboBoxBaseViewStrategy.call(this,e)}function ComboBoxPlainViewStrategy(e){ComboBoxBaseViewStrategy.call(this,e)}function DataGridControl(){_.superClass(DataGridControl,this)}function DataGridRowControl(){_.superClass(DataGridRowControl,this)}function DataNavigationButtonFactory(e){this._dataNavigation=e}function DataNavigationControl(e){_.superClass(DataNavigationControl,this,e)}function ListBoxViewGroupStrategy(e){this.listbox=e}function ListBoxViewPlainStrategy(e){this.listbox=e}function ListBoxControl(e){_.superClass(ListBoxControl,this,e)}function PopupButtonControl(e){_.superClass(PopupButtonControl,this,e)}function StackPanelControl(e){_.superClass(StackPanelControl,this,e)}function StackPanelViewGroupStrategy(e){this.stackPanel=e}function StackPanelViewPlainStrategy(e){this.stackPanel=e}function TablePanelControl(e){_.superClass(TablePanelControl,this,e)}function RowControl(e){_.superClass(RowControl,this,e)}function CellControl(e){_.superClass(CellControl,this,e)}function TabPanelControl(e){_.superClass(TabPanelControl,this,e)}function TabPageControl(e){_.superClass(TabPageControl,this,e)}function TreeViewControl(){_.superClass(TreeViewControl,this)}function CheckBoxControl(e){_.superClass(CheckBoxControl,this,e),this.initialize_editorBaseControl()}function ComboBoxControl(e){_.superClass(ListBoxControl,this,e)}function ContextMenuControl(){_.superClass(ContextMenuControl,this)}function DividerControl(e){_.superClass(DividerControl,this,e)}function FileBoxControl(e){_.superClass(FileBoxControl,this,e),this.initialize_editorBaseControl()}function FormControl(e){_.superClass(FormControl,this,e)}function GridPanelControl(e){_.superClass(GridPanelControl,this,e)}function IconControl(){_.superClass(IconControl,this)}function ImageBoxControl(e){_.superClass(ImageBoxControl,this,e),this.initialize_editorBaseControl()}function IndeterminateCheckBoxControl(e){_.superClass(IndeterminateCheckBoxControl,this,e),this.initialize_editorBaseControl()}function LinkElementControl(){_.superClass(LinkElementControl,this)}function MenuBarControl(e){_.superClass(MenuBarControl,this,e)}function NumericBoxControl(e){_.superClass(NumericBoxControl,this,e)}function PanelControl(e){_.superClass(PanelControl,this,e)}function ScrollPanelControl(e){_.superClass(ScrollPanelControl,this,e)}function ToggleButtonControl(e){_.superClass(ToggleButtonControl,this,e),this.initialize_editorBaseControl()}function ToolBarControl(e){_.superClass(ToolBarControl,this,e)}function ViewControl(e){_.superClass(ViewControl,this,e)}function Container(e,t){_.superClass(Container,this,e,t)}function ContainerBuilder(){_.superClass(ContainerBuilder,this)}function ListEditorBase(e,t){_.superClass(ListEditorBase,this,e,t),this.initialize_editorBase()}function ListEditorBaseBuilder(){_.superClass(ListEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function TextEditorBase(e){_.superClass(TextEditorBase,this,e),this.initialize_editorBase()}function TextEditorBaseBuilder(){_.superClass(TextEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function ListBox(e,t){_.superClass(ListBox,this,e,t)}function ListBoxBuilder(){_.superClass(ListBoxBuilder,this)}function TextBox(e){_.superClass(TextBox,this,e)}function TextBoxBuilder(){_.superClass(TextBoxBuilder,this)}function DateTimePicker(e){_.superClass(DateTimePicker,this,e)}function DateTimePickerBuilder(){_.superClass(DateTimePickerBuilder,this)}function DatePicker(e){_.superClass(DatePicker,this,e),this.setMode("DatePicker"),this.setTimeZone()}function DatePickerBuilder(){_.superClass(DatePickerBuilder,this)}function TimePicker(e){_.superClass(TimePicker,this,e),this.setMode("TimePicker"),this.setTimeZone()}function TimePickerBuilder(){_.superClass(TimePickerBuilder,this)}function StackPanel(e,t){_.superClass(StackPanel,this,e,t)}function StackPanelBuilder(){_.superClass(StackPanelBuilder,this)}function Button(e,t){_.superClass(Button,this,e,t),this.buttonInit()}function ButtonBuilder(){_.superClass(ButtonBuilder,this)}function CheckBox(e){_.superClass(CheckBox,this,e),this.initialize_editorBase()}function CheckBoxBuilder(){_.superClass(CheckBoxBuilder,this),this.initialize_editorBaseBuilder()}function DataGrid(e){_.superClass(DataGrid,this,e)}function DataGridBuilder(){_.superClass(DataGridBuilder,this),this.columnBuilder=new DataGridColumnBuilder}function DataGridColumn(){this._values=Object.create(null)}function DataGridColumnBuilder(){}function ComboBox(e){_.superClass(ComboBox,this,e)}function ComboBoxBuilder(){_.superClass(ComboBoxBuilder,this)}function ContextMenu(e){_.superClass(ContextMenu,this,e)}function ContextMenuBuilder(){_.superClass(ContextMenuBuilder,this)}function DataNavigation(e){_.superClass(DataNavigation,this,e)}function DataNavigationBuilder(){_.superClass(DataNavigationBuilder,this)}function ButtonEdit(e){_.superClass(ButtonEdit,this,e)}function ButtonEditBuilder(){_.superClass(ButtonEditBuilder,this)}function Divider(e){_.superClass(Divider,this,e)}function DividerBuilder(){_.superClass(DividerBuilder,this)}function FileBox(e){_.superClass(FileBox,this,e),this.initialize_editorBase()}function FileBoxBuilder(){_.superClass(FileBoxBuilder,this),this.initialize_editorBaseBuilder()}function FileBoxValueConverter(e){this._element=e}function ExtensionPanel(e){_.superClass(ExtensionPanel,this,e)}function ExtensionPanelBuilder(){}function Form(e){_.superClass(Form,this,e)}function FormBuilder(){_.superClass(FormBuilder,this)}function Frame(){_.superClass(Frame,this),this.initialize_editorBase()}function FrameBuilder(){_.superClass(TextEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function GridPanel(e){_.superClass(GridPanel,this,e)}function GridPanelBuilder(){_.superClass(GridPanelBuilder,this)}function Icon(e){_.superClass(Icon,this,e)}function IconBuilder(){_.superClass(ButtonBuilder,this)}function ImageBox(e){_.superClass(ImageBox,this,e),this.initialize_editorBase()}function ImageBoxBuilder(){_.superClass(ImageBoxBuilder,this),this.initialize_editorBaseBuilder()}function ImageBoxValueConverter(e){this._element=e}function IndeterminateCheckBox(e){_.superClass(IndeterminateCheckBox,this,e),this.initialize_editorBase()}function IndeterminateCheckBoxBuilder(){_.superClass(IndeterminateCheckBoxBuilder,this),this.initialize_editorBaseBuilder()}function Label(e,t){_.superClass(Label,this,e,t),this.initialize_editorBase()}function LabelBuilder(){_.superClass(TextEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function Link(e){_.superClass(Link,this,e)}function LinkBuilder(){_.superClass(LinkBuilder,this)}function MenuBar(e){_.superClass(MenuBar,this,e)}function MenuBarBuilder(){_.superClass(MenuBarBuilder,this)}function NumericBox(e){_.superClass(NumericBox,this,e)}function NumericBoxBuilder(){_.superClass(NumericBoxBuilder,this)}function Panel(e){_.superClass(Panel,this,e)}function PanelBuilder(){_.superClass(PanelBuilder,this)}function PasswordBox(e){_.superClass(PasswordBox,this,e),this.initialize_editorBase()}function PasswordBoxBuilder(){_.superClass(PasswordBoxBuilder,this),this.initialize_editorBaseBuilder()}function PopupButton(e,t){_.superClass(PopupButton,this,e,t),this.buttonInit()}function PopupButtonBuilder(){_.superClass(PopupButtonBuilder,this)}function RadioGroupBuilder(){_.superClass(RadioGroupBuilder,this)}function ScrollPanel(e){_.superClass(ScrollPanel,this,e)}function ScrollPanelBuilder(){_.superClass(ScrollPanelBuilder,this)}function TablePanel(e){_.superClass(TablePanel,this,e)}function TablePanelBuilder(){_.superClass(TablePanelBuilder,this)}function TabPanel(e){_.superClass(TabPanel,this,e)}function TabPanelBuilder(){_.superClass(TabPanelBuilder,this)}function ToggleButton(e){_.superClass(ToggleButton,this,e),this.initialize_editorBase()}function ToggleButtonBuilder(){_.superClass(ToggleButtonBuilder,this),this.initialize_editorBaseBuilder()}function ToolBarBuilder(){_.superClass(ToolBarBuilder,this)}function TreeView(e){_.superClass(TreeView,this,e)}function TreeViewBuilder(){_.superClass(TreeViewBuilder,this)}function View(e){_.superClass(View,this,e);var t=this;this.eventManager=new EventManager,this.openStrategy=new OpenModeDefaultStrategy,this.openStrategy.setView(this),this.members={},this.membersDeferreds={},this.handlers={onBeforeLoaded:$.Deferred(),onLoaded:$.Deferred(),onSelectedElementChange:null},this._initContext();var n=this.getView();n&&(n.onClosing&&n.onClosing(function(e,n){return t.isRemoved?void 0:t.eventManager.trigger("onClosing",t.getContext(),t._getScriptArgs())}),n.onClosed&&n.onClosed(function(e,n){t.close(null,null,!0)})),this.control.get("dataSources").onChange(function(){t._initDataSourceHandlers()})}function ViewBuilder(){_.superClass(ViewBuilder,this)}function ViewPanel(e){_.superClass(ViewPanel,this,e)}function ViewPanelBuilder(){}function DataGridRow(){_.superClass(DataGridRow,this),this._transformRowProperties({rowBackground:"background",rowForeground:"foreground",rowTextStyle:"textStyle",rowStyle:"style"})}function Row(e){_.superClass(Row,this,e)}function RowBuilder(){_.superClass(RowBuilder,this)}function TabPage(e){_.superClass(TabPage,this,e),this.events=new EventsManager;var t=this;this.control.on("close",function(){t.close()})}function TabPageBuilder(){_.superClass(TabPageBuilder,this)}function Cell(e){_.superClass(Cell,this,e)}function CellBuilder(){_.superClass(CellBuilder,this)}function BaseAction(e){this.parentView=e,this._properties=Object.create(null),_.defaults(this._properties,this.defaults),this.initDefaultValues()}function BaseEditAction(e){_.superClass(BaseEditAction,this,e)}function AcceptAction(e){_.superClass(AcceptAction,this,e)}function AcceptActionBuilder(){}function CancelAction(e){_.superClass(CancelAction,this,e)}function CancelActionBuilder(){}function AddAction(e){_.superClass(AddAction,this,e)}function AddActionBuilder(){}function DeleteAction(e){_.superClass(DeleteAction,this,e)}function DeleteActionBuilder(){}function EditAction(e){_.superClass(EditAction,this,e)}function EditActionBuilder(){}function OpenAction(e){_.superClass(OpenAction,this,e)}function OpenActionBuilder(){}function SaveAction(e){_.superClass(SaveAction,this,e)}function SaveActionBuilder(){}function DownloadExecutor(e,t,n){this.guid=guid(),this.options={timeout:6e4,poll:100},this.resultCallback=e,this.successCallback=t,this.failCallback=n}function ServerAction(e){_.superClass(ServerAction,this,e),this.provider=window.InfinniUI.providerRegister.build("ServerActionProvider"),this.updateContentTypeStrategy(),this.on("change:contentType",this.updateContentTypeStrategy)}function ServerActionBuilder(){}function SelectAction(e){_.superClass(SelectAction,this,e)}function SelectActionBuilder(){}function RouteToAction(){_.superClass(RouteToAction,this),this.href=""}function RouteToActionBuilder(){}function UpdateAction(e){_.superClass(UpdateAction,this,e)}function UpdateActionBuilder(){}function ApplicationBuilder(){this.builder||(this.builder=new Builder,this.registerElementBuilders()),window.InfinniUI.global.factory=this}function Builder(){var e=[];this.appView=null,this.register=function(t,n){e[t]=n},this.buildType=function(t,n,i){if(i=i||{},void 0===e[t])return null;var o=_.extend({builder:this,metadata:n},i),r=i.parentView?i.parentView.getContext():{};return e[t].build(r,o)},this.build=function(e,t){var n,i,o=null;t=t||{};for(var r in e){n=r;break}return"undefined"==typeof n||null===n?console.error("Builder: Не переданы метаданные"):(i=e[n],o=this.buildType(n,i,t)),o},this.buildMany=function(e,t){var n=[];if(e)for(var i=0;i0;return e.forEach(function(e){var n=this.createCollectionItem(e,t.length);t.push(n)},this),n&&this.events.onAdd(e),n},Collection.prototype.insert=function(e,t){var n=this.createCollectionItem(t,e);return this._items.splice(e,0,n),this.events.onAdd([t],e),!0},Collection.prototype.insertAll=function(e,t){if(!Array.isArray(t))return!1;var n=this._items,i=t.length>0;return t.forEach(function(t,i){var o=e+i,r=this.createCollectionItem(t,o);n.splice(o,0,r)},this),i&&this.events.onAdd(t,e),i},Collection.prototype.reset=function(e){var t,n;return Array.isArray(e)?(t=this._items.length!==e.length,n=e.map(function(e,n){return t||(t=!this.isEqual(e,this.getCollectionItemValue(n))),this.createCollectionItem(e,n)},this),this._items.length=0,Array.prototype.push.apply(this._items,n),t&&this.events.onReset(),t):!1},Collection.prototype.set=function(e,t){var n=this._items;if(!Array.isArray(e))return!1;var i=n.length!==e.length,o=e.slice();return o.forEach(function(e,t){t=this._items.length)return!1;var t=this.getCollectionItemValue(e);return this._items.splice(e,1),this.events.onRemove([t],e),!0},Collection.prototype.removeAll=function(e){if(!Array.isArray(e))return!1;var t,n=this._items,i=[];if(e.forEach(function(e){i=n.filter(function(t){return this.isEqual(e,this.getItemValue(t))},this),i.forEach(function(e){var t=n.indexOf(e);n.splice(t,1)})},this),t=i.length>0){var o=i.map(function(e){ -return this.getItemValue(e)},this);this.events.onRemove(o)}return t},Collection.prototype.removeRange=function(e,t){var n,i=this._items;if(e>=i.length)return!1;"undefined"==typeof t&&(t=i.length-e);var o=i.splice(e,t);if(n=o.length>0){var r=o.map(function(e){return this.getItemValue(e)},this);this.events.onRemove(r,e)}return n},Collection.prototype.removeEvery=function(e,t){if("function"!=typeof e)return!1;var n,i=this._items,o=i.filter(function(n,i){var o=this.getItemValue(n);return e.call(t,o,i,this)},this);if(o.forEach(function(e){var t=i.indexOf(e);i.splice(t,1)}),n=o.length>0){var r=o.map(function(e){return this.getItemValue(e)},this);this.events.onRemove(r)}return n},Collection.prototype.clear=function(){var e=this._items,t=e.length>0,n=e.map(function(e){return this.getItemValue(e)},this);return e.length=0,t&&this.events.onRemove(n,0),t},Collection.prototype.getById=function(e){if(!this.hasIdProperty)return!1;for(var t,n,i=this._items,o=0;o=n.length)return-1;for(var o=t;o>0;o-=1){var r=this.getItemValue(n[o]);if(this.isEqual(e,r)){i=o;break}}return i},Collection.prototype.findIndex=function(e,t){if("function"!=typeof e)return!1;var n=this._items,i=-1,o=n.some(function(n,o){var r=this.getItemValue(n);return i=o,e.call(t,r,o,this)},this);return o?i:-1},Collection.prototype.contains=function(e,t){t=t||0;for(var n=!1,i=this._items,o=t;oe||e>=i.length||e===t)return!1;n=i.splice(e,1).pop(),e>t?i.splice(t,0,n):i.splice(t-1,0,n);var o=i[e]!==n;if(o){var r=this.getItemValue(n);this.events.onMove([r],[r],e,t)}return o},Collection.prototype.sort=function(e){"function"!=typeof e&&(e=this._comparator);var t=this._items,n=this,i=t.slice(),o=!1;t.sort(function(t,i){return e(n.getItemValue(t),n.getItemValue(i))});for(var r=0;rn;n+=1)if(t===e[n].view){e.splice(n,1);break}},this.getLastView=function(){return 0!==e.length?e[e.length-1]:void 0},this.getList=function(){return e}};window.InfinniUI.views=new OpenedViewCollection,window.InfinniUI.DateUtils=function(){function e(e){return null===e||"undefined"==typeof e?e:moment(e).toDate()}function t(e){return e instanceof Date?new Date(e.getTime()):e}function n(e,t,n){var i,o=moment(t||null),r=moment(n||null),a=moment(e);return i=o.isValid()&&a.isBefore(o)?o.toDate():r.isValid()&&a.isAfter(r)?r.toDate():e}function i(e,t,n,i){var o=!0,r=moment(t||null),a=moment(n||null),l=moment(e);return r.isValid()&&a.isValid()?o=l.isSameOrBefore(a,i)&&l.isSameOrAfter(r,i):r.isValid()?o=l.isSameOrAfter(r,i):a.isValid()&&(o=l.isSameOrBefore(a,i)),o}function o(e){var t,n=["HH:mm","HH:mm:ss","HH:mm:ss.SSS","HHmm","HHmmss","HHmmss.SSS"],i=moment(e,n);return i.isValid()&&(t=new Date(0),t.setHours(i.hours(),i.minute(),i.second(),i.millisecond())),t}function r(e){var t=moment(e),n=null;return t.isValid()&&(n=t.toDate()),n}function a(e,t){var n=e;if("undefined"!=typeof t&&e instanceof Date){var i=e.getTimezoneOffset();t!==i&&(n=new Date(e.getTime()+60*(i-t)*1e3))}return n}function l(e,t){var n=e;if("undefined"!=typeof t&&e instanceof Date){var i=e.getTimezoneOffset();t!==i&&(n=new Date(e.getTime()-60*(i-t)*1e3))}return n}function s(e,t){var n=t||{};if("undefined"==typeof e||null===e)return null;if(e.constructor!==Date)return null;var i=a(e,n.timezoneOffset),o=[p(i.getFullYear(),4),p(i.getMonth()+1,2),p(i.getDate(),2)].join("-"),r=[p(i.getHours(),2),p(i.getMinutes(),2),p(i.getSeconds(),2)].join(":"),l=p(i.getMilliseconds(),3)+"0",s=n.timezoneOffset;"undefined"!=typeof s&&null!==s||(s=e.getTimezoneOffset());var u=Math.abs(s),d=Math.sign(s)>0?"-":"+",c=[p(Math.floor(u/60),2),p(u%60,2)].join(":");return o+"T"+r+"."+l+d+c}function u(e){var t,n=null;return e&&e.constructor===String?t=new Date(e):e&&e.constructor===Date&&(t=e),t&&(t.setUTCHours(0,0,0,0),n=t.getTime()/1e3),n}function d(e){var t,n,i=null;return e&&e.constructor===String?t=new Date(e):e&&e.constructor===Date&&(t=e),t&&(n=new Date(0),n.setUTCHours(t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()),i=n.getTime()/1e3),i}function c(e){var t;return t=typeof e===Date?new Date(e.getTime()):"number"==typeof e?new Date(1e3*e):"undefined"==typeof e||null===e?null:r(e)}function h(){return f}function p(e,t){var n=""+e,i="";return n.lengthe?-1:1:0})}m();var f;return{toISO8601:s,dateToTimestamp:u,dateToTimestampTime:d,changeTimezoneOffset:a,restoreTimezoneOffset:l,toDate:r,createDate:c,parseTimeISO8601toDate:o,parseISO8601toDate:e,checkRangeDate:i,getNearestDate:n,cloneDate:t,getDefaultTimeZone:h}}();var domHelper={whenReady:function(e,t,n){var i=this;void 0===n&&(n=100),e()?t():n>0&&setTimeout(function(){i.whenReady(e,t,n-1)},510)}};window.InfinniUI.ObjectUtils=function(){function e(e,t){if(null!==e&&void 0!==e&&null!==t&&void 0!==t){for(var n=e,r=t.length,l=0;r>l;++l){if(null===n||void 0===n)return null;var s=t[l],u=i(s);n=u>=0?o(n,u):a(n,s)}return n}return e}function t(e,t,n){for(var s=e,u=t.length-1,d=t[0],c=i(d),h=0;u>h;++h){var p=c>=0?o(s,c):a(s,d),m=t[h+1],f=i(m);f>=0?($.isArray(p)||(p=[]),r(s,c,p)):($.isPlainObject(p)||(p={}),l(s,d,p)),s=p,d=m,c=f}c>=0?r(s,c,n):l(s,d,n)}function n(e){return _.isEmpty(e)?null:e.split(".")}function i(e){var t=-1;if("$"===e)t=0;else{var n=parseInt(e);isNaN(n)||(t=n)}return t}function o(e,t){return null!==e&&void 0!==e&&"[object Array]"===Object.prototype.toString.call(e)&&t>=0&&t=0&&tt;t+=1)"'"===e[t].slice(-1)&&(e[t]=e[t].slice(1,-1)),e[t]=i(e[t]),e[t]=n(e[t])}return e}function r(e,t){return"match"===t.functionName&&(e=t.children[0].valueName),e}function a(e,t,l){var u,d=[];l=r(l,e);for(var c=0,h=e.children.length;h>c;c+=1)"function"===e.children[c].type&&(u=e.children[c],e.children[c].valueName=a(u,t,l),e.children[c].newType="value"),"value"!==e.children[c].type&&"value"!==e.children[c].newType||("value"===e.children[c].type&&(e.children[c].valueName=n(e.children[c].valueName),e.children[c].valueName=i(e.children[c].valueName),e.children[c].valueName=o(e.children[c].valueName)),d.push(e.children[c].valueName));return s[e.functionName](d,t,l)}if(!t)return e;var l=JSON.parse(JSON.stringify(e)),s=filterItems.filterMethods,u=filterItems.filterTreeBuilder.buildUpFilterTree(t);return a(u,l)}}(filterItems);window.InfinniUI.FilterItems=filterItems,filterItems.filterTreeBuilder=function(){var e={},t=function(e){for(var t,n,i,o,r,a=/date\(\'[0-9a-zA-Z\:\-\+\.\s]+\'\)/g,l=/\,[a-zA-Z0-9\'\,\_\.]+\)/g,s=/\[[a-zA-Z0-9\'\_\.]+\]/g,u=/[a-zA-Z]+[(]|\[[a-zA-Z0-9\S]+\]|[-\']{0,1}[a-zA-Z0-9_\.]+[\']{0,1}[,)$]/g,d=/[)]/g,c=/\'([a-zA-Z0-9\S\W\D]+\s*)+\'/g,h=/\s+/g,p=/\'([a-zA-Z0-9\s]+\s*)+\'/g,m=[];t=a.exec(e);)n=Date.parse(t[0].slice(6,-2))/1e3+"",e=e.slice(0,t.index)+n+e.slice(t.index+t[0].length),a.lastIndex=t.index+n.length;for(;t=c.exec(e);){if(n=t[0],-1!==n.search(h)||-1!==n.search(p))for(;i=p.exec(n);)o=i[0].replace(h,"_"),n=n.slice(0,i.index)+o+n.slice(i.index+i[0].length);else r=n.slice(1,-1),n="tmpRE";e=e.slice(0,t.index)+n+e.slice(t.index+t[0].length),c.lastIndex=t.index+n.length}for(e=e.replace(/\s+/g,"");t=l.exec(e);)n="["+t[0].slice(1,-1)+"])",e=e.slice(0,t.index+1)+n+e.slice(t.index+t[0].length),l.lastIndex=t.index+n.length;for(;t=s.exec(e);)n=t[0].slice(1,-1),e=e.slice(0,t.index)+n+e.slice(t.index+t[0].length),s.lastIndex=t.index+n.length;for(;t=u.exec(e);)t[0].length>1&&(","===t[0].slice(-1)||")"===t[0].slice(-1))&&(t[0]=t[0].slice(0,-1)),t[0].length>1&&"'"===t[0].slice(0,1)&&(t[0]=t[0].slice(1,-1)),-1!==t[0].search(/tmpRE/)&&(t[0]=t[0].slice(1,-1).split(","),t[0][0]=r),m.push(t);for(;t=d.exec(e);)m.push(t);return m.sort(function(e,t){return e.index-t.index}),m},n=function(e){for(var t,n,i,o,r=[],a=[],l=[],s=0,u=0,d=e.length;d>u;u+=1)n="string"==typeof e[u][0]?e[u][0].slice(-1):"]","("===n?(t={},t.type="function",t.functionName=e[u][0].slice(0,-1),t.index=e[u].index,r.push(t)):")"===n?(l[s]=[],o=r.pop(),o.range=[],o.range.push(o.index),o.children=[],o.range.push(e[u].index),l[s]=o,s+=1):(i={},i.type="value",i.valueName=e[u][0],i.index=e[u].index,a.push(i));return[l,a]},i=function(e,t){for(var n=0,i=t.length;i>n;n+=1)for(var o=0,r=e.length;r>o;o+=1)null!==t[n]&&t[n].index>e[o].range[0]&&t[n].indexe[n].range[0]&&e[t].range[1]e[t].range[0]){e[n].children.unshift(e[t]),e.splice(t,1),t-=1;break}e[n].children.push(e[t]),e.splice(t,1),t-=1;break}return e[0]};return e.buildUpFilterTree=function(e){var r;return r=t(e),r=n(r),r=i(r[0],r[1]),o(r)},e}(),filterItems.filterMethods=function(){var e={};return e.eq=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])===e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])===e[1]&&r.push(t[l]);return r},e.and=function(e,t,n){return _.intersection.apply(_,e)},e.or=function(e,t,n){return _.union.apply(_,e)},e.not=function(e,t,n){var i=t.slice();return _.difference(i,e[0])},e.notEq=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])!==e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])!==e[1]&&r.push(t[l]);return r},e.gt=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])>e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])>e[1]&&r.push(t[l]);return r},e.gte=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])>=e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])>=e[1]&&r.push(t[l]);return r},e.lt=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])<=e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])<=e[1]&&r.push(t[l]);return r},e["in"]=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)-1!==_.indexOf(e[1],a.getPropertyValue(t[l][n][u],e[0]))&&i.push(t[l]);o===i.length&&r.push(t[l])}else-1!==_.indexOf(e[1],a.getPropertyValue(t[l],e[0]))&&r.push(t[l]);return r},e.notIn=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)-1===_.indexOf(e[1],a.getPropertyValue(t[l][n][u],e[0]))&&i.push(t[l]);o===i.length&&r.push(t[l])}else-1===_.indexOf(e[1],a.getPropertyValue(t[l],e[0]))&&r.push(t[l]);return r},e.exists=function(e,t,n){var i,o=[],r=InfinniUI.ObjectUtils;void 0===e[1]&&(e[1]=!0);for(var a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),e[1]===!0?_.isUndefined(i)||_.isNull(i)||o.push(t[a]):(_.isUndefined(i)||_.isNull(i))&&o.push(t[a]);return o},e.match=function(e,t,n){for(var i=[],o=InfinniUI.ObjectUtils,r=0,a=e[1].length;a>r;r+=1)void 0!==o.getPropertyValue(e[1][r],e[0])&&i.push(e[1][r]);return i},e.all=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1){o=a.getPropertyValue(t[l],e[0]),i=0;for(var u=0,d=o.length;d>u;u+=1)-1!==_.indexOf(e[1],o[u])&&(i+=1);d===i&&r.push(t[l])}return r},e.anyIn=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(-1!==_.indexOf(e[1],i[s])){o.push(t[a]);break}}return o},e.anyNotIn=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1){o=a.getPropertyValue(t[l],e[0]),i=0;for(var u=0,d=o.length;d>u;u+=1)-1!==_.indexOf(e[1],o[u])&&(i+=1);0===i&&r.push(t[l])}return r},e.anyEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),-1!==_.indexOf(i,e[1])&&o.push(t[a]);return o},e.anyNotEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]!==e[1]){o.push(t[a]);break}}return o},e.anyGt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]>e[1]){o.push(t[a]);break}}return o},e.anyGte=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]>=e[1]){o.push(t[a]);break}}return o},e.anyLt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]<=e[1]){o.push(t[a]);break}}return o},e.sizeEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length===e[1]&&o.push(t[a]);return o},e.sizeNotEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length!==e[1]&&o.push(t[a]);return o},e.sizeGt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length>e[1]&&o.push(t[a]);return o},e.sizeGte=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length>=e[1]&&o.push(t[a]);return o},e.sizeLt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.lengtha;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length<=e[1]&&o.push(t[a]);return o},e.regexp=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l="",s=1,u=e[1].length;u>s;s+=1)l+=e[1][s];o=new RegExp(e[1][0],l);for(var d=0,c=t.length;c>d;d+=1)i=a.getPropertyValue(t[d],e[0]),-1!==i.search(o)&&r.push(t[d]);return r},e.text=function(e,t,n){for(var i,o=[],r=e[0].replace("_"," ").toLowerCase(),a=0,l=t.length;l>a;a+=1)i=JSON.stringify(t[a]).toLowerCase(),-1!==i.indexOf(r)&&o.push(t[a]);return o},e.startsWith=function(e,t,n){var i=e[0],o=_.isArray(e[1])?e[1][0]:e[1],r=_.isArray(e[1])?e[1][1]!==!1:!0,a="^{expectedStartValue}".replace("{expectedStartValue}",o),l=r?"i":"",s=_.filter(t,function(e){return new RegExp(a,l).test(e[i])});return s},e.endsWith=function(e,t,n){var i=e[0],o=_.isArray(e[1])?e[1][0]:e[1],r=_.isArray(e[1])?e[1][1]!==!1:!0,a="{expectedEndValue}$".replace("{expectedEndValue}",o),l=r?"i":"",s=_.filter(t,function(e){return new RegExp(a,l).test(e[i])});return s},e.contains=function(e,t,n){var i=e[0],o=_.isArray(e[1])?e[1][0]:e[1],r=_.isArray(e[1])?e[1][1]!==!1:!0,a=r?"i":"",l=_.filter(t,function(e){return new RegExp(o,a).test(e[i])});return l},e}(),window.InfinniUI.HashMap=HashMap,Object.defineProperties(HashMap.prototype,{length:{get:function(){return this._keys.length}},keys:{get:function(){return this._keys}},values:{get:function(){return this._values}}}),HashMap.prototype.add=function(e,t){var n=this._getIndexOfKey(e);-1===n?(this._keys.push(e),this._values.push(t)):this._values[n]=t},HashMap.prototype.remove=function(e){var t=this._getIndexOfKey(e);-1!==t&&(this._keys.splice(t,1),this._values.splice(t,1))},HashMap.prototype.getKeyByValue=function(e){var t,n=this._getIndexOfValue(e);return-1!==n&&(t=this._keys[n]),t},HashMap.prototype.findIndex=function(e,t){for(var n,i,o=-1,r=0;re)t=null;else{if(e>=this.KeyCode.NUMPAD_0&&e<=this.KeyCode.NUMPAD_9)n=e-48;else switch(e){case 110:n=this.KeyCode.DELETE;break;case 107:n=this.KeyCode.PLUS;break;case 109:n=this.KeyCode.MINUS;break;case 106:n=this.KeyCode.ASTERISK;break;case 111:n=this.KeyCode.SLASH;break;case 188:n=44;break;case 173:n=45;break;case 190:n=46;break;case 191:n=47;break;case 192:n=96;break;case 219:n=91;break;case 220:n=92;break;case 221:n=93;break;case 222:n=39;break;default:n=e}t=String.fromCharCode(n)}return t}};var LOG_LEVEL={debug:1,info:2,warn:3,error:4,trace:5};_.extend(Logger.prototype,{getLevel:function(){return this.level},setLevel:function(e){this.level=e},addMessage:function(e,t){this.messages.push({type:e,message:t})},debug:function(e){this.level>LOG_LEVEL.debug||(this.showMessages&&console.debug(e.message||e),this.addMessage(LOG_LEVEL.debug,e))},info:function(e){this.level>LOG_LEVEL.info||(this.showMessages&&console.info(e.message||e),this.addMessage(LOG_LEVEL.info,e))},warn:function(e){this.level>LOG_LEVEL.warn||(this.showMessages&&console.warn(e.message||e),this.addMessage(LOG_LEVEL.warn,e))},error:function(e){this.level>LOG_LEVEL.error||(this.showMessages&&console.error(e.message||e),this.addMessage(LOG_LEVEL.error,e))},trace:function(e){this.level>LOG_LEVEL.trace||(this.showMessages&&console.error(e.message||e),this.addMessage(LOG_LEVEL.trace,e))}}),window.InfinniUI.global.logger=new Logger,InfinniUI.Metadata=InfinniUI.Metadata||{},InfinniUI.Metadata.isValidValue=function(e,t){var n=!1;for(var i in t)if(t[i]===e){n=!0;break}return n},InfinniUI.Metadata.isBindingMetadata=function(e){return $.isPlainObject(e)&&"Source"in e},Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},String.prototype.includes||(String.prototype.includes=function(){return-1!==String.prototype.indexOf.apply(this,arguments)});var stringUtils={format:function(e,t){return e.replace(/{(\d+)}/g,function(e,n){return"undefined"!=typeof t[n]?t[n]:e})},formatProperty:function(e,t){if(!t||0==t.length||""==e)return e;for(var n=e.split("."),i=t.length-1,o=n.length-1;o>=0;o--)"#"==n[o]&&i>=0?(n[o]=t[i],i--):("$"==n[o]||stringUtils.isNumeric(n[o]))&&i--;return n.join(".")},padLeft:function(e,t,n){"undefined"!=typeof n&&null!==n||(n=" ");var i=String(e);return i.lengtho;o++)if(i[n[o]])i=i[n[o]];else{ -if(!t)return{};i[n[o]]={},i=i[n[o]]}return i},_notifyAboutPropertyChanged:function(e,t){var n=this._getHandlersSubTree(e),i=null!=this.mirroringTo&&null!=this.mirroringFrom&&0==e.indexOf(this.mirroringTo),o=e.replace(this.mirroringTo,this.mirroringFrom);this._notifyAboutPropertyChanged_bubblingAction(e,t,n),this._notifyAboutPropertyChanged_capturingAction(e,t,n),i&&(n=this._getHandlersSubTree(o),this._notifyAboutPropertyChanged_capturingAction(o,t,n))},_notifyAboutPropertyChanged_capturingAction:function(e,t,n){var i,o,r;for(var a in n)$.isFunction(n[a])&&(r=n[a],this._isOwnerAlive(r)?this._callHandlerAboutPropertyChanged(r,e,t):delete n[a]);for(var a in n)$.isPlainObject(n[a])&&"*"!=a&&(i=$.isPlainObject(t)?t[a]:void 0,o=""==e?a:e+"."+a,this._notifyAboutPropertyChanged_capturingAction(o,i,n[a]))},_notifyAboutPropertyChanged_bubblingAction:function(e,t,n){function i(n){var i;if("*"in n)for(var o in n["*"])i=n["*"][o],l._isOwnerAlive(i)?l._callHandlerAboutPropertyChanged(i,e,t):delete n["*"][o]}var o,r=e.split("."),a=this.handlersTree,l=this;if(i(a),""!=e)for(var s=0,u=r.length;u>s&&(o=r[s],a[o]);s++)a=a[o],i(a)},_isOwnerAlive:function(e){return e._owner&&"isRemoved"in e._owner?"function"==typeof e._owner.isRemoved?e._owner.isRemoved():!e._owner.isRemoved:!0},_callHandlerAboutPropertyChanged:function(e,t,n){var i={property:t,newValue:this.getProperty(t),oldValue:n,source:this.source};e(this.context,i)},setMirroring:function(e,t){this.mirroringFrom=e,this.mirroringTo=t}});var urlManager={getParams:function(){var e,t,n=location.search,i={};if(0==n.length)return i;n=n.substr(1),e=n.split("&");for(var o=0,r=e.length;r>o;o++)t=e[o].split("="),i[t[0]]=t[1];return i},clearUrlSearchPath:function(){var e,t,n=location.search;n.length>0&&(e=location.href.indexOf(n),e>0&&(t=location.href.substr(0,e))),t&&history.pushState(null,null,t)},setParameter:function(e,t){var n=location.search,i=_.isEmpty(n)?stringUtils.format("?{0}={1}",[e,t]):stringUtils.format("{0}&{1}={2}",[n,e,t]),o=stringUtils.format("{0}//{1}{2}{3}{4}",[location.protocol,location.host,location.pathname,i,location.hash]);history.pushState(null,null,o)},deleteParameter:function(e){function t(e){var t=[];return _.mapObject(e,function(e,n){var i=stringUtils.format("{0}={1}",[n,e]);t.push(i)}),_.isEmpty(t)?"":"?"+t.join("&")}var n=urlManager.getParams();delete n[e];var i=t(n),o=stringUtils.format("{0}//{1}{2}{3}{4}",[location.protocol,location.host,location.pathname,i,location.hash]);history.pushState(null,null,o)}};window.InfinniUI.UrlManager=urlManager,window.InfinniUI.global.messageBus=new MessageBus,window.messageTypes={onViewBuildError:{name:"onViewBuildError"},onViewCreated:{name:"onViewCreated"},onChangeLayout:{name:"OnChangeLayout"},onNotifyUser:{name:"onNotifyUser"},onToolTip:{name:"onToolTip"},onContextMenu:{name:"onContextMenu"},onOpenContextMenu:{name:"onOpenContextMenu"},onDataLoading:{name:"onDataLoading"},onDataLoaded:{name:"onDataLoaded"}};var ajaxRequestMixin=function(e){function t(e,t){var n;return"function"==typeof e&&(n=e.apply(null,Array.prototype.slice.call(t))),n}return{onBeforeRequest:function(n){return function(){return e.send(messageTypes.onDataLoading,{}),t(n,arguments)}},onSuccessRequest:function(n){return function(){return e.send(messageTypes.onDataLoaded,{success:!0}),t(n,arguments)}},onErrorRequest:function(n){return function(){return e.send(messageTypes.onDataLoaded,{success:!1}),t(n,arguments)}}}}(window.InfinniUI.global.messageBus),bindUIElementsMixin={bindUIElements:function(){if(this.ui={},"undefined"!=typeof this.UI)for(var e in this.UI)this.UI.hasOwnProperty(e)&&(this.ui[e]=this.$(this.UI[e]))}},eventHandlerMixin={addEventHandler:function(e,t){if(this.initEventHandlerMixin(),null===e||"undefined"==typeof e)return!1;if(null===t||"undefined"==typeof t)return!1;"undefined"==typeof this.eventHandlers[e]&&(this.eventHandlers[e]=[]);var n=this.eventHandlers[e];-1===n.indexOf(t)&&n.push(t)},callEventHandler:function(e){if("undefined"!=typeof this.eventHandlers&&null!==e&&"undefined"!=typeof e){var t=this.eventHandlers[e];if("undefined"!=typeof t){var n,i=Array.prototype.slice.call(arguments,1),o=i.pop();"function"==typeof o&&(n=o),o=i.pop(),_.each(t,function(e){var t=e.apply(void 0,o);"undefined"!=typeof n&&n(t)})}}},initEventHandlerMixin:function(){"undefined"==typeof this.eventHandlers&&(this.eventHandlers={})}},Control=function(e){this.controlModel=this.createControlModel(),this.controlView=this.createControlView(this.controlModel,e),this.initHandlers()};_.extend(Control.prototype,{createControlModel:function(){throw"Не перегружен абстрактный метод Control.createControlModel()"},createControlView:function(e,t){throw"Не перегружен абстрактный метод Control.createControlView()"},initHandlers:function(){this.controlView.on("onLoaded",function(){this.controlModel.set("isLoaded",!0)},this)},set:function(e,t){this.controlModel.set(e,t)},get:function(e){return this.controlModel.get(e)},on:function(e,t){return this.controlModel.on(e,t)},render:function(){return this.controlView.render().$el},getChildElements:function(){return[]},onLoaded:function(e){this.controlModel.on("change:isLoaded",function(t){t&&e()})},isLoaded:function(){return this.controlModel.get("isLoaded")},onBeforeClick:function(e){this.controlView.on("beforeClick",e)},onClick:function(e){this.controlView.$el.on("click",e)},onDoubleClick:function(e){this.controlView.$el.on("dblclick",e)},onMouseDown:function(e){this.controlView.$el.on("mousedown",e)},onMouseUp:function(e){this.controlView.$el.on("mouseup",e)},onMouseEnter:function(e){this.controlView.$el.on("mouseenter",e)},onMouseLeave:function(e){this.controlView.$el.on("mouseleave",e)},onMouseMove:function(e){this.controlView.$el.on("mousemove",e)},onMouseWheel:function(e){this.controlView.$el.on("mousewheel DOMMouseScroll",e)},onKeyDown:function(e){this.controlView.$el.on("keydown",e)},onKeyUp:function(e){this.controlView.$el.on("keyup",e)},remove:function(){this.controlView.remove()},setFocus:function(){this.controlView.setFocus()}}),InfinniUI.Control=Control;var ControlModel=Backbone.Model.extend({defaults:{text:null,name:null,enabled:!0,parentEnabled:!0,visible:!0,textHorizontalAlignment:InfinniUI.TextHorizontalAlignment.left,horizontalAlignment:"Stretch",verticalAlignment:"Top",textStyle:null,background:null,foreground:null,isLoaded:!1,validationState:"success",validationMessage:"",focusable:!0,focused:!1},initialize:function(){this.set("guid",guid(),{silent:!0}),this.on("change:focused",function(e,t){this.trigger(t?"OnGotFocus":"OnLostFocus")})},set:function(e,t,n){var i,o=this.defaults;if(null==e)return this;"object"==typeof e?(i=e,n=t):(i={})[e]=t;for(var r in i)"undefined"!=typeof i[r]&&null!==i[r]||r in o&&(i[r]=o[r]);return Backbone.Model.prototype.set.call(this,i,n)}});InfinniUI.ControlModel=ControlModel;var ControlView=Backbone.View.extend({initialize:function(){this.wasRendered=!1,this.once("render",this.initHandlersForProperties,this),this._initDomHandlers()},classNameFocused:"pl-focused",_initDomHandlers:function(){var e=this,t=this.$el;t[0].addEventListener("click",function(t){e.trigger("beforeClick",null,{value:t})},!0)},initHandlersForProperties:function(){this.listenTo(this.model,"change:visible",this.updateVisible),this.listenTo(this.model,"change:horizontalAlignment",this.updateHorizontalAlignment),this.listenTo(this.model,"change:textHorizontalAlignment",this.updateTextHorizontalAlignment),this.listenTo(this.model,"change:verticalAlignment",this.updateVerticalAlignment),this.listenTo(this.model,"change:enabled",this.updateEnabled),this.listenTo(this.model,"change:name",this.updateName),this.listenTo(this.model,"change:style",this.updateStyle),this.listenTo(this.model,"change:text",this.updateText),this.listenTo(this.model,"change:textStyle",this.updateTextStyle),this.listenTo(this.model,"change:background",this.updateBackground),this.listenTo(this.model,"change:foreground",this.updateForeground),this.listenTo(this.model,"change:validationState",this.updateValidationState),this.listenTo(this.model,"change:focusable",this.updateFocusable),this.listenTo(this.model,"change:focused",this.updateFocused),this.initFocusHandlers()},initFocusHandlers:function(){function e(e){o.set("focused",!0)}function t(e){i.isControlElement(e.relatedTarget)?o.set("focused",!0):o.set("focused",!1)}var n=this.$el,i=(this.el,this),o=this.model;n.on("focusin",e).on("focusout",t)},isControlElement:function(e){return this.el===e||$.contains(this.el,e)},updateProperties:function(){this.updateVisible(),this.updateTextHorizontalAlignment(),this.updateHorizontalAlignment(),this.updateVerticalAlignment(),this.updateEnabled(),this.updateName(),this.updateText(),this.updateStyle(),this.updateTextStyle(),this.updateBackground(),this.updateForeground(),this.updateValidationState(),this.updateFocusable(),this.updateFocused(),this.updateViewMode()},updateFocusable:function(){},getElementForFocus:function(){return this.$el},updateFocused:function(){var e=this.model.get("focused");if(e){var t=this.getElementForFocus();t&&t.length}this.$el.toggleClass(this.classNameFocused,e)},onFocusHandler:function(e){},updateVisible:function(){var e=this.model.get("visible");this.$el.toggleClass("hidden",!e),this.onUpdateVisible()},onUpdateVisible:function(){this.updateLayout()},updateLayout:function(){var e=window.InfinniUI.global.messageBus;e.send("OnChangeLayout",{})},updateEnabled:function(){var e=this.model.get("enabled");this.$el.toggleClass("pl-disabled",!e)},updateVerticalAlignment:function(){this.switchClass("verticalAlignment",this.model.get("verticalAlignment"),this.$el,!1)},updateTextHorizontalAlignment:function(){this.switchClass("pl-text-horizontal",this.model.get("textHorizontalAlignment"))},updateHorizontalAlignment:function(){this.switchClass("pl-horizontal",this.model.get("horizontalAlignment"))},updateName:function(){var e=this.model.get("name"),t=this.$el.attr("data-pl-name");e!=t&&"string"==typeof e&&this.$el.attr("data-pl-name",e)},updateText:function(){},updateTextStyle:function(){var e=this.model.get("textStyle");this.currentTextStyle&&this.$el.removeClass(this.valueToTextClassName(this.currentTextStyle)),e&&this.$el.addClass(this.valueToTextClassName(e)),this.currentTextStyle=e},updateBackground:function(){var e=this.model.get("background");this.currentBackground&&this.$el.removeClass(this.valueToBackgroundClassName(this.currentBackground)),e&&this.$el.addClass(this.valueToBackgroundClassName(e)),this.currentBackground=e},updateForeground:function(){var e=this.model.get("foreground");this.currentForeground&&this.$el.removeClass(this.valueToForegroundClassName(this.currentForeground)),e&&this.$el.addClass(this.valueToForegroundClassName(e)),this.currentForeground=e},updateStyle:function(){var e=this.model.get("style");this.currentStyle&&this.$el.removeClass(this.currentStyle),e&&this.$el.addClass(e),this.currentStyle=e},updateViewMode:function(){"FormGroup"==this.viewMode&&this.$el.addClass("pl-form-group")},updateValidationState:function(){var e=this.model.get("validationState"),t=this.model.get("validationMessage");switch(e){case"success":this.$el.removeClass("has-warning has-error"),this.hideErrorMessage();break;case"warning":this.$el.removeClass("has-error").addClass("has-warning"),this.showErrorMessage(t);break;case"error":this.$el.removeClass("has-warning").addClass("has-error"),this.showErrorMessage(t)}},showErrorMessage:function(e){var t=$(_.template('')({message:e}));this.hideErrorMessage(),this.$el.find(".form-control:first").before(t),t.tooltip({container:"body"})},hideErrorMessage:function(){this.$el.find(".error-icn").remove()},rerender:function(){this.wasRendered&&this.render()},prerenderingActions:function(){this.wasRendered=!0},postrenderingActions:function(e){this.delegateEvents(),e=void 0===e?!0:e,e&&this.trigger("onLoaded")},switchClass:function(e,t,n,i){"undefined"==typeof i?i="-":i===!1&&(i="");var o=e+i,r=new RegExp("(^|\\s)"+o+"\\S+","ig"),a=n||this.$el;a.removeClass(function(e,t){return(t.match(r)||[]).join(" ")}).addClass(o+t)},valueToBackgroundClassName:function(e){return"pl-"+e.toLowerCase()+"-bg"},valueToForegroundClassName:function(e){return"pl-"+e.toLowerCase()+"-fg"},valueToTextClassName:function(e){return"pl-"+e.toLowerCase()},renderTemplate:function(e){var t=this.getData();this.$el.html(e(t)),this.bindUIElements()},getData:function(){var e=this.model;return{name:e.get("name"),text:e.get("text"),focusable:e.get("focusable"),focused:e.get("focused"),enabled:e.get("enabled"),visible:e.get("visible"),horizontalAlignment:e.get("horizontalAlignment"),verticalAlignment:e.get("verticalAlignment"),textHorizontalAlignment:e.get("textHorizontalAlignment"),textVerticalAlignment:e.get("textVerticalAlignment"),textStyle:e.get("textStyle"),foreground:e.get("foreground"),background:e.get("background")}},setFocus:function(){this.$el.focus()}});_.extend(ControlView.prototype,bindUIElementsMixin,eventHandlerMixin),InfinniUI.ControlView=ControlView;var buttonControlMixin={click:function(){this.controlView.$el.click()}};_.inherit(ContainerControl,Control),_.extend(ContainerControl.prototype,{});var ContainerModel=ControlModel.extend({defaults:_.defaults({itemTemplate:null},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.set("items",new Collection)}}),ContainerView=ControlView.extend({initialize:function(e){ControlView.prototype.initialize.call(this,e),this.childElements=[],this.listenTo(this.model,"change:groupValueSelector",this.updateGrouping),this.updateGrouping()},updateGrouping:function(){throw"ContainerView.updateGrouping В потомке ContainerView не реализовано обновление группировок."},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this);var e=this;this.model.get("items").onChange(function(t){switch(t.action){case"replace":break;default:e.rerender()}})},removeChildElements:function(){for(var e=0,t=this.childElements.length;t>e;e++)this.childElements[e].remove();this.childElements=[]},addChildElement:function(e){this.childElements.push(e)}}),editorBaseControlMixin={initialize_editorBaseControl:function(){},setValue:function(e){this.controlModel.set("value",e)},getValue:function(){return this.controlModel.get("value")},onValueChanging:function(e){this.controlModel.onValueChanging(e)},onValueChanged:function(e){this.controlModel.onValueChanged(e)}},editorBaseModelMixin={defaults_editorBaseModel:{value:null,hintText:null,errorText:null,warningText:null,labelFloating:!1},initialize_editorBaseModel:function(){this.eventManager=new EventManager,this.isInited=!0},transformValue:function(e){return e},_applyDefaultValue:function(e){var t=_.result(this,"defaults");return"undefined"==typeof e?t.value:e},_setValue:function(e,t){e=this.transformValue(e),e=this._applyDefaultValue(e);var n=this.get("value"),i={oldValue:n,newValue:e};e!==n&&(this.isInited?this.eventManager.trigger("onValueChanging",i)&&(ContainerModel.prototype.set.call(this,"value",e,t||{}),this.trigger("onValueChanged",i)):ContainerModel.prototype.set.call(this,"value",e,t||{}))},set:function(e,t,n){var i,n;if(null===e)return this;"object"==typeof e?(i=e,n=t):(i={})[e]=t,n=n||{},"value"in i&&(this._setValue(i.value,n),delete i.value);var o=!1;for(var r in i){o=!0;break}return o?ContainerModel.prototype.set.call(this,i,n):!1},getValue:function(){return this.get("value")},isSetValue:function(e){return null!==e&&"undefined"!=typeof e&&""!==e},onValueChanging:function(e){this.eventManager.on("onValueChanging",e)},onValueChanged:function(e){this.on("onValueChanged",e)}},editorBaseViewMixin={UI:{hintText:".pl-control-hint-text",warningText:".pl-control-warning-text",errorText:".pl-control-error-text"},getData:function(){var e=this.model;return{guid:e.get("guid")}},initHandlersForProperties:function(){this.listenTo(this.model,"onValueChanged",this.updateValue),this.listenTo(this.model,"change:hintText",this.updateHintText),this.listenTo(this.model,"change:errorText",this.updateErrorText),this.listenTo(this.model,"change:warningText",this.updateWarningText)},updateProperties:function(){this.updateValue(),this.updateLabelFloating(),this.updateHintText(),this.updateErrorText(),this.updateWarningText()},updateValue:function(){throw"editorBaseViewMixin.updateValue В потомке editorBaseViewMixin не реализовано обновление данных."},updateValueState:function(){var e=this.model.get("value"),t=_.isEmpty(e)&&!_.isNumber(e);this.$el.toggleClass("pl-empty-text-editor",t)},updateLabelFloating:function(){var e=this.model.get("labelFloating");this.$el.toggleClass("pl-label-floating",e===!0)},updateHintText:function(){var e=this.model.get("hintText");e?this.ui.hintText.text(e).removeClass("hidden"):this.ui.hintText.text("").addClass("hidden")},updateErrorText:function(){var e=this.model.get("errorText");e?this.ui.errorText.text(e).removeClass("hidden"):this.ui.errorText.text("").addClass("hidden")},updateWarningText:function(){var e=this.model.get("warningText");e?this.ui.warningText.text(e).removeClass("hidden"):this.ui.warningText.text("").addClass("hidden")},updateEnabled:function(){if(ControlView.prototype.updateEnabled.call(this),this.ui.control){var e=this.model.get("enabled");this.ui.control.prop("disabled",!e)}},onInvalidHandler:function(e,t){}};_.inherit(ListEditorBaseControl,ContainerControl),_.extend(ListEditorBaseControl.prototype,{onSelectedItemChanged:function(e){this.controlModel.onSelectedItemChanged(e)}},editorBaseControlMixin);var ListEditorBaseModel=ContainerModel.extend(_.extend({defaults:_.defaults({multiSelect:!1,disabledItemCondition:null},ContainerModel.prototype.defaults),initialize:function(){var e=this;this.hashValueByItem=new HashMap,ContainerModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel(),this.bindSelectedItemsWithValue(),this.get("items").onChange(function(){e.hashValueByItem.clear()})},onSelectedItemChanged:function(e){this.on("change:selectedItem",function(t,n){e({value:n})})},toggleValue:function(e,t){var n=this.get("value"),i=this.get("multiSelect");if(i){n=Array.isArray(n)?n:[];var o=JSON.stringify(e),r=n.filter(function(e){return JSON.stringify(e)!==o});"undefined"!=typeof t&&t!==!0||r.length===n.length&&r.push(e),this.set("value",r)}else e!=n&&this.set("value",e)},bindSelectedItemsWithValue:function(){},valueByItem:function(e){var t=this.get("valueSelector");return t?t(void 0,{value:e}):e},itemInfoByValue:function(e){0===this.hashValueByItem.length&&this.updateHashValueByItem();var t,n,i=this.hashValueByItem.getKeyByValue(e);if("undefined"!=typeof i)t={item:i,index:this.hashValueByItem.keys.indexOf(i)};else{var o=JSON.stringify(e);n=this.hashValueByItem.findIndex(function(e,t){return JSON.stringify(t)===o}),-1!==n&&(t={index:n,item:this.hashValueByItem.keys[n]})}return t},itemByValue:function(e){var t=this.itemInfoByValue(e);return t?t.item:void 0},itemIndexByValue:function(e){var t=this.itemInfoByValue(e);return t?t.index:-1},itemIndexByItem:function(e){var t=this.valueByItem(e);return this.itemIndexByValue(t)},isDisabledItem:function(e){var t=this.get("disabledItemCondition");return null!=t&&t(void 0,{value:e})},updateHashValueByItem:function(){var e,t=this.get("items");this.hashValueByItem.clear(),t.forEach(function(t){e=this.valueByItem(t),this.hashValueByItem.add(t,e)},this)}},editorBaseModelMixin)),ListEditorBaseView=ContainerView.extend(_.extend({},editorBaseViewMixin,{initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:selectedItem",this.updateSelectedItem),this.listenTo(this.model,"change:multiSelect",this.updateMultiSelect),this.listenTo(this.model,"change:disabledItemCondition",this.updateDisabledItem)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateSelectedItem(),this.updateMultiSelect(),this.updateDisabledItem()},updateMultiSelect:function(){}}));_.inherit(TextEditorBaseControl,Control),_.extend(TextEditorBaseControl.prototype,editorBaseControlMixin);var TextEditorBaseModel=ControlModel.extend({defaults:_.defaults({labelText:null,displayFormat:null,editMask:null},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}});_.extend(TextEditorBaseModel.prototype,editorBaseModelMixin);var TextEditorBaseView=ControlView.extend(_.extend({},editorBaseViewMixin,{UI:_.extend({},editorBaseViewMixin.UI,{control:".pl-control",editor:".pl-editor",label:".pl-control-label",textbox:".pl-text-box-input"}),events:{},initialize:function(){ControlView.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:labelText",this.updateLabelText),this.listenTo(this.model,"change:labelFloating",this.updateLabelFloating),this.listenTo(this.model,"change:displayFormat",this.updateDisplayFormat),this.listenTo(this.model,"change:editMask",this.updateEditMask),this.listenTo(this.model,"change:inputType",this.updateInputType)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateLabelText(),this.updateInputType()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.editor.removeAttr("tabindex"):this.ui.editor.attr("tabindex",-1)},updateInputType:function(){var e=this.model.get("inputType"),t=this.ui.editor,n=t.prop("tagName");e&&"input"===n.toLowerCase()&&t.attr("type",e)},updateEditMask:function(){this.updateValue()},setFocus:function(){this.ui.editor.focus()},updateValue:function(){editorBaseViewMixin.updateValueState.call(this),this.ui.control.val(this.getDisplayValue())},updateLabelText:function(){var e=this.model.get("labelText");e?this.ui.label.text(e).removeClass("hidden"):this.ui.label.text("").addClass("hidden")},updateDisplayFormat:function(){this.updateValue()},renderControlEditor:function(){var e=this.model,t=e.get("editor");t&&t.render(this.ui.editor)},getData:function(){var e=this.model;return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{labelText:e.get("labelText"),labelFloating:e.get("labelFloating"),value:this.getDisplayValue()})},getDisplayValue:function(){var e=this.model,t=e.get("value"),n=e.get("displayFormat");return n?n(null,{value:t}):t}}));EventManager.prototype.on=function(e,t){return"undefined"==typeof this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this},EventManager.prototype.trigger=function(e,t,n){var i=this.handlers[e],o=!0;return Array.isArray(i)&&(o=i.map(function(e){return e.call(n,t)}).every(function(e){return e!==!1})),o};var highlightMixin={attributeName:"_highlight",highlightClassName:"active",control:{setHighlight:function(e){this.controlModel.set(highlightMixin.attributeName,e)},getHighlight:function(){return this.controlModel.get(highlightMixin.attributeName)}},controlView:{initHighlightMixin:function(){this.listenTo(this.model,"change:"+highlightMixin.attributeName,function(){var e=this.model;this.$el.toggleClass(highlightMixin.highlightClassName,e.get(highlightMixin.attributeName)),this.$el.parent().toggleClass(highlightMixin.highlightClassName,e.get(highlightMixin.attributeName))})}}},TextEditorModel=Backbone.Model.extend({Mode:{Edit:"edit",Display:"display"},initialize:function(){this.initEditMode(),this.on("change:originalValue",this.onChangeOriginalValueHandler),this.on("change:value",this.onChangeValueHandler),this.on("change:mode",this.onChangeModeHandler),this.on("change:text",this.onChangeTextHandler)},onChangeTextHandler:function(e,t,n){var i=this.get("modeStrategy");i.onChangeTextHandler(e,t,n)},convertValue:function(e){var t=this.get("valueConverter"),n=t.call(null);return"function"==typeof n?n.call(this,e):e},initEditMode:function(){this.modeStrategies={},this.modeStrategies[this.Mode.Edit]=new TextEditorModelEditModeStrategy,this.modeStrategies[this.Mode.Display]=new TextEditorModelDisplayModeStrategy,this.updateEditModeStrategy()},defaults:function(){return{mode:this.Mode.Display}},updateEditModeStrategy:function(){var e=this.get("mode");this.set("modeStrategy",this.modeStrategies[e])},onChangeModeHandler:function(e,t,n){var i=this.previous("mode");n.cancel?this.cancelChanges():t===this.Mode.Display&&i===this.Mode.Edit&&this.applyChanges(),this.updateEditModeStrategy(),this.updateText()},setDisplayMode:function(e,t){e=!!e,t="undefined"==typeof t?!0:!!t,this.set("mode",this.Mode.Display,{cancel:e,validate:t})},applyChanges:function(){this.set("originalValue",this.get("value"))},cancelChanges:function(){this.set("value",this.get("originalValue"))},setText:function(e,t){var n=this.get("modeStrategy");n.setText(this,e,t)},getEditMask:function(){return this.get("editMask")},getValue:function(){return this.get("value")},getDisplayFormat:function(){return this.get("displayFormat")},setEditMode:function(){this.set("mode",this.Mode.Edit)},validate:function(e,t){var n=this.get("validateValue"),i=this.getValue();return _.isFunction(n)?n.call(null,i):void 0},updateText:function(){var e=this.get("modeStrategy");e.updateText(this)},onChangeValueHandler:function(e,t,n){n.ui||this.updateText()},onChangeOriginalValueHandler:function(e,t){e.set("value",t,{originalValue:!0})}}),TextEditorView=Backbone.View.extend({classNameError:"has-error",events:{focusin:"onFocusinHandler",focusout:"onFocusoutHandler",keydown:"onKeydownHandler",change:"onChangeHandler",input:"onInputHandler",keyup:"onKeyupHandler",click:"onClickHandler",drop:"onDropHandler",dragstart:"OnDragstartHandler",dragend:"OnDragendHandler",dragover:"OnDragoverHandler",dragleave:"OnDragleaveHandler",dragenter:"OnDragenterHandler",paste:"onPasteHandler"},updateModelTextFromEditor:function(){var e=this.model,t=e.getEditMask();t||e.setText(this.$el.val(),!0)},onChangeHandler:function(){this.updateModelTextFromEditor()},onInputHandler:function(){var e=this.model.getEditMask();e||this.updateModelTextFromEditor()},onKeydownHandler:function(e){if(!e.ctrlKey&&!e.altKey){if(e.which===InfinniUI.Keyboard.KeyCode.ESCAPE)return this.model.setDisplayMode(!0,!1),void this.$el.blur();var t=this.model.getEditMask();if(t){var n,i=this.model;switch(e.which){case InfinniUI.Keyboard.KeyCode.TAB:break;case InfinniUI.Keyboard.KeyCode.HOME:e.shiftKey||(n=t.moveToPrevChar(0),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.LEFT_ARROW:e.shiftKey||(n=t.moveToPrevChar(this.getCaretPosition()),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.RIGHT_ARROW:e.shiftKey||(n=t.moveToNextChar(this.getCaretPosition()),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.END:e.shiftKey||(n=t.moveToNextChar(this.$el.val().length),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.UP_ARROW:e.shiftKey||(n=t.setNextValue(this.getCaretPosition()),n!==!1&&(e.preventDefault(),i.setText(t.getText()),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.DOWN_ARROW:e.shiftKey||(n=t.setPrevValue(this.getCaretPosition()),n!==!1&&(e.preventDefault(),this.model.setText(t.getText()),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.DELETE:e.preventDefault(),n=t.deleteCharRight(this.getCaretPosition(),this.getSelectionLength()),this.model.setText(t.getText()),n!==!1&&this.setCaretPosition(n);break;case InfinniUI.Keyboard.KeyCode.BACKSPACE:e.preventDefault(),n=t.deleteCharLeft(this.getCaretPosition(),this.getSelectionLength()),this.model.setText(t.getText()),n!==!1&&this.setCaretPosition(n);break;case InfinniUI.Keyboard.KeyCode.SPACE:t.value instanceof Date&&(e.preventDefault(),n=t.getNextItemMask(this.getCaretPosition()),n!==!1&&this.setCaretPosition(n));break;default:var o=InfinniUI.Keyboard.getCharByKeyCode(e.keyCode);e.preventDefault(),n=this.getSelectionLength()>0?t.deleteSelectedText(this.getCaretPosition(),this.getSelectionLength(),o):t.setCharAt(o,this.getCaretPosition(),this.getSelectionLength()),this.model.setText(t.getText()),n!==!1&&this.setCaretPosition(n)}}}},onKeyupHandler:function(e){this.trigger("onKeyDown",{keyCode:e.which,value:this.model.getValue()})},onClickHandler:function(e){this.checkCurrentPosition(),e.preventDefault()},onPasteHandler:function(e){var t=e.originalEvent,n=t.clipboardData.getData("text/plain"),i=this.model.getEditMask();i&&(e.preventDefault(),this.textTyping(n))},OnDragstartHandler:function(e){var t=e.originalEvent;t.dataTransfer.effectAllowed="copy",this.$el.attr("data-dragged",!0)},OnDragendHandler:function(){this.$el.removeAttr("data-dragged",!1)},OnDragoverHandler:function(e){e.preventDefault()},OnDragenterHandler:function(e){var t=this.$el.attr("data-dragged");!t&&this.getCanChange()&&this.model.setEditMode()},OnDragleaveHandler:function(e){var t=this.$el.attr("data-dragged");t||this.model.setDisplayMode()},onDropHandler:function(e){e.preventDefault(),e.stopPropagation();var t=this.$el.attr("data-dragged");if(!t&&this.getCanChange()){var n=e.originalEvent,i=n.dataTransfer.getData("text/plain");this.textTyping(i,0),this.$el.focus()}},getCanChange:function(){var e=this.$el.prop("disabled");return e===!1},textTyping:function(e,t){var n=this.model.getEditMask(),i=e;n&&(e.split("").reduce(function(e,t){return n.setCharAt(t,e)},_.isNumber(t)?t:this.getCaretPosition()),i=n.getText()),this.model.setText(i)},checkCurrentPosition:function(e){if(this.canCaretPosition()){var t=this.model.getEditMask();if(t){"undefined"==typeof e&&(e=this.getCaretPosition());var n=0===e?t.moveToPrevChar(0):t.moveToNextChar(e-1);n!==e&&this.setCaretPosition(n)}}},getSelectionLength:function(){var e=this.el,t=0;if(this.canCaretPosition()){var n=parseInt(e.selectionStart,10),i=parseInt(e.selectionEnd,10);isNaN(n)||isNaN(i)||(t=i-n)}return t},canCaretPosition:function(){return/text|password|search|tel|url/.test(this.el.type)},setCaretPosition:function(e){if(_.isNumber(e)&&this.canCaretPosition()){var t=this.el;"undefined"!=typeof t.selectionStart&&t.setSelectionRange(e,e)}},getCaretPosition:function(){var e=this.el,t=0;return this.canCaretPosition()&&(t=e.selectionStart),t},initialize:function(){this.applyAutocomplete(),this.listenTo(this.model,"change:mode",this.onChangeModeHandler),this.listenTo(this.model,"change:text",this.onChangeTextHandler),this.listenTo(this.model,"invalid",this.onInvalidHandler)},applyAutocomplete:function(){var e=this.model.getEditMask();e&&this.$el.attr("autocomplete","off")},onInvalidHandler:function(e,t){this.$el.toggleClass(this.classNameError,!0)},onFocusinHandler:function(){this.model.setEditMode(),setTimeout(this.setCaretPosition.bind(this,0),4)},onFocusoutHandler:function(){this.model.setDisplayMode()},onChangeModeHandler:function(e,t){this.checkCurrentPosition()},onChangeTextHandler:function(e,t){var n=this.$el,i=this.getCaretPosition();n.toggleClass(this.classNameError,!1),n.val()!==t&&n.val(t);var o=this.model.getEditMask();o&&n.is(":focus")&&this.checkCurrentPosition(i)}});TextEditorModelBaseModeStrategy.prototype.updateText=function(e){},TextEditorModelBaseModeStrategy.prototype.setText=function(e,t,n){},TextEditorModelBaseModeStrategy.prototype.onChangeTextHandler=function(e,t,n){},TextEditorModelDisplayModeStrategy.prototype=Object.create(TextEditorModelBaseModeStrategy.prototype),TextEditorModelDisplayModeStrategy.prototype.constructor=TextEditorModelDisplayModeStrategy,TextEditorModelDisplayModeStrategy.prototype.updateText=function(e){var t,n=e.getDisplayFormat(),i=e.get("value");t=_.isFunction(n)?n.call(null,null,{ -value:i}):i,e.set("text",t)},TextEditorModelDisplayModeStrategy.prototype.setText=function(e,t,n){n&&e.set("text",t,{ui:n})},TextEditorModelDisplayModeStrategy.prototype.onChangeTextHandler=function(e,t,n){if(n.ui){var i=e.convertValue(t);e.set("value",i,{ui:n.ui})}e.applyChanges()},TextEditorModelEditModeStrategy.prototype=Object.create(TextEditorModelBaseModeStrategy.prototype),TextEditorModelEditModeStrategy.prototype.constructor=TextEditorModelBaseModeStrategy,TextEditorModelEditModeStrategy.prototype.updateText=function(e){var t,n=e.getEditMask(),i=e.get("value");n?(n.reset(i),t=n.getText()):t=i,"undefined"==typeof t||null===t?e.set("text",""):e.set("text",t.toString())},TextEditorModelEditModeStrategy.prototype.setText=function(e,t,n){e.set("text",t,{ui:n})},TextEditorModelEditModeStrategy.prototype.onChangeTextHandler=function(e,t,n){var i=e.getEditMask(),o=i?i.getData():t;e.set("value",e.convertValue(o),{silent:!!i,ui:n.ui})},_.inherit(TextBoxControl,TextEditorBaseControl),_.extend(TextBoxControl.prototype,{createControlModel:function(){return new TextBoxModel},createControlView:function(e){return new TextBoxView({model:e})}});var TextBoxModel=TextEditorBaseModel.extend({defaults:_.extend({},TextEditorBaseModel.prototype.defaults,{multiline:!1,inputType:"text"}),initialize:function(){TextEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),TextBoxView=TextEditorBaseView.extend({template:{oneline:InfinniUI.Template["controls/textBox/template/oneline.tpl.html"],multiline:InfinniUI.Template["controls/textBox/template/multiline.tpl.html"]},className:"pl-textbox form-group",UI:_.extend({},TextEditorBaseView.prototype.UI),events:_.extend({},TextEditorBaseView.prototype.events,{}),initHandlersForProperties:function(){TextEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:multiline",this.updateMultiline),this.listenTo(this.model,"change:lineCount",this.updateLineCount)},updateProperties:function(){TextEditorBaseView.prototype.updateProperties.call(this),this.updateLineCount()},updateMultiline:function(){this.rerender()},updateLineCount:function(){var e=this.model.get("lineCount");this.ui.editor.attr("rows",e)},render:function(){this.prerenderingActions();var e=this.model,t=e.get("multiline")?this.template.multiline:this.template.oneline;return this.renderTemplate(t),this.renderTextBoxEditor(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=TextEditorBaseView.prototype.getData.call(this),t=this.model;return _.extend(e,{multiline:t.get("multiline"),lineCount:t.get("lineCount")})},renderTextBoxEditor:function(){this.renderControlEditor()}}),dateTimePickerModeDate={getTemplate:function(){return InfinniUI.Template["controls/dateTimePicker/template/date.tpl.html"]},onClickDropdownHandler:function(e){var t=this.model,n=new SelectDate({model:t});n.render(),$("body").append(n.$el),n.updatePosition(this.el),this.listenTo(n,"date",function(e){t.set("value",this.convertValue(e))})},convertValue:function(e){return InfinniUI.DateUtils.toISO8601(e,{timezoneOffset:this.model.get("timeZone")})}},dateTimePickerModeDateTime={getTemplate:function(){return InfinniUI.Template["controls/dateTimePicker/template/dateTime.tpl.html"]},onClickDropdownHandler:function(e){var t=this.model,n=new SelectDateTime({model:t});n.render(),$("body").append(n.$el),n.updatePosition(this.el),this.listenTo(n,"date",function(e){t.set("value",this.convertValue(e))})},convertValue:function(e){return InfinniUI.DateUtils.toISO8601(e,{timezoneOffset:this.model.get("timeZone")})}},dateTimePickerModeTime={getTemplate:function(){return InfinniUI.Template["controls/dateTimePicker/template/time.tpl.html"]},onClickDropdownHandler:function(e){var t=this.model,n=new SelectTime({model:t});n.render(),$("body").append(n.$el),n.updatePosition(this.el),this.listenTo(n,"date",function(e){t.set("value",this.convertValue(e))})},convertValue:function(e){return InfinniUI.DateUtils.toISO8601(e,{timezoneOffset:this.model.get("timeZone")})}},SelectComponent=Backbone.View.extend({modelClass:Backbone.Model,initialize:function(e){var t=this.modelClass;return this.model=new t({today:e.today||new Date,value:e.value,date:e.value||e.today,max:e.max,min:e.min}),this.render(),this},show:function(){this.$el.css("display","block")},hide:function(){this.$el.css("display","none")},setDate:function(e){this.model.setDate(e)}});_.extend(SelectComponent.prototype,bindUIElementsMixin);var SelectComponentModel=Backbone.Model.extend({defaults:function(){var e=new Date;return{today:e,todayMonth:e.getMonth(),todayDay:e.getDate(),todayYear:e.getFullYear(),hour:e.getHours(),minute:e.getMinutes(),second:e.getSeconds(),millisecond:e.getMilliseconds()}},initialize:function(){this.updateDateParts(),this.on("change:date",this.onChangeDateHandler,this)},updateDateParts:function(){var e=this.get("date");e instanceof Date?this.set({year:e.getFullYear(),month:e.getMonth(),day:e.getDate(),hour:e.getHours(),minute:e.getMinutes(),second:e.getSeconds(),millisecond:e.getMilliseconds()}):this.set({year:null,month:null,day:null,hour:null,minute:null,second:null,millisecond:null})},onChangeDateHandler:function(e,t){"undefined"!=typeof t&&null!==t?e.set({year:moment(t).year(),month:moment(t).month(),day:moment(t).date(),hour:moment(t).hour(),minute:moment(t).minute(),second:moment(t).second(),millisecond:moment(t).millisecond()}):e.set({year:null,month:null,day:null,hour:null,minute:null,second:null,millisecond:null})},updateDatePart:function(e,t,n){var i=this.get("date"),o=InfinniUI.DateUtils.createDate(i)||this.get("today"),r=this.toJSON();switch(e){case"hour":case"minute":case"second":o.setHours(r.hour,r.minute,r.second);break;case"year":case"month":case"day":o.setFullYear(r.year,r.month,r.day)}this.set("date",o)},checkRange:function(e,t){var n=this.get("min"),i=this.get("max");return InfinniUI.DateUtils.checkRangeDate(e,n,i,t)},keepDateInRange:function(){if(!this.isValid()){var e=InfinniUI.DateUtils.getNearestDate(this.get("date"),this.get("min"),this.get("max"));this.set("date",e)}},setDate:function(e){if("undefined"==typeof e||null===e){var t=this.get("value"),n=this.get("date");e=t||n}e instanceof Date&&(e=new Date(e.getTime())),this.set("date",e)}}),SelectDaysModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:year",this.updateDatePart.bind(this,"year")),this.on("change:month",this.updateDatePart.bind(this,"month")),this.on("change:day",this.updateDatePart.bind(this,"day"))},today:function(){this.set({year:this.get("todayYear"),month:this.get("todayMonth")})},nextMonth:function(){var e=this.get("month"),t=this.get("year");this.set({month:11===e?0:e+1,year:11===e?t+1:t}),this.keepDateInRange()},prevMonth:function(){var e=this.get("month"),t=this.get("year");this.set({month:0===e?11:e-1,year:0===e?t-1:t}),this.keepDateInRange()}}),SelectDays=SelectComponent.extend({modelClass:SelectDaysModel,template:InfinniUI.Template["controls/dateTimePicker/template/date/days.tpl.html"],UI:{headerDays:".weekdays-head .day",calendarDays:".day-calendar",year:".years-year",month:".years-month"},events:{"click .years":"onYearsClickHandler","click .btn-month-prev":"prevMonth","click .btn-month-next":"nextMonth","click .today-date":"showToday",'click .day-calendar:not(".day-unavailable")':"useDay","click .time":"showTime"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillLegend(),this.fillCalendar(),this.renderMonth(),this.renderYear(),this.initOnChangeHandlers()},initOnChangeHandlers:function(){this.listenTo(this.model,"change:month",this.onChangeMonthHandler),this.listenTo(this.model,"change:year",this.onChangeYearHandler),this.listenTo(this.model,"change:day",this.onChangeDayHandler)},renderMonth:function(){var e=this.model.get("month"),t=localized.dateTimeFormatInfo;this.ui.month.text(t.monthNames[e])},renderYear:function(){var e=this.model.get("year");this.ui.year.text(e)},onChangeMonthHandler:function(e,t){this.renderMonth(),this.fillCalendar()},onChangeYearHandler:function(e,t){this.renderYear(),this.fillCalendar()},fillLegend:function(){function e(e,t){e.toggleClass("day-weekend",0===t||6===t)}var t=localized.dateTimeFormatInfo,n=t.firstDayOfWeek,i=t.abbreviatedDayNames.map(function(e,t){return t});n>0&&(i=i.splice(n).concat(i)),this.ui.headerDays.each(function(n,o){var r=$(o),a=i[n];r.text(t.abbreviatedDayNames[a]),e(r,a)}),this.ui.calendarDays.each(function(t,n){var o=$(n),r=i[t%7];e(o,r)})},fillCalendar:function(){function e(e,t){e.toggleClass("day-inactive",!t)}function t(e,t){var n=t.getMonth()===o.get("todayMonth")&&t.getFullYear()===o.get("todayYear")&&t.getDate()===o.get("todayDay");e.toggleClass("day-today",n)}function n(e,t){var n=!1;r&&(n=moment(r).isSame(t,"day")),e.toggleClass("day-selected",n)}function i(e,t){e.toggleClass("day-unavailable",!o.checkRange(t,"day"))}var o=this.model,r=o.get("value"),a=o.get("month"),l=o.get("year"),s=(o.get("day"),o.get("min"),o.get("max"),new Date(l,a)),u=s.getDay(),d=localized.dateTimeFormatInfo,c=d.firstDayOfWeek,h=[0,1,2,3,4,5,6];Array.prototype.push.apply(h,h.splice(0,c));var p=new Date(l,a,1-h.indexOf(u)),m=p.getFullYear(),f=p.getMonth(),g=p.getDate();this.ui.calendarDays.each(function(o,r){var l=$(r),s=new Date(m,f,g+o);l.text(s.getDate()),l.attr("data-date",s),e(l,s.getMonth()===a),t(l,s),n(l,s),i(l,s)})},onYearsClickHandler:function(e){var t=this.model.get("date");this.trigger("year",t)},prevMonth:function(){this.model.prevMonth()},nextMonth:function(){this.model.nextMonth()},showToday:function(){this.today()},today:function(){this.model.today()},showTime:function(){this.trigger("time",this.model.get("date"))},useDay:function(e){var t=$(e.target),n=new Date(t.attr("data-date"));this.model.set({year:n.getFullYear(),month:n.getMonth(),day:n.getDate()}),this.trigger("date",this.model.get("date"))}}),SelectHoursModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:hour",this.updateDatePart.bind(this,"hour"))}}),SelectHours=SelectComponent.extend({modelClass:SelectHoursModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/hours.tpl.html"],events:{"click .hour:not('.hour-unavailable')":"useHour"},UI:{hour:".hour"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillHoursTable(),this.initOnChangeHandlers()},fillHoursTable:function(){function e(e,t){e.toggleClass("hour-selected",o.getHours()===t)}function t(e,t){var n=moment(r).isSame(t,"hour");e.toggleClass("hour-today",n)}function n(e,t){var n=moment(i.get("date")).hour(t);e.toggleClass("hour-unavailable",!i.checkRange(n,"hour"))}var i=this.model,o=i.get("date")||i.get("today"),r=new Date;this.ui.hour.each(function(i,o){var r=$(o),a=stringUtils.padLeft(i,2,"0");r.attr("data-hour",i),r.text(a),t(r,i),e(r,i),n(r,i)})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:date",this.fillHoursTable)},useHour:function(e){var t=$(e.target),n=this.model,i=n.get("date"),o=parseInt(t.attr("data-hour"),10),r=InfinniUI.DateUtils.cloneDate(i);r.setHours(o),n.set("date",r),this.trigger("hour",r)}}),SelectMinutesModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:minute",this.updateDatePart.bind(this,"minute"))}}),SelectMinutes=SelectComponent.extend({modelClass:SelectMinutesModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/minutes.tpl.html"],events:{"click .minute:not('.minute-unavailable')":"useMinute"},UI:{minute:".minute"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillMinutesTable(),this.initOnChangeHandlers()},fillMinutesTable:function(){function e(e,t){e.toggleClass("minute-selected",t===i)}function t(e,t){var i=moment(n.get("date")).minute(t);e.toggleClass("minute-unavailable",!n.checkRange(i,"minute"))}var n=this.model,i=n.get("minute");this.ui.minute.each(function(n,i){var o=$(i),r=o.attr("data-minute");e(o,parseInt(r,10)),t(o,parseInt(r,10))})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:date",this.fillMinutesTable)},useMinute:function(e){var t=$(e.target),n=this.model,i=n.get("date"),o=parseInt(t.attr("data-minute"),10),r=InfinniUI.DateUtils.cloneDate(i);r.setMinutes(o),this.trigger("minute",r)}}),SelectMonthsModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:month",this.updateDatePart.bind(this,"month")),this.on("change:year",this.updateDatePart.bind(this,"year"))},nextYear:function(){var e=this.get("year");this.set("year",e+1),this.keepDateInRange()},prevYear:function(){var e=this.get("year");this.set("year",e-1),this.keepDateInRange()},today:function(){this.set({month:this.get("todayMonth"),year:this.get("todayYear")})}}),SelectMonths=SelectComponent.extend({modelClass:SelectMonthsModel,template:InfinniUI.Template["controls/dateTimePicker/template/date/months.tpl.html"],events:{"click .btn-year-prev":"prevYear","click .btn-year-next":"nextYear","click .month:not('.month-unavailable')":"useMonth","click .year":"selectYear","click .today-month":"showToday"},UI:{month:".month",year:".year"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillMonthsTable(),this.initOnChangeHandlers()},fillMonthsTable:function(){function e(e,t){var n=moment([i.get("year"),t]),o=i.get("today");e.toggleClass("month-today",moment(n).isSame(o,"month"))}function t(e,t){var n=moment([i.get("year"),t]),o=i.get("value");e.toggleClass("month-selected",moment(n).isSame(o,"month"))}function n(e,t){var n=moment([i.get("year"),t]);e.toggleClass("month-unavailable",!i.checkRange(n,"month"))}this.ui.year.text(this.model.get("year"));var i=this.model,o=localized.dateTimeFormatInfo;i.get("todayMonth"),i.get("month");this.ui.month.each(function(i,r){var a=$(r);a.text(o.abbreviatedMonthNames[i]),a.attr("data-month",i),e(a,i),t(a,i),n(a,i)})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:year",this.fillMonthsTable)},prevYear:function(){this.model.prevYear()},nextYear:function(){this.model.nextYear()},useMonth:function(e){var t=$(e.target),n=this.model;n.set({year:parseInt(n.get("year"),10),month:parseInt(t.attr("data-month"),10)}),this.trigger("month",n.get("date"))},selectYear:function(){var e=this.model;this.trigger("year",e.get("data"))},showToday:function(){this.today()},today:function(){this.model.today()}}),SelectSecondsModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:second",this.updateDatePart.bind(this,"second"))}}),SelectSeconds=SelectComponent.extend({modelClass:SelectSecondsModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/seconds.tpl.html"],events:{"click .second:not('.second-unavailable')":"useSecond"},UI:{second:".second"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillSecondsTable(),this.initOnChangeHandlers()},fillSecondsTable:function(){function e(e,t){e.toggleClass("second-selected",t===i)}function t(e,t){var i=moment(n.get("date")).seconds(t);e.toggleClass("second-unavailable",!n.checkRange(i))}var n=this.model,i=n.get("second");this.ui.second.each(function(n,i){var o=$(i),r=o.attr("data-second");e(o,parseInt(r,10)),t(o,parseInt(r,10))})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:date",this.fillSecondsTable)},useSecond:function(e){var t=$(e.target),n=this.model,i=n.get("date"),o=parseInt(t.attr("data-second"),10),r=InfinniUI.DateUtils.cloneDate(i);r.setSeconds(o),this.trigger("second",r)}}),SelectTimesModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:hour",this.updateDatePart.bind(this,"hour")),this.on("change:minute",this.updateDatePart.bind(this,"minute")),this.on("change:second",this.updateDatePart.bind(this,"second")),this.on("change:millisecond",this.updateDatePart.bind(this,"millisecond"))},nextHour:function(){var e=this.get("hour");e+=1,e>23||(this.set("hour",e),this.keepDateInRange())},prevHour:function(){var e=this.get("hour");e-=1,0>e||(this.set("hour",e),this.keepDateInRange())},nextMinute:function(){var e=this.get("minute");e+=1,e>=60||(this.set("minute",e),this.keepDateInRange())},prevMinute:function(){var e=this.get("minute");e-=1,0>e||(this.set("minute",e),this.keepDateInRange())},nextSecond:function(){var e=this.get("second");e+=1,e>=60||(this.set("second",e),this.keepDateInRange())},prevSecond:function(){var e=this.get("second");e-=1,0>e||(this.set("second",e),this.keepDateInRange())},validate:function(e,t){var n=InfinniUI.DateUtils.cloneDate(e.date);return n.setHours(e.hour,e.minute,e.second,e.millisecond),this.checkRange(n)?void 0:"Out of range"}}),SelectTimes=SelectComponent.extend({modelClass:SelectTimesModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/time.tpl.html"],events:{"click .time-spin-down.time-spin-hour":"prevHour","click .time-spin-up.time-spin-hour":"nextHour","click .time-spin-down.time-spin-minute":"prevMinute","click .time-spin-up.time-spin-minute":"nextMinute","click .time-spin-down.time-spin-second":"prevSecond","click .time-spin-up.time-spin-second":"nextSecond","click .time-segment-hour":"selectHour","click .time-segment-minute":"selectMinute","click .time-segment-second":"selectSecond","click .days":"selectDay"},UI:{month:".month",year:".year",hour:".time-segment-hour",minute:".time-segment-minute",second:".time-segment-second"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.updateHour(),this.updateMinute(),this.updateSecond(),this.initOnChangeHandlers()},selectHour:function(){var e=this.model,t=e.get("date"),n=e.get("hour"),i=e.get("minute"),o=e.get("second");t.setHours(n,i,o),this.trigger("hour",t)},selectMinute:function(){var e=this.model,t=e.get("date"),n=e.get("hour"),i=e.get("minute"),o=e.get("second");t.setHours(n,i,o),this.trigger("minute",t)},selectSecond:function(){var e=this.model,t=e.get("date"),n=e.get("hour"),i=e.get("minute"),o=e.get("second");t.setHours(n,i,o),this.trigger("second",t)},initOnChangeHandlers:function(){this.listenTo(this.model,"change:hour",this.updateHour),this.listenTo(this.model,"change:minute",this.updateMinute),this.listenTo(this.model,"change:second",this.updateSecond),this.listenTo(this.model,"change:date",this.useTime)},updateHour:function(){var e=this.model.get("hour");this.ui.hour.text(stringUtils.padLeft(e,2,"0"))},updateMinute:function(){var e=this.model.get("minute");this.ui.minute.text(stringUtils.padLeft(e,2,"0"))},updateSecond:function(){var e=this.model.get("second");this.ui.second.text(stringUtils.padLeft(e,2,"0"))},prevHour:function(){this.model.prevHour()},nextHour:function(){this.model.nextHour()},prevMinute:function(){this.model.prevMinute()},nextMinute:function(){this.model.nextMinute()},prevSecond:function(){this.model.prevSecond()},nextSecond:function(){this.model.nextSecond()},useTime:function(){var e=this.model.get("date");this.trigger("date",e)},selectDay:function(){var e=this.model.get("date");this.trigger("day",e)}}),SelectYearsModel=SelectComponentModel.extend({defaults:function(){var e=SelectComponentModel.prototype.defaults.call(this);return _.defaults({pageSize:20,page:0},e)},initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:year",this.updateDatePart.bind(this,"year")),this.on("change:year",this.onChangeYearHandler)},prevPage:function(){var e=this.get("page");this.set("page",e-1)},nextPage:function(){var e=this.get("page");this.set("page",e+1)},resetPage:function(){this.set("page",0)},onChangeYearHandler:function(e,t){this.keepDateInRange(),e.set("page",0)}}),SelectYears=SelectComponent.extend({modelClass:SelectYearsModel,template:InfinniUI.Template["controls/dateTimePicker/template/date/years.tpl.html"],events:{"click .btn-year-prev":"prevPage","click .btn-year-next":"nextPage","click .today-year":"showTodayYear",'click .year:not(".year-unavailable")':"useYear"},UI:{years:".year",yearBegin:".year-begin",yearEnd:".year-end"},initOnChangeHandlers:function(){this.listenTo(this.model,"change:page",this.fillYearsTable),this.listenTo(this.model,"change:year",this.fillYearsTable)},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillYearsTable(),this.initOnChangeHandlers()},fillYearsTable:function(){function e(e,t){e.toggleClass("year-today",t===l)}function t(e,t){e.toggleClass("year-selected",t===a)}function n(e,t){var n=moment([t]);e.toggleClass("year-unavailable",!i.checkRange(n,"year"))}var i=this.model,o=i.get("page"),r=i.get("pageSize"),a=i.get("year"),l=i.get("todayYear"),s=Math.ceil(a-r/2)+o*r;this.ui.years.each(function(i,o){var r=$(o),a=s+i;r.text(a),r.attr("data-year",a),e(r,a),t(r,a),n(r,a)}),this.ui.yearBegin.text(s),this.ui.yearEnd.text(s+r-1)},prevPage:function(){this.model.prevPage()},nextPage:function(){this.model.nextPage()},showTodayYear:function(){this.today()},today:function(){this.model.resetPage()},useYear:function(e){var t=$(e.target),n=this.model;n.set({year:parseInt(t.attr("data-year"),10)}),this.trigger("year",n.get("date"))}});window.InfinniUI.DateTimePickerControl=DateTimePickerControl,_.inherit(DateTimePickerControl,TextEditorBaseControl),_.extend(DateTimePickerControl.prototype,{createControlModel:function(){return new DateTimePickerModel},createControlView:function(e){return new DateTimePickerView({model:e})}});var DateTimePickerModel=TextEditorBaseModel.extend({defaults:_.extend({},TextEditorBaseModel.prototype.defaults,{mode:"Date"}),initialize:function(){TextEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.set("today",new Date),this.set("timeZone",InfinniUI.DateUtils.getDefaultTimeZone())},validate:function(e,t){e.minValue,e.maxValue;return InfinniUI.DateUtils.checkRangeDate(e.value,e.minValue,e.maxValue)}}),dateTimePickerStrategy=function(){return{Date:dateTimePickerModeDate,DateTime:dateTimePickerModeDateTime,Time:dateTimePickerModeTime}}(),DateTimePickerView=TextEditorBaseView.extend({className:"pl-datepicker form-group",template:InfinniUI.Template["controls/dateTimePicker/template/date.tpl.html"],UI:_.extend({},TextEditorBaseView.prototype.UI,{dropdownButton:".pl-datepicker-calendar",controlWrap:".control-wrap",editorWrap:".editor-wrap"}),events:_.extend({},TextEditorBaseView.prototype.events,{"click .pl-datepicker-calendar":"onClickDropdownHandler"}),initialize:function(){TextEditorBaseView.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.updateMode(),this.listenTo(this.model,"change:mode",this.updateMode)},initHandlersForProperties:function(){TextEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:minValue",this.updateMinValue),this.listenTo(this.model,"change:maxValue",this.updateMaxValue)},updateProperties:function(){TextEditorBaseView.prototype.updateProperties.call(this)},updateMode:function(){var e=this.model.get("mode");_.extend(this,dateTimePickerStrategy[e]),this.rerender()},updateMinValue:function(){var e=this.model.get("mode");_.extend(this,dateTimePickerStrategy[e]),this.rerender()},updateMaxValue:function(){var e=this.model.get("mode");_.extend(this,dateTimePickerStrategy[e]),this.rerender()},updateEnabled:function(){TextEditorBaseView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.dropdownButton.prop("disabled",!e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.updateProperties(),this.renderDateTimePickerEditor(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=this.model;return _.extend({},TextEditorBaseView.prototype.getData.call(this),{minValue:e.get("minValue"),maxValue:e.get("maxValue"),mode:e.get("mode")})},renderDateTimePickerEditor:function(){this.model;return this.renderControlEditor(),this},getTemplate:function(){throw new Error("Не перекрыт getTemplate")},onClickDropdownHandler:function(e){}}),SelectDate=Backbone.View.extend({className:"pl-datepicker-dropdown pl-dropdown-container",template:InfinniUI.Template["controls/dateTimePicker/template/select.date.tpl.html"],UI:{days:".days",months:".months",years:".years"},events:{"click .backdrop":"onClickBackdropHandler","click .datepicker-clear":"onClickClearValueHandler","click .today-date":"onClickTodayHandler"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.renderComponents()},renderComponents:function(){var e=this.model,t=InfinniUI.DateUtils.createDate(e.get("value")),n=InfinniUI.DateUtils.createDate(e.get("today")),i=e.get("timeZone"),o=moment(t);t=o.isValid()?o.toDate():null,t=InfinniUI.DateUtils.changeTimezoneOffset(t,i);var r={value:t,today:n||new Date,max:e.get("maxValue"),min:e.get("minValue")};r.el=this.ui.months;var a=new SelectMonths(r);r.el=this.ui.years;var l=new SelectYears(r);r.el=this.ui.days;var s=new SelectDays(r);this.months=a,this.years=l,this.days=s,this.workflow(s,a,l,t)(t)},onClickBackdropHandler:function(e){this.remove()},onClickClearValueHandler:function(){this.clearValue()},clearValue:function(){this.useValue(null)},useValue:function(e){var t=this.model,n=t.get("timeZone"),i=t.get("minValue"),o=t.get("maxValue");InfinniUI.DateUtils.checkRangeDate(e,i,o)||(e=InfinniUI.DateUtils.getNearestDate(e,i,o)),this.trigger("date",InfinniUI.DateUtils.restoreTimezoneOffset(e,n)),this.remove()},workflow:function(e,t,n){function i(i){e.setDate(i),n.hide(),t.hide(),e.show()}function o(i){t.setDate(i),e.hide(),n.hide(),t.show()}function r(i){n.setDate(i),e.hide(),t.hide(),n.show()}return this.listenTo(e,"date",this.useValue).listenTo(e,"year",function(e){r(e)}).listenTo(n,"year",function(e){o(e)}).listenTo(t,"year",function(e){r(e)}).listenTo(t,"month",function(e){i(e)}),i},onClickTodayHandler:function(){this.useValue(new Date)},updatePosition:function(e){var t=this.getDropdownDirection(e);this.setPositionFor(e,t)},setPositionFor:function(e,t){clearInterval(this._intervalId),this.applyStyle(e,t),this._intervalId=setInterval(this.applyStyle.bind(this,e,t),100)},remove:function(){return clearInterval(this._intervalId),Backbone.View.prototype.remove.apply(this,arguments)},getDropdownDirection:function(e){var t=$(window).height(),n=e.getBoundingClientRect(),i=this.$el.height(),o="bottom";return n.bottom+i+30>t&&n.bottom>t/2&&n.top>i&&(o="top"),o},applyStyle:function(e,t){var n=e.getBoundingClientRect(),i=this.el.getBoundingClientRect(),o={position:"absolute",left:window.pageXOffset+n.right-Math.round(i.width)};"bottom"===t?o.top=window.pageYOffset+n.bottom:o.top=window.pageYOffset+n.top-this.$el.height(),this.$el.css(o)}});_.extend(SelectDate.prototype,bindUIElementsMixin);var SelectDateTime=SelectDate.extend({className:"pl-datepicker-dropdown pl-dropdown-container",template:InfinniUI.Template["controls/dateTimePicker/template/select.dateTime.tpl.html"],UI:{days:".days",months:".months",years:".years",times:".times",hours:".hours",minutes:".minutes"},onClickToggleDateHandler:function(){this.trigger("days")},onClickToggleTimeHandler:function(){this.trigger("time")},renderComponents:function(){var e=this.model,t=InfinniUI.DateUtils.createDate(e.get("value")),n=InfinniUI.DateUtils.createDate(e.get("today")),i=e.get("timeZone"),o=moment(t);t=o.isValid()?o.toDate():null,t=InfinniUI.DateUtils.changeTimezoneOffset(t,i);var r={value:t,today:n||new Date,max:e.get("maxValue"),min:e.get("minValue")};r.el=this.ui.months;var a=new SelectMonths(r);r.el=this.ui.years;var l=new SelectYears(r);r.el=this.ui.days;var s=new SelectDays(r);r.el=this.ui.times;var u=new SelectTimes(r);r.el=this.ui.hours;var d=new SelectHours(r);r.el=this.ui.minutes;var c=new SelectMinutes(r);this.workflow(s,a,l,u,d,c)(t)},useTime:function(e){var t=this.model,n=t.get("timeZone"),i=t.get("minValue"),o=t.get("maxValue");return InfinniUI.DateUtils.checkRangeDate(e,i,o)||(e=InfinniUI.DateUtils.getNearestDate(e,i,o)),this.trigger("date",InfinniUI.DateUtils.restoreTimezoneOffset(e,n)),e},workflow:function(e,t,n,i,o,r){function a(e){m.forEach(function(t){t!==e&&t.hide()}),e.show()}function l(t){e.setDate(t),a(e)}function s(e){t.setDate(e),a(t)}function u(e){n.setDate(e),a(n)}function d(e){o.setDate(e),a(o)}function c(e){r.setDate(e),a(r)}function h(e){i.setDate(e),a(i)}var p=this.useTime.bind(this),m=Array.prototype.slice.call(arguments);return this.listenTo(e,"date",this.useValue).listenTo(e,"year",function(e){u(e)}).listenTo(e,"time",function(e){h(e)}).listenTo(n,"year",function(e){s(e)}).listenTo(t,"year",function(e){u(e)}).listenTo(t,"month",function(e){l(e)}),this.listenTo(i,"hour",function(e){d(e)}).listenTo(i,"minute",function(e){c(e)}).listenTo(i,"day",function(e){l(e)}).listenTo(i,"date",function(e){p(e)}).listenTo(o,"hour",function(e){var t=p(e);h(t)}).listenTo(r,"minute",function(e){var t=p(e);h(t)}),this.on("days",function(e){l(e)}).on("time",function(e){h(e)}),l}}),SelectTime=SelectDate.extend({className:"pl-timepicker-dropdown pl-dropdown-container",template:InfinniUI.Template["controls/dateTimePicker/template/select.time.tpl.html"],UI:{times:".times",hours:".hours",minutes:".minutes",seconds:".seconds"},renderComponents:function(){var e=this.model,t=InfinniUI.DateUtils.createDate(e.get("value")),n=InfinniUI.DateUtils.createDate(e.get("today")),i=e.get("timeZone"),o=moment(t);t=o.isValid()?o.toDate():null,t=InfinniUI.DateUtils.changeTimezoneOffset(t,i);var r={value:t,today:n,max:e.get("maxValue"),min:e.get("minValue")};r.el=this.ui.times;var a=new SelectTimes(r);r.el=this.ui.hours;var l=new SelectHours(r);r.el=this.ui.minutes;var s=new SelectMinutes(r);r.el=this.ui.seconds;var u=new SelectSeconds(r);this.workflow(a,l,s,u)(t)},useTime:function(e){var t=this.model,n=t.get("timeZone"),i=t.get("minValue"),o=t.get("maxValue");return InfinniUI.DateUtils.checkRangeDate(e,i,o)||(e=InfinniUI.DateUtils.getNearestDate(e,i,o)),this.trigger("date",InfinniUI.DateUtils.restoreTimezoneOffset(e,n)),e},workflow:function(e,t,n,i){function o(e){d.forEach(function(t){t!==e&&t.hide()}),e.show()}function r(e){t.setDate(e),o(t)}function a(e){n.setDate(e),o(n)}function l(e){i.setDate(e),o(i)}function s(t){e.setDate(t),o(e)}var u=this.useTime.bind(this),d=Array.prototype.slice.call(arguments);return this.listenTo(e,"hour",function(e){r(e)}).listenTo(e,"minute",function(e){a(e)}).listenTo(e,"second",function(e){l(e)}).listenTo(e,"date",function(e){u(e)}).listenTo(t,"hour",function(e){var t=u(e);s(t)}).listenTo(n,"minute",function(e){var t=u(e);s(t)}).listenTo(i,"second",function(e){var t=u(e);s(t)}),s}});_.inherit(DatePickerControl,DateTimePickerControl),_.extend(DatePickerControl.prototype,{createControlModel:function(){return new DatePickerModel},createControlView:function(e){return new DatePickerView({model:e})}});var DatePickerModel=DateTimePickerModel.extend({initialize:function(){DateTimePickerModel.prototype.initialize.apply(this,arguments)}}),DatePickerView=DateTimePickerView.extend({});console.assert(dateTimePickerModeDate,"dateTimePickerModeDate is undefined");var dateTimePickerModeDatePicker=_.extend({},dateTimePickerModeDate,{convertValue:function(e){var t=null;return e&&e.constructor===Date&&(t=InfinniUI.DateUtils.dateToTimestamp(e)),t}});dateTimePickerStrategy.DatePicker=dateTimePickerModeDatePicker,console.assert(dateTimePickerModeTime,"dateTimePickerModeTime is undefined");var dateTimePickerModeTimePicker=_.extend({},dateTimePickerModeTime,{convertValue:function(e){var t=null;return e&&e.constructor===Date&&(t=InfinniUI.DateUtils.dateToTimestampTime(e)),t}});dateTimePickerStrategy.TimePicker=dateTimePickerModeTimePicker,_.inherit(TimePickerControl,DateTimePickerControl),_.extend(TimePickerControl.prototype,{createControlModel:function(){return new TimePickerModel; -},createControlView:function(e){return new TimePickerView({model:e})}});var TimePickerModel=DateTimePickerModel.extend({initialize:function(){DateTimePickerModel.prototype.initialize.apply(this,arguments);var e=new Date;e.setFullYear(1970,0,1),this.set("today",e)}}),TimePickerView=DateTimePickerView.extend({className:"pl-datepicker pl-timepicker form-group"}),StatusBarControl=function(){_.superClass(StatusBarControl,this)};_.inherit(StatusBarControl,Control),_.extend(StatusBarControl.prototype,{createControlModel:function(){return new StatusBarModel},createControlView:function(e){return new StatusBarView({model:e})}});var StatusBarModel=ControlModel.extend({defaults:_.defaults({},ControlModel.prototype.defaults,{time:"",date:"",result:null})}),StatusBarView=ControlView.extend({className:"pl-status-bar",events:{"click .signIn":"signInHandler","click .signOut":"signOutHandler","click .status-bar-menu":"openMenuHandler"},template:InfinniUI.Template["controls/application/statusBar/template.tpl.html"],loginTemplate:InfinniUI.Template["controls/application/statusBar/authentication/loginTemplate.tpl.html"],enterTemplate:InfinniUI.Template["controls/application/statusBar/authentication/enterTemplate.tpl.html"],successTemplate:InfinniUI.Template["controls/application/statusBar/authentication/successTemplate.tpl.html"],initialize:function(){var e=this;e.model.set("time",moment().format("HH:mm")),e.model.set("date",moment().format("D MMMM")),window.setInterval(function(){e.model.set("time",moment().format("HH:mm")),e.model.set("date",moment().format("D MMMM")),e.dateRender()},1e4),getUserInfo(this),this.listenTo(this.model,"change:result",this.render)},dateRender:function(){this.$el.find(".time").text(this.model.get("time")),this.$el.find(".date").text(this.model.get("date"))},signInHandler:function(){var e=this;this.$modal||(this.$modal=$(this.loginTemplate({})),this.$modal.appendTo("body")),this.$modal.modal("show"),this.$modal.on("hidden.bs.modal",function(){$(this).find("#password, #userName").val(""),$(this).find("#remember").attr("checked",!1)}),this.$modal.find(".post").on("click",function(){signInInternal(e)})},openMenuHandler:function(){var e=$(".app-area").find(".pl-menu"),t=e.closest(".app-area");e.length&&t.length&&($(t).is(":visible")?t.css({display:"none"}):t.css({position:"absolute",width:"100%",display:"block",overflow:"hidden"}))},signOutHandler:function(){signOut(this)},render:function(){var e,t=this.model.get("result"),n=InfinniUI.config.configName,i=$(this.template({header:n})),o=this;return window.adjustLoginResult(t).then(function(n){e=t?$(o.successTemplate({displayName:n.UserName,activeRole:n.ActiveRole,roles:_.pluck(t.Roles,"DisplayName").join(", ")})):$(o.enterTemplate({})),i.find(".page-header-inner").prepend(e),o.$el.empty().append(i)}),this.$el.find(".calendar").datepicker({todayHighlight:!0,language:"ru"}),this.$el.find(".dropdown-toggle").on("click.bs.dropdown",function(){var e=$(this).data("clicks");e?$(this).parent(".dropdown").off("hide.bs.dropdown"):$(this).parent(".dropdown").on("hide.bs.dropdown",function(){return!1}),$(this).data("clicks",!e)}),this}});_.extend(AuthenticationProvider.prototype,{handlers:{onActiveRoleChanged:$.Callbacks(),onSignInInternal:$.Callbacks(),onSignOut:$.Callbacks()},getCurrentUser:function(e,t){this.sendPostRequestForServiceResult("/Auth/GetCurrentUser",{},e,t)},changePassword:function(e,t,n,i){var o={OldPassword:e,NewPassword:t};this.sendPostRequestForServiceResult("/Auth/ChangePassword",o,n,i)},changeProfile:function(e,t,n,i){var o={DisplayName:e,Description:t};this.sendPostRequestForServiceResult("/Auth/ChangeProfile",o,n,i)},changeActiveRole:function(e,t,n){var i={ActiveRole:e};this.sendPostRequestForServiceResult("/Auth/ChangeActiveRole",i,function(){var n=_.toArray(arguments);n.push(e),t&&t.apply(this,n),this.handlers.onActiveRoleChanged.fire.apply(this.handlers.onActiveRoleChanged,n)},n)},signInInternal:function(e,t,n,i,o){var r={UserName:e,Password:t,Remember:n};this.sendPostRequestForServiceResult("/Auth/SignInInternal",r,i,o)},getSignInExternalForm:function(e,t,n,i){this.getExternalLoginForm("/Auth/SignInExternal",e,t,n,i)},getLinkExternalLoginForm:function(e,t,n,i){this.getExternalLoginForm("/Auth/LinkExternalLogin",e,t,n,i)},unlinkExternalLogin:function(e,t,n,i){var o={Provider:e,ProviderKey:t};this.sendPostRequest("/Auth/UnlinkExternalLogin",o,n,i)},signOut:function(e,t){this.sendPostRequestForServiceResult("/Auth/SignOut",null,function(){InfinniUI.user.onReadyDeferred=$.Deferred(),InfinniUI.user.onReadyDeferred.resolve(null);var t=_.toArray(arguments);e&&e.apply(this,t),this.handlers.onSignOut.fire.apply(this.handlers.onSignOut,t)}.bind(this),t)},getExternalLoginForm:function(e,t,n,i,o){var r=this.baseAddress+e;this.sendPostRequest("/Auth/GetExternalProviders",{},function(e){var o=$(document.createElement("form"));o.attr("method","POST"),o.attr("action",r);var a=$(document.createElement("input"));a.attr("type","hidden"),a.attr("name","SuccessUrl"),a.attr("value",t),o.append(a);var l=$(document.createElement("input"));if(l.attr("type","hidden"),l.attr("name","FailureUrl"),l.attr("value",n),o.append(l),null!==e&&void 0!==e)for(var s=0;s0},function(){"Right"==t?e.addClass("pull-right"):e.removeClass("pull-right")})}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.Button.menuItem",MenuItemButtonView),_.inherit(ButtonEditControl,TextBoxControl),_.extend(ButtonEditControl.prototype,{createControlModel:function(){return new ButtonEditModel},createControlView:function(e){return new ButtonEditView({model:e})},onButtonClick:function(e){this.controlView.on("buttonClick",e)}});var ButtonEditModel=TextBoxModel.extend({defaults:_.defaults({showClear:!0,readOnly:!0},TextBoxModel.prototype.defaults),initialize:function(){TextBoxModel.prototype.initialize.apply(this,arguments)},clearValue:function(){var e=this.get("enabled");e&&this.set("value",null)}}),ButtonEditView=TextBoxView.extend({template:{oneline:InfinniUI.Template["controls/buttonEdit/template/textBoxInput.tpl.html"],multiline:InfinniUI.Template["controls/buttonEdit/template/textBoxArea.tpl.html"]},className:"pl-button-edit form-group",UI:_.extend({},TextBoxView.prototype.UI,{iconAction:".pl-button-edit-button__icon_action",buttonClear:".pl-button-edit-button_clear",buttons:".pl-button-edit-button"}),events:_.extend({},TextBoxView.prototype.events,{"click .pl-button-edit-button_action":"onClickButtonHandler","click .pl-button-edit-button_clear":"onClickClearHandler"}),initHandlersForProperties:function(){TextBoxView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:icon",this.updateIcon),this.listenTo(this.model,"change:showClear",this.updateShowClear),this.listenTo(this.model,"change:readOnly",this.updateReadOnly)},updateProperties:function(){TextBoxView.prototype.updateProperties.call(this),this.updateIcon(),this.updateShowClear(),this.updateReadOnly()},updateIcon:function(){var e=this.model.get("icon");this.switchClass("fa",e,this.ui.iconAction)},updateShowClear:function(){var e=this.model.get("showClear"),t=this.model.get("value");this.ui.buttonClear.toggleClass("hidden",!e||_.isEmpty(t))},updateReadOnly:function(){var e=this.model.get("readOnly");this.ui.control.prop("readonly",e)},updateEnabled:function(){var e=this.model.get("enabled");TextBoxView.prototype.updateEnabled.call(this),this.ui.buttons.toggleClass("pl-button-edit-button_disabled",!e)},updateValue:function(){TextBoxView.prototype.updateValue.call(this),this.updateShowClear()},onClickButtonHandler:function(e){var t=this.model.get("enabled");t&&this.trigger("buttonClick",e)},onClickClearHandler:function(e){this.model.clearValue()}}),ComboBoxDropdownView=Backbone.View.extend({className:"pl-dropdown-container",events:{"click .backdrop":"onClickBackdropHandler","keyup .pl-combobox-filter-text":"onKeyUpHandler","keydown .pl-combobox-filter-text":"onFilterKeyDownHandler"},UI:{items:".pl-combobox-items",filter:".pl-combobox-filter",text:".pl-combobox-filter-text",noItems:".pl-combobox-items-empty",search:".pl-combobox-items-empty > span"},initialize:function(){var e=null!=this.model.get("groupValueSelector");e?this.strategy=new ComboBoxGroupViewStrategy(this):this.strategy=new ComboBoxPlainViewStrategy(this),this.listenTo(this.model,"change:dropdown",this.onChangeDropdownHandler),this.listenTo(this.model,"change:autocompleteValue",this.onChangeSearchHandler),this.listenTo(this.model,"change:autocomplete",this.updateAutocomplete),this.listenTo(this.model,"change:selectedItem",this.onChangeSelectedItem),this.listenTo(this.strategy,"click",this.onClickItemHandler),this.listenTo(this.strategy,"mouseenter",this.onMouseEnterItemHandler),this.model.onValueChanged(this.onChangeValueHandler.bind(this));var t=this.model.get("items"),n=this;t.onChange(function(){n.renderItems()})},updateProperties:function(){this.updateAutocomplete()},render:function(){var e=this.strategy.getTemplate();return this.$el.html(e({multiSelect:this.model.get("multiSelect")})),this.bindUIElements(),this.updateProperties(),this.renderItems(),this.$el},renderItems:function(){this.$el.hide();var e=this.strategy.renderItems();this.$items=e;var t=this.model.get("items"),n=t&&0==t.length;this.ui.noItems.toggleClass("hidden",!n),this.markSelectedItems(),this.markCheckedItems(),this.trigger("itemsRendered2"),this.$el.show()},setItemsContent:function(e){var t=this.ui.items;t.empty(),t.append(e)},close:function(){this.model.set("dropdown",!1)},setSearchFocus:function(){this.ui.text.focus()},onClickBackdropHandler:function(){this.close()},onChangeValueHandler:function(){this.markCheckedItems()},markSelectedItems:function(){var e=this.model;if(Array.isArray(this.$items)){var t=(this.ui.items,this.$items),n=e.getSelectedItem();t.forEach(function(e){var t=n===e.data("pl-data-item");e.toggleClass("pl-combobox-selected",t)}),this.ensureVisibleSelectedItem()}},ensureVisibleSelectedItem:function(){function e(e,t){var n,i=e.scrollTop(),o=t.position().top,r=t.outerHeight(),a=e.innerHeight();o+r>a?n=i+o+r-a:0>o&&(n=i+o),"undefined"!=typeof n&&e.scrollTop(n)}var t=this.model;if(Array.isArray(this.$items)){var n=this.ui.items,i=this.$items,o=t.getSelectedItem();i.some(function(t){var i=o===t.data("pl-data-item");return i&&e(n,t),i})}},markCheckedItems:function(){var e=this.model,t=e.getValue();if(Array.isArray(this.$items)){var n=this.$items,i=!!e.get("multiSelect"),o=[];o=i&&Array.isArray(t)?t.map(function(t){return e.itemByValue(t)}):[e.itemByValue(t)],n.forEach(function(e){var t=-1!==o.indexOf(e.data("pl-data-item"));e.toggleClass("pl-combobox-checked",t)})}},onChangeDropdownHandler:function(e,t){t||this.remove()},updateAutocomplete:function(){var e=this.model.get("autocomplete");this.ui.filter.toggleClass("hidden",!e)},onMouseEnterItemHandler:function(e){this.model.setSelectedItem(e)},onClickItemHandler:function(e){var t=!this.model.isDisabledItem(e);t&&(this.model.toggleItem(e),this.close())},onKeyUpHandler:function(e){var t=this.ui.text.val();this.trigger("search",t)},onKeyDownHandler:function(e){this.model;e.preventDefault(),this.onFilterKeyDownHandler(e)},onFilterKeyDownHandler:function(e){var t=this.model;switch(e.which){case 36:t.selectFirstItem();break;case 35:t.selectLastItem();break;case 38:t.selectPrevItem();break;case 40:t.selectNextItem();break;case 13:this.onClickItemHandler(t.getSelectedItem());break;case 9:this.close();break;case 27:this.close(),e.stopPropagation()}},onChangeSearchHandler:function(e,t){this.ui.search.text(t)},onChangeSelectedItem:function(e,t){this.markSelectedItems()},updatePosition:function(e){var t=this.getDropdownDirection(e);this.setPositionFor(e,t)},setPositionFor:function(e,t){clearInterval(this._intervalId),this.applyStyle(e,t),this._intervalId=setInterval(this.applyStyle.bind(this,e,t),100)},remove:function(){return clearInterval(this._intervalId),Backbone.View.prototype.remove.apply(this,arguments)},getDropdownDirection:function(e){var t=$(window).height(),n=e.getBoundingClientRect(),i=this.$el.height(),o="bottom";return n.bottom+i+30>t&&n.bottom>t/2&&(o="top"),o},applyStyle:function(e,t){var n=e.getBoundingClientRect(),i={left:window.pageXOffset+n.left,width:Math.round(n.width)-1};"bottom"===t?i.top=window.pageYOffset+n.bottom:i.top=window.pageYOffset+n.top-this.$el.height(),this.$el.css(i)}});_.extend(ComboBoxDropdownView.prototype,bindUIElementsMixin),ComboBoxBaseViewStrategy.prototype.getModelAttribute=function(e){var t=this.dropdownView.model;return t.get(e)},ComboBoxBaseViewStrategy.prototype.isEnabledItem=function(e){return!this.dropdownView.model.isDisabledItem(e)},ComboBoxBaseViewStrategy.prototype.renderItems=function(){throw new Error("Method renderItems not implemented")},ComboBoxBaseViewStrategy.prototype.getTemplate=function(){},ComboBoxBaseViewStrategy.prototype._renderItems=function(e){var t,n=this.getModelAttribute("items"),i=this.getModelAttribute("itemTemplate");return t=e.map(function(e){var t=i(void 0,{value:e,index:n.indexOf(e)}),o=t.render();return"undefined"!=typeof e&&o.data("pl-data-item",e),this.addOnClickEventListener(o,e),this.addOnHoverEventListener(o,e),t.setEnabled(this.isEnabledItem(e)),o},this)},ComboBoxBaseViewStrategy.prototype.addOnClickEventListener=function(e){var t=e[0],n=Array.prototype.slice.call(arguments,1),i=this.trigger.bind(this,"click");t.addEventListener("click",function(){i.apply(this,n)})},ComboBoxBaseViewStrategy.prototype.addOnHoverEventListener=function(e){var t=(e[0],Array.prototype.slice.call(arguments,1)),n=this.trigger.bind(this,"mouseenter");e.on("mouseenter",function(){n.apply(this,t)})},_.extend(ComboBoxBaseViewStrategy.prototype,Backbone.Events),ComboBoxGroupViewStrategy.prototype=Object.create(ComboBoxBaseViewStrategy.prototype),ComboBoxGroupViewStrategy.prototype.constructor=ComboBoxGroupViewStrategy,ComboBoxGroupViewStrategy.prototype.template=InfinniUI.Template["controls/comboBox/dropdown/template/group/template.tpl.html"],ComboBoxGroupViewStrategy.prototype.renderItems=function(){var e,t=this.getModelAttribute("items"),n=this.getModelAttribute("groupValueSelector"),i={};return t.forEach(function(e,t){var o=n(void 0,{value:e,index:t});o in i||(i[o]=[]),i[o].push(e)}),e=this.renderGroups(i)},ComboBoxGroupViewStrategy.prototype.renderGroups=function(e){var t,n=this.getModelAttribute("groupItemTemplate"),i=this.getModelAttribute("items"),o=[],r=[];for(var a in e){var l=e[a],s=n(void 0,{index:i.indexOf(l[0]),item:l[0]}),t=this._renderItems(l),u=new ComboBoxGroupView({header:s.render(),items:t});Array.prototype.push.apply(o,t),r.push(u.render())}return this.dropdownView.setItemsContent(r),o},ComboBoxGroupViewStrategy.prototype.getTemplate=function(){return this.template},ComboBoxPlainViewStrategy.prototype=Object.create(ComboBoxBaseViewStrategy.prototype),ComboBoxPlainViewStrategy.prototype.constructor=ComboBoxPlainViewStrategy,ComboBoxPlainViewStrategy.prototype.renderItems=function(){var e=[],t=this.getModelAttribute("items");return t&&(e=this._renderItems(t.toArray())),this.dropdownView.setItemsContent(e),e},ComboBoxPlainViewStrategy.prototype.template=InfinniUI.Template["controls/comboBox/dropdown/template/plain/template.tpl.html"],ComboBoxPlainViewStrategy.prototype.getTemplate=function(){return this.template};var ComboBoxGroupView=Backbone.View.extend({template:InfinniUI.Template["controls/comboBox/dropdown/group/template/template.tpl.html"],UI:{header:".pl-combobox-group__header",items:".pl-combobox-group__items"},initialize:function(e){this.options={header:e.header,items:e.items}},render:function(){var e=this.options;return this.$el.html(this.template()),this.bindUIElements(),this.ui.header.append(e.header),this.ui.items.append(e.items),this.$el}});_.extend(ComboBoxGroupView.prototype,bindUIElementsMixin);var ComboBoxValueModel=Backbone.Model.extend({}),ComboBoxValue=Backbone.View.extend({template:InfinniUI.Template["controls/comboBox/values/template/value.tpl.html"],tagName:"li",className:"pl-combobox-value",events:{"click .pl-combobox-value-remove":"onClickRemoveHandler"},UI:{item:".pl-combobox-value-item"},initialize:function(e){this.model=new ComboBoxValueModel(e)},render:function(){this.$el.html(this.template()),this.bindUIElements();var e=this.model.get("$value");return this.ui.item.append(e),this.$el},onClickRemoveHandler:function(){var e=this.model.get("value");this.trigger("remove",e)}});_.extend(ComboBoxValue.prototype,bindUIElementsMixin);var ComboBoxValuesModel=Backbone.Model.extend({defaults:{enabled:!0},initialize:function(){this.items=[]}}),ComboBoxValues=Backbone.View.extend({tagName:"ul",className:"pl-combobox-values",template:InfinniUI.Template["controls/comboBox/values/template/values.tpl.html"],events:{"keypress .pl-combobox-search-text":"onKeyPressHandler","keydown .pl-combobox-search-text":"onKeyDownHandler","keyup .pl-combobox-search-text":"onKeyUpHandler",click:"onClickHandler"},UI:{search:".pl-combobox-search",text:".pl-combobox-search-text"},initialize:function(e){this.model=new ComboBoxValuesModel(e)},render:function(){this.$el.empty(),this.$el.html(this.template()),this.bindUIElements();var e=this.model,t=e.get("items").map(function(e){var t=new ComboBoxValue({$value:e.$value,value:e.value});return this.listenTo(t,"remove",this.onRemoveValueHandler),t.render()},this);return this.ui.search.before(t),this.$el},KeyCode:{enter:13,backspace:8,left:37,right:39,home:36,end:35,tab:9},setFocus:function(){this.ui.text.focus()},onKeyPressHandler:function(e){var t=e.which;t===this.KeyCode.enter,console.log("onKeyPressHandler",e.which,this.ui.text.val())},onKeyDownHandler:function(e){var t=e.which;t===this.KeyCode.left,console.log("onKeyDownHandler",e.which,this.ui.text.val())},onKeyUpHandler:function(e){var t=this.ui.text.val();this.trigger("search",t)},onRemoveValueHandler:function(e){this.trigger("remove",e)},onClickHandler:function(e){this.setFocus()}});_.extend(ComboBoxValues.prototype,bindUIElementsMixin),_.inherit(DataGridControl,ListEditorBaseControl),_.extend(DataGridControl.prototype,{createControlModel:function(){return new DataGridModel},createControlView:function(e){return new DataGridView({model:e})},onCheckAllChanged:function(e){this.controlModel.onCheckAllChanged(e)},setEnabled:function(e){this.controlModel.set("enabled",e)},onRowClick:function(e){this.controlView.$el.on("click","tbody .pl-datagrid-row",e)},onRowDoubleClick:function(e){this.controlView.$el.on("dblclick","tbody .pl-datagrid-row",e)}});var DataGridModel=ListEditorBaseModel.extend({defaults:_.defaults({showSelectors:!0,checkAllVisible:!1,checkAll:!1,focusable:!1,sortedColumn:null},ListEditorBaseModel.prototype.defaults),initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.initColumns()},toggleCheckAll:function(){this.set("checkAll",!this.get("checkAll"))},onCheckAllChanged:function(e){this.on("change:checkAll",function(t,n){e.call(null,{value:n})})},initColumns:function(){this.set("columns",new Collection)}}),DataGridView=ListEditorBaseView.extend({template:{grid:InfinniUI.Template["controls/dataGrid/template/dataGrid.tpl.html"],gridStretched:InfinniUI.Template["controls/dataGrid/template/dataGridStretched.tpl.html"],headerCell:InfinniUI.Template["controls/dataGrid/template/headerCell.tpl.html"],sizeCell:InfinniUI.Template["controls/dataGrid/template/sizeCell.tpl.html"]},className:"pl-datagrid",events:_.extend({},ListEditorBaseView.prototype.events,{"click .pl-datagrid-toggle_all":"onClickCheckAllHandler","click thead .pl-datagrid-row__cell":"onClickToHeaderCellHandler"}),UI:_.defaults({body:".pl-datagrid__body",head:".pl-datagrid__head",headContainer:".pl-datagrid-container_head",header:".pl-datagrid-row_header",firstRows:".pl-datagrid-row_first",toggleCell:".pl-toggle-cell",checkAll:".pl-datagrid-toggle__button",items:"tbody"},ListEditorBaseView.prototype.UI),initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e),this.rowElements=new HashMap},initHandlersForProperties:function(){ListEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:showSelectors",this.updateShowSelectors),this.listenTo(this.model,"change:checkAllVisible",this.updateCheckAllVisible),this.listenTo(this.model,"change:checkAll",this.updateCheckAll);var e=this.rowElements;this.model;this.model.get("items").onChange(function(t){"replace"===t.action&&t.oldItems.forEach(function(n,i){e.add(t.newItems[i],e.get(n)),e.remove(n)})})},updateProperties:function(){ListEditorBaseView.prototype.updateProperties.call(this),this.updateShowSelectors(),this.updateCheckAllVisible(),this.updateCheckAll(),this.updateDisabledItem()},updateShowSelectors:function(){var e=this.model.get("showSelectors");this.$el.toggleClass("pl-datagrid_selectors_show",e),this.$el.toggleClass("pl-datagrid_selectors_hide",!e)},updateGrouping:function(){},updateVerticalAlignment:function(){ListEditorBaseView.prototype.updateVerticalAlignment.call(this),this.switchClass("verticalAlignment",this.model.get("verticalAlignment"),this.ui.body,!1)},updateCheckAll:function(){var e=this.model.get("checkAll");this.ui.checkAll.prop("checked",e)},getHorizontalScrollBarWidth:function(){if("undefined"==typeof DataGridView.scrollbarWidth){var e=document.createElement("div"),t=document.body;e.className="modal-scrollbar-measure";var n={position:"absolute",top:"-9999px",width:"50px",height:"50px",overflow:"scroll"};for(var i in n)e.style[i]=n[i];t.appendChild(e),DataGridView.scrollbarWidth=e.offsetWidth-e.clientWidth,t.removeChild(e)}return DataGridView.scrollbarWidth},updateCheckAllVisible:function(){var e=this.model.get("checkAllVisible");this.ui.checkAll.toggleClass("hidden",!e)},updateMultiSelect:function(){ListEditorBaseView.prototype.updateMultiSelect.call(this);var e=this.model.get("multiSelect");this.$el.toggleClass("pl-datagrid_select_multi",e===!0),this.$el.toggleClass("pl-datagrid_select_single",e!==!0)},updateValue:function(){var e=this.model,t=e.get("value"),n=[],i=e.get("items");e.get("multiSelect")||void 0===t||null===t||(t=[t]),Array.isArray(t)&&(n=t.map(function(t){return e.itemIndexByValue(t)}).filter(function(e){return-1!==e})),this.rowElements.forEach(function(e,t){var o=i.indexOf(t),r=-1!==n.indexOf(o);e.toggle(r)})},updateSelectedItem:function(){var e=this.model,t=e.get("selectedItem");this.rowElements.forEach(function(e,n){e.setSelected(n===t)})},updateDisabledItem:function(){var e,t=this.model,n=t.get("disabledItemCondition");null!=n?this.rowElements.forEach(function(i,o){e=!n(void 0,{value:o}),i.getSelected()===o&&e===!1&&t.set("selectedItem",null),i.setEnabled(e)}):this.rowElements.forEach(function(e,t){e.setEnabled(!0)})},updateEnabled:function(){var e=this.model.get("enabled");e?this.updateDisabledItem():this.disableDataGridItems()},disableDataGridItems:function(){this.model.set("selectedItem",null),this.rowElements.forEach(function(e,t){e.setEnabled(!1)})},render:function(){var e=this;this.prerenderingActions();var t=this.model.get("verticalAlignment"),n="Stretch"===t?this.template.gridStretched:this.template.grid;return this.$el.html(n()),this.bindUIElements(),this.renderHeaders(),this.renderItems(),this.trigger("render"),this.applyColumnWidth(),this.syncBodyAndHead(),this.postrenderingActions(),setTimeout(function(){e.updateProperties()},0),this},applyColumnWidth:function(){var e=this.model.get("columns"),t=!1;this.ui.firstRows.children().each(function(n,i){var o=n%(e.length+1);if(0!==o){var r=e.getByIndex(o-1),a=r&&r.getWidth();a&&($(i).css("width",a),t=!0)}}),this.$el.toggleClass("pl-datagrid_layout_fixed",t)},syncBodyAndHead:function(){var e=this.ui.head;e.css("padding-right",this.getHorizontalScrollBarWidth()+"px"),this.ui.body.off("scroll").on("scroll",this.onScrollBodyHandler.bind(this))},onScrollBodyHandler:function(){this.ui.headContainer.scrollLeft(this.ui.body.scrollLeft())},renderHeaders:function(){var e=this,t=this.model.get("columns"),n=this.template.headerCell,i=[],o=this.template.sizeCell,r=t.toArray().map(function(t){i.push(o());var r=$(n()),a=t.getHeaderTemplate(),l=t.getHeader();r.data("pl-column",t),t.getSortable()&&(r.addClass("sortable"),t.getSortDirection()&&setTimeout(function(){e.setUpColumnSort(t,r,t.getSortDirection(),!1)},0));var s;return a?(s=a(null,{value:l}),r.append(s.render())):r.append(l),r});this.ui.header.append(r),this.ui.firstRows.append(i)},renderItems:function(){var e=this.model,t=e.get("valueSelector"),n=e.get("itemTemplate"),i=e.get("items"),o=this.ui.items,r=this;this.removeRowElements(),i.forEach(function(i,a){setTimeout(function(){var l=n(void 0,{index:a,item:i});l.onBeforeClick(function(){var t=e.get("items"),n=t.getByIndex(a),i=r.rowElements.get(n);i.getEnabled()!==!1&&e.set("selectedItem",n)}),l.onToggle(function(){var n=this.model.get("enabled"),i=e.get("items");n&&e.toggleValue(t(void 0,{value:i.getByIndex(a)}))}),l.childElements=l.control.controlView.childElements,r.addRowElement(i,l);var s=l.render();o.append(s)},0)},this)},updateFocusable:function(){var e=this.model.get("focusable");this.rowElements.values.forEach(function(t){e?t.control.controlView.$el.attr("tabindex",0):t.control.controlView.$el.removeAttr("tabindex")})},addRowElement:function(e,t){this.addChildElement(t),this.rowElements.add(e,t)},removeRowElements:function(){this.removeChildElements(),this.rowElements.clear()},onClickCheckAllHandler:function(){this.model.toggleCheckAll()},onClickToHeaderCellHandler:function(e){var t=$(e.currentTarget),n=t.data("pl-column");n&&n.isSortable()&&(null===n.getSortDirection()?(this.resetSort(),this.setUpColumnSort(n,t,"asc")):"asc"===n.getSortDirection()?(this.resetSort("asc"),this.setUpColumnSort(n,t,"desc")):"desc"===n.getSortDirection()&&(this.resetSort("desc"),this.setUpColumnSort(n,t,"asc")))},setUpColumnSort:function(e,t,n,i){e.setSortDirection(n),this.model.set("sortedColumn",e),e.getIsHeaderTemplateEmpty()?t.addClass("sorted sorted-"+n):t.addClass("sorted headerTemplate-sorted-"+n),i!==!1&&e.trigger("onSort",{sortDirection:n})},resetSort:function(e){if(e){var t=this.$el.find(".sorted");t.removeClass("headerTemplate-sorted-"+e+" sorted-"+e)}else{var t=this.$el.find(".sorted");t.removeClass("sorted headerTemplate-sorted-asc headerTemplate-sorted-desc sorted-asc sorted-desc");var n=this.model.get("sortedColumn");n&&n.setSortDirection(null)}}});_.inherit(DataGridRowControl,Control),_.extend(DataGridRowControl.prototype,{onToggle:function(e){this.controlView.on("toggle",e)},createControlModel:function(){return new DataGridRowModel},createControlView:function(e){return new DataGridRowView({model:e})}});var DataGridRowModel=ControlModel.extend({}),DataGridRowView=ControlView.extend({className:"pl-datagrid-row pl-datagrid-row_data",classNameSelected:"info",tagName:"tr",events:{},template:{singleSelect:InfinniUI.Template["controls/dataGrid/dataGridRow/template/singleSelect.tpl.html"],multiSelect:InfinniUI.Template["controls/dataGrid/dataGridRow/template/multiSelect.tpl.html"],dataCell:InfinniUI.Template["controls/dataGrid/dataGridRow/template/dataCell.tpl.html"]},UI:{toggleCell:".pl-datagrid-row__cell_toggle",toggle:".pl-datagrid-toggle",toggleControl:".pl-datagrid-toggle input"},initialize:function(){ControlView.prototype.initialize.call(this),this.childElements=[], -this.on("render",function(){this.ui.toggleCell.on("click",this.onToggleHandler.bind(this))},this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:toggle",this.updateToggle),this.listenTo(this.model,"change:selected",this.updateSelected)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateToggle(),this.updateSelected(),this.updateShowSelectors()},updateVerticalAlignment:function(){},render:function(){this.prerenderingActions();var e=this.$el,t=this,n=this.model.get("multiSelect")?"multiSelect":"singleSelect",i=this.template[n];e.html(i()),this.bindUIElements();var o=this.model.get("cellTemplates"),r=this.template.dataCell;return Array.isArray(o)&&o.forEach(function(n,i){var o=$(r()),a=n();o.append(a.render()),e.append(o),t.addChildElement(a)}),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},updateShowSelectors:function(){var e=this.model.get("showSelectors");this.ui.toggleCell.toggleClass("hidden",!e)},updateToggle:function(){var e=this.model.get("toggle");this.ui.toggleControl.prop("checked",!!e)},updateSelected:function(){var e=this.model.get("selected");this.$el.toggleClass(this.classNameSelected,!!e)},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.toggleControl.attr("disabled",e?null:"disabled")},onToggleHandler:function(e){this.trigger("toggle")},addChildElement:function(e){this.childElements.push(e)},removeChildElements:function(){this.childElements.forEach(function(e){e.remove()}),this.childElements.length=0},remove:function(){this.removeChildElements(),ControlView.prototype.remove.call(this)}}),DataNavigationBaseButtonModel=Backbone.Model.extend({initialize:function(){this.on("change:parent",this.subscribeToParent,this)},subscribeToParent:function(){}}),DataNavigationBaseButton=Backbone.View.extend({tagName:"li",initialize:function(e){Backbone.View.prototype.initialize.call(this,e),this.once("render",function(){this.initHandlersForProperties()},this)},initHandlersForProperties:function(){},updateProperties:function(){},getData:function(){return this.model.toJSON()},setParent:function(e){this.model.set("parent",e),this.subscribeForParent(e)},render:function(){var e=this.template(this.getData());return this.$el.html(e),this.trigger("render"),this.updateProperties(),this},subscribeForParent:function(e){}}),DataNavigationNextButton=DataNavigationBaseButton.extend({template:InfinniUI.Template["controls/dataNavigation/buttons/template/next.tpl.html"],events:{click:"onClickHandler"},initialize:function(e){this.model=new DataNavigationBaseButtonModel,DataNavigationBaseButton.prototype.initialize.call(this,e)},onClickHandler:function(e){this.trigger("command","next")}}),DataNavigationPageButton=DataNavigationBaseButton.extend({template:InfinniUI.Template["controls/dataNavigation/buttons/template/page.tpl.html"],events:{click:"onClickHandler"},initialize:function(e){this.model=new DataNavigationPageButtonModel,DataNavigationBaseButton.prototype.initialize.call(this,e),this.model.set("pageNumber",e.pageNumber)},initHandlersForProperties:function(){DataNavigationBaseButton.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:isCurrent",this.updateIsCurrent)},updateProperties:function(){DataNavigationBaseButton.prototype.updateProperties.call(this),this.updateIsCurrent()},updateIsCurrent:function(){this.$el.toggleClass("active",this.model.get("isCurrent"))},onClickHandler:function(e){this.trigger("command","page",{pageNumber:this.model.get("pageNumber")})}}),DataNavigationPageButtonModel=DataNavigationBaseButtonModel.extend({defaults:{isCurrent:!1},subscribeToParent:function(){DataNavigationBaseButtonModel.prototype.subscribeToParent.call(this);var e=this.get("parent");this.listenTo(e.model,"change:pageNumber",function(){this.updateIsCurrent()}),this.updateIsCurrent()},updateIsCurrent:function(){var e=this.get("parent"),t=e.model.get("pageNumber")===this.get("pageNumber");this.set("isCurrent",t)}}),DataNavigationPrevButton=DataNavigationBaseButton.extend({template:InfinniUI.Template["controls/dataNavigation/buttons/template/prev.tpl.html"],events:{click:"onClickHandler"},initialize:function(e){this.model=new DataNavigationBaseButtonModel,DataNavigationBaseButton.prototype.initialize.call(this,e)},onClickHandler:function(e){this.trigger("command","prev")}});DataNavigationButtonFactory.prototype.buttons={prev:DataNavigationPrevButton,page:DataNavigationPageButton,next:DataNavigationNextButton},DataNavigationButtonFactory.prototype.createButton=function(e,t){var n=this.buttons[e];if("function"!=typeof n)return void console.error("Wrong button type: "+e);var i=new n(t);return i.setParent(this._dataNavigation),i},_.inherit(DataNavigationControl,Control),_.extend(DataNavigationControl.prototype,{createControlModel:function(){return new DataNavigationModel},createControlView:function(e){return new DataNavigationView({model:e})},onPageNumberChanged:function(e){this.controlModel.onPageNumberChanged(e)},onPageSizeChanged:function(e){this.controlModel.onPageSizeChanged(e)}});var DataNavigationModel=ControlModel.extend({defaults:_.defaults({pageNumber:0,pageStart:0,_buttonsCount:5,_buttonsTemplate:["prev","page","next"],pageCount:null,isDataReady:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.set("availablePageSizes",new Collection),this.on("change:pageNumber",this.updatePageStart,this),this.on("change:pageSize",this.updatePageSize,this)},updatePageStart:function(){var e=this.get("pageNumber"),t=this.get("pageStart"),n=this.get("_buttonsCount");e+1>=t+n?t+=Math.floor(n/2):e===t?t=Math.max(0,t-Math.floor(n/2)):t>e+1&&(t=Math.max(0,e-1)),this.set("pageStart",t)},updatePageSize:function(){this.set("pageNumber",0)},nextPage:function(){var e=this.get("pageNumber");this.set("pageNumber",e+1)},prevPage:function(){var e=this.get("pageNumber");e>0&&this.set("pageNumber",e-1)},onPageNumberChanged:function(e){this.on("change:pageNumber",function(t,n){e.call(null,{value:n})})},onPageSizeChanged:function(e){this.on("change:pageSize",function(t,n){e.call(null,{value:n})})}}),DataNavigationView=ControlView.extend({template:InfinniUI.Template["controls/dataNavigation/template/dataNavigation.tpl.html"],className:"pl-data-navigation",UI:{buttons:"ul",sizes:".pl-page-size"},initialize:function(e){ControlView.prototype.initialize.call(this,e),this._childViews=[],this.buttonsFactory=new DataNavigationButtonFactory(this),this._pageSizes=new DataNavigationPageSizes,this._pageSizes.setParent(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:pageStart",this.updateButtons),this.listenTo(this.model,"change:pageCount",this.updateButtons),this.listenTo(this.model,"change:isDataReady",this.updateButtons)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateButtons()},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.renderPageSizes(),this.postrenderingActions(),this},renderPageSizes:function(){this.ui.sizes.append(this._pageSizes.render().$el)},renderButtons:function(){var e,t,n=this.model.get("_buttonsTemplate"),i=this.model.get("_buttonsCount"),o=this.model.get("pageCount"),r=(this.model.get("pageNumber"),this.model.get("pageStart")),a=this.model.get("isDataReady");if(this._removeChildViews(),a){var l=this.buttonsFactory;this.model;e=n.reduce(function(e,t){if("page"===t)for(var n=0;i>n;n+=1){var o=l.createButton(t,{pageNumber:r+n});e.push(o)}else{var o=l.createButton(t);e.push(o)}return e},[]),"number"==typeof o&&r+i>=o&&(t=r+i-o+1,0==o&&(t+=1),e.splice(e.length-t,100));var s=e.map(function(e){return this.listenTo(e,"command",this.onCommandHandler),this._appendChildView(e),e.render().$el},this);this.ui.buttons.append(s)}},updateButtons:function(){this.renderButtons()},onCommandHandler:function(e,t){switch(e){case"prev":this.model.prevPage();break;case"next":this.model.nextPage();break;case"page":this.model.set("pageNumber",t.pageNumber)}},_removeChildViews:function(){this._childViews.forEach(function(e){this.stopListening(e),e.remove()},this),this._childViews.length=0},_appendChildView:function(e){this._childViews.push(e)}}),DataNavigationPageSizes=Backbone.View.extend({className:"btn-group",template:InfinniUI.Template["controls/dataNavigation/pageSizes/template/pageSizes.tpl.html"],events:{"click button":"onClickButtonHandler"},setParent:function(e){this.model=e.model;var t=this.model.get("availablePageSizes");t.onChange(this.onAvailablePageSizesChanged.bind(this)),this.model.on("change:pageSize",this.renderButtons,this)},render:function(){return this.renderButtons(),this},renderButtons:function(){var e=this.model.get("availablePageSizes"),t=this.model.get("pageSize"),n=e.toArray().map(function(e){return this.template({size:e,active:t===e})},this);this.$el.html(n)},onAvailablePageSizesChanged:function(){this.renderButtons()},onClickButtonHandler:function(e){var t=$(e.target),n=parseInt(t.attr("data-size"),10);this.model.set("pageSize",n)}}),CommonLabelView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-label",template:InfinniUI.Template["controls/label/commonView/template/label.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{control:".label-control"}),initialize:function(){ControlView.prototype.initialize.apply(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:displayFormat",this.updateDisplayFormat),this.listenTo(this.model,"change:textWrapping",this.updateTextWrapping),this.listenTo(this.model,"change:textTrimming",this.updateTextTrimming)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateDisplayFormat(),this.updateTextWrapping(),this.updateTextTrimming()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.control.attr("tabindex",0):this.ui.control.removeAttr("tabindex")},updateValue:function(){var e=this.model.get("escapeHtml"),t=e?"text":"html",n=this.getLabelText(),i=this.getLabelElement();i[t](n);var o=String(n);i.attr("title",o.replace(/<\/?[^>]+>/g,""))},updateDisplayFormat:function(){this.updateValue()},updateTextWrapping:function(){var e=this.model.get("textWrapping");this.getLabelElement().toggleClass("pl-text-wrapping",e)},updateTextTrimming:function(){var e=this.model.get("textTrimming");this.getLabelElement().toggleClass("pl-text-trimming",e)},updateText:function(){this.updateValue()},getData:function(){return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{text:this.getLabelText()})},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getLabelText:function(){var e,t=this.model,n=t.get("value"),i=t.get("displayFormat");return"undefined"!=typeof n&&null!==n?e="function"==typeof i?i(null,{value:n}):n:(e=this.model.get("text"),"undefined"!=typeof e&&null!=e||(e="")),e},getLabelElement:function(){return this.ui.control}}));InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.Label.common",CommonLabelView);var LabelControl=function(e){_.superClass(LabelControl,this,e),this.initialize_editorBaseControl()};_.inherit(LabelControl,Control),_.extend(LabelControl.prototype,{createControlModel:function(){return new LabelModel},createControlView:function(e,t){t&&t in window.InfinniUI.viewModes.Label||(t="simple");var n=window.InfinniUI.viewModes.Label[t];return new n({model:e})},getDisplayValue:function(){return this.controlView.getLabelText()}},editorBaseControlMixin);var LabelModel=ControlModel.extend(_.extend({defaults:_.defaults({horizontalTextAlignment:"Left",verticalAlignment:"Top",textWrapping:!0,textTrimming:!0,escapeHtml:!0,focusable:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),SimpleLabelView=CommonLabelView.extend({tagName:"span",template:function(){return""},UI:_.extend({},editorBaseViewMixin.UI,{}),updateFocusable:function(){var e=this.model.get("focusable");e?this.$el.attr("tabindex",0):this.$el.removeAttr("tabindex")},getLabelElement:function(){return this.$el}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.Label.simple",SimpleLabelView);var BaseListBoxView=ListEditorBaseView.extend({template:{plain:InfinniUI.Template["controls/listBox/baseView/template/listBox.tpl.html"],grouped:InfinniUI.Template["controls/listBox/baseView/template/listBoxGrouped.tpl.html"]},className:"pl-listbox",events:{"change .pl-listbox-input":"onChangeHandler"},UI:_.defaults({items:".pl-listbox-i",checkingInputs:".pl-listbox-input input"},ListEditorBaseView.prototype.UI),initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e)},updateGrouping:function(){var e=null!=this.model.get("groupValueSelector");e?this.strategy=new ListBoxViewGroupStrategy(this):this.strategy=new ListBoxViewPlainStrategy(this)},updateValue:function(){this.ui.items.removeClass("pl-listbox-i-chosen"),this.ui.checkingInputs.prop("checked",!1);var e,t,n=this.model.get("value");if(this.isMultiselect()||void 0===n||null===n||(n=[n]),$.isArray(n))for(var i=0,o=n.length;o>i;i++)e=this.model.itemByValue(n[i]),t=this._getElementByItem(e),t&&(t.addClass("pl-listbox-i-chosen"),t.find(".pl-listbox-input input").prop("checked",!0))},updateSelectedItem:function(e){if(this.wasRendered||1==e){this.ui.items.removeClass("pl-listbox-i-selected");var t=this.model.get("selectedItem"),n=this._getElementByItem(t);n&&!n.hasClass("pl-disabled-list-item")&&n.addClass("pl-listbox-i-selected")}},render:function(){this.prerenderingActions();var e=this.strategy.prepareItemsForRendering(),t=this.strategy.getTemplate();return this.removeChildElements(),this.$el.html(t(e)),this.bindUIElements(),this.strategy.appendItemsContent(e),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getItems:function(){return this.model.get("items")},getItemTemplate:function(){return this.model.get("itemTemplate")},getGroupValueSelector:function(){return this.model.get("groupValueSelector")},isMultiselect:function(){return this.model.get("multiSelect")},isFocusable:function(){return this.model.get("focusable")},getGroupItemTemplate:function(){return this.model.get("groupItemTemplate")},onChangeHandler:function(){var e,t=this.ui.checkingInputs.filter(":checked").parent().parent(),n=null,i=this.model;this.isMultiselect()?(n=[],t.each(function(t,o){e=$(o).data("pl-data-item"),n.push(i.valueByItem(e))})):t.length>0&&(n=i.valueByItem(t.data("pl-data-item"))),this.model.set("value",n)},updateDisabledItem:function(){var e=this.model,t=e.get("disabledItemCondition");this.ui.items.removeClass("pl-disabled-list-item"),this.ui.checkingInputs.attr("disabled",null),null!=t&&this.ui.items.each(function(e,n){var i=$(n),o=i.data("pl-data-item"),r=t(void 0,{value:o});r&&(i.hasClass("pl-listbox-i-selected")&&this.model.set("selectedItem",null),i.toggleClass("pl-disabled-list-item",!0),i.find("input").attr("disabled","disabled"),i.find("button").attr("disabled","disabled"))})},disableAll:function(){this.ui.items.addClass("pl-disabled-list-item")},_getElementByItem:function(e){var t=_.find(this.ui.items,function(t){return $(t).data("pl-data-item")==e});return $(t)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.ListBox.base",BaseListBoxView),_.extend(ListBoxViewGroupStrategy.prototype,{prepareItemsForRendering:function(){var e=this.listbox.getItems(),t="listbox-"+guid(),n={isMultiselect:this.listbox.isMultiselect(),focusable:this.listbox.isFocusable(),inputName:t,groups:[]},i={},o=this.listbox.getGroupValueSelector();e.forEach(function(e,t){var n=o(void 0,{value:e});n in i||(i[n]=[]),i[n].push({index:t,item:e})});for(var r in i)n.groups.push({items:i[r]});return n},getTemplate:function(){return this.listbox.template.grouped},appendItemsContent:function(e){var t,n,i,o,r,a=this.listbox.$el,l=this.listbox.getItemTemplate(),s=this.listbox.getGroupItemTemplate(),u=e.groups,d=this.listbox;a.find(".pl-listbox-group-i").each(function(e,a){r=u[e],i=s(void 0,{index:r.items[0].index,item:r}),d.addChildElement(i),o=$(a),o.find(".pl-listbox-group-title").append(i.render()),o.find(".pl-listbox-body").each(function(e,i){t=r.items[e].item,n=l(void 0,{index:r.items[e].index,item:t}),d.addChildElement(n),$(i).append(n.render()),$(i).parent().data("pl-data-item",t)})})}}),_.extend(ListBoxViewPlainStrategy.prototype,{prepareItemsForRendering:function(){var e=this.listbox.getItems(),t="listbox-"+guid(),n={isMultiselect:this.listbox.isMultiselect(),focusable:this.listbox.isFocusable(),inputName:t,items:e.toArray()};return n},getTemplate:function(){return this.listbox.template.plain},appendItemsContent:function(e){var t,n,i=this.listbox.$el,o=this.listbox.getItemTemplate(),r=e.items,a=this.listbox;i.find(".pl-listbox-body").each(function(e,i){n=$(i),t=o(void 0,{index:e,item:r[e]}),a.addChildElement(t),n.append(t.render()),n.parent().data("pl-data-item",r[e])})}}),_.inherit(ListBoxControl,ListEditorBaseControl),_.extend(ListBoxControl.prototype,{createControlModel:function(){return new ListBoxModel},createControlView:function(e,t){(!t||!t in window.InfinniUI.viewModes.ListBox)&&(t="common");var n=window.InfinniUI.viewModes.ListBox[t];return new n({model:e})},updateDisabledItem:function(){this.controlView.updateDisabledItem()},disableAll:function(){this.controlView.disableAll()}});var ListBoxModel=ListEditorBaseModel.extend({initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),CheckingListBoxView=BaseListBoxView.extend({className:"pl-listbox",template:{plain:InfinniUI.Template["controls/listBox/checkingView/template/listBox.tpl.html"],grouped:InfinniUI.Template["controls/listBox/checkingView/template/listBoxGrouped.tpl.html"]},events:_.extend({},BaseListBoxView.prototype.events),initialize:function(e){BaseListBoxView.prototype.initialize.call(this,e),this.initDomHandlers()},updateEnabled:function(){ListEditorBaseView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.checkingInputs.attr("disabled",!e)},initDomHandlers:function(){var e=this.$el,t=this;e.get(0).addEventListener("click",function(n){n=$.event.fix(n);var i,o,r,a=$(n.target);if(t.model.get("enabled")){for(;a.get(0)!=e.get(0);)a.hasClass("pl-listbox-i")&&(i=a),a=a.parent();i&&i.length>0&&(o=i.data("pl-data-item"),r=t.model.isDisabledItem(o),r||t.model.toggleValue(o),t.model.set("selectedItem",o))}},!0)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.ListBox.checking",CheckingListBoxView);var CommonListBoxView=BaseListBoxView.extend({className:"pl-listbox pl-listbox-common-mode",events:_.extend({},BaseListBoxView.prototype.events),initialize:function(e){BaseListBoxView.prototype.initialize.call(this,e),this.initDomHandlers()},initDomHandlers:function(){var e=this.$el,t=this;e.get(0).addEventListener("click",function(n){n=$.event.fix(n);for(var i,o,r,a=$(n.target);a.get(0)!=e.get(0);)a.hasClass("pl-listbox-i")&&(i=a),a=a.parent();i.length>0&&(o=i.data("pl-data-item"),r=t.model.isDisabledItem(o),r||t.model.toggleValue(o),t.model.set("selectedItem",o))},!0)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.ListBox.common",CommonListBoxView);var CommonPopupButtonView=ContainerView.extend({className:"pl-popup-button",template:InfinniUI.Template["controls/popupButton/commonView/template/popupButton.tpl.html"],dropdownTemplate:InfinniUI.Template["controls/popupButton/commonView/template/popupButton.dropdown.tpl.html"],events:{click:"onClickHandler"},UI:{button:".pl-popup-button__button",grip:".pl-popup-button__grip"},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateContent()},updateContent:CommonButtonView.prototype.updateContent,updateText:CommonButtonView.prototype.updateText,getButtonElement:function(){return this.ui.button},render:function(){this.prerenderingActions();var e=this.model.get("items").toArray(),t=this.template;return this.removeChildElements(),this.$el.html(t({items:e})),this.bindUIElements(),this.$dropdown=this.renderDropdown(),this.$dropdown.on("click",this.close.bind(this)),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderDropdown:function(){var e=this.dropdownTemplate,t=this.model.get("items").toArray(),n=$(e({items:t}));return this.appendItemsContent(n,t),n},appendItemsContent:function(e,t){var n,i,o=this,r=this.model.get("itemTemplate");e.find(".pl-popup-button__item").each(function(e,a){i=$(a),n=r(void 0,{index:e,item:t[e]}),o.addChildElement(n),i.append(n.render())})},open:function(){$("body").append(this.$dropdown),this.$dropdown.addClass("open"),this.alignDropdown();this.$dropdown.add(this.ui.grip)},close:function(){this.$dropdown.removeClass("open"),this.$dropdown.detach()},alignDropdown:function(){var e=this.$el.offset(),t=this.$el.height(),n=this.$el.width(),i=this.$dropdown.find(".pl-popup-button__items")[0],o=i.offsetHeight,r=i.offsetWidth,a=e.left,l=e.top+t;e.left+r>=window.innerWidth&&(a+=n-r),l+o>=window.innerHeight&&(l-=t+o+2),this.$dropdown.offset({top:l,left:a})},toggle:function(){this.$dropdown.hasClass("open")?this.close():this.open()},onClickHandler:function(){this.toggle()},updateGrouping:function(){}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.PopupButton.common",CommonPopupButtonView),_.inherit(PopupButtonControl,ContainerControl),_.extend(PopupButtonControl.prototype,{createControlModel:function(){return new PopupButtonModel},createControlView:function(e,t){(!t||!t in window.InfinniUI.viewModes.PopupButton)&&(t="common");var n=window.InfinniUI.viewModes.PopupButton[t];return new n({model:e})}},buttonControlMixin);var PopupButtonModel=ContainerModel.extend({}),ForMenuPopupButtonView=CommonPopupButtonView.extend({tagName:"a",className:"pl-popup-button",attributes:{href:"javascript:;"},template:InfinniUI.Template["controls/popupButton/forMenuView/template/popupButton.tpl.html"],dropdownTemplate:InfinniUI.Template["controls/popupButton/commonView/template/popupButton.dropdown.tpl.html"],events:{click:"onClickGripHandler"},UI:{button:".pl-popup-button__button",grip:".pl-popup-button__grip"},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateContent()},updateContent:CommonButtonView.prototype.updateContent,updateText:CommonButtonView.prototype.updateText,updateHorizontalAlignment:function(){var e,t=this.model.get("horizontalAlignment"),n=this;this.whenReady(function(){return e=n.$el.parent().parent(),e.length>0},function(){"Right"==t?e.addClass("pull-right"):e.removeClass("pull-right")})},getButtonElement:function(){return this.ui.button},render:function(){this.prerenderingActions();var e=this.model.get("items").toArray(),t=this.template;return this.removeChildElements(),this.$el.html(t({items:e})),this.bindUIElements(),this.$dropdown=this.renderDropdown(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderDropdown:function(){var e=this.dropdownTemplate,t=this.model.get("items").toArray(),n=$(e({items:t}));return this.appendItemsContent(n,t),n.on("click",function(){this.close()}.bind(this)),n},appendItemsContent:function(e,t){var n,i,o=this,r=this.model.get("itemTemplate");e.find(".pl-popup-button__item").each(function(e,a){i=$(a),n=r(void 0,{index:e,item:t[e]}),o.addChildElement(n),i.append(n.render())})},open:function(){var e=this,t=this.$el.parent();$("body").append(this.$dropdown),this.$dropdown.addClass("open"),t.addClass("open"),this.alignDropdown();var n=this.$dropdown.add(this.$el);new ActionOnLoseFocus(n,function(){e.close()})},close:function(){this.$dropdown.removeClass("open"),this.$el.parent().removeClass("open"),this.$dropdown.detach()},alignDropdown:function(){var e,t=this.model.get("horizontalAlignment"),n=this.$el.parent(),i=n.offset(),o=i.top+n.height()-2,r=this.$dropdown.find(".dropdown-menu");e="Right"==t?i.left-(r.width()-n.width()):i.left,this.$dropdown.offset({top:o,left:e})},onClickGripHandler:function(){this.toggle()},updateGrouping:function(){},whenReady:function(e,t,n){var i=this;void 0===n&&(n=100),e()?t():n>0&&setTimeout(function(){i.whenReady(e,t,n-1)},10)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.PopupButton.forMenu",ForMenuPopupButtonView),_.inherit(StackPanelControl,ContainerControl),_.extend(StackPanelControl.prototype,{createControlModel:function(){return new StackPanelModel},createControlView:function(e,t){var n=new StackPanelView({model:e});return n.viewMode=t,n}});var StackPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),StackPanelView=ContainerView.extend({tagName:"ul",className:"pl-stack-panel pl-clearfix",template:{plain:InfinniUI.Template["controls/stackPanel/baseView/template/stackPanel.tpl.html"],grouped:InfinniUI.Template["controls/stackPanel/baseView/template/stackPanelGrouped.tpl.html"]},UI:{items:".stackpanel-items"},initialize:function(e){ContainerView.prototype.initialize.call(this,e),this.initOrientation()},updateGrouping:function(){var e=null!=this.model.get("groupValueSelector");e?this.strategy=new StackPanelViewGroupStrategy(this):this.strategy=new StackPanelViewPlainStrategy(this)},render:function(){this.prerenderingActions(),this.removeChildElements();var e=this.strategy.prepareItemsForRendering(),t=this.strategy.getTemplate();return this.$el.html(t(e)),this.strategy.appendItemsContent(e),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},initOrientation:function(){this.listenTo(this.model,"change:orientation",this.updateOrientation),this.updateOrientation()},updateOrientation:function(){var e=this.model.get("orientation");this.$el.toggleClass("horizontal-orientation","Horizontal"==e),this.$el.toggleClass("pl-stack-panel_horizontal","Horizontal"==e)},getItems:function(){return this.model.get("items")},getItemTemplate:function(){return this.model.get("itemTemplate")},getGroupValueSelector:function(){return this.model.get("groupValueSelector")},getGroupItemTemplate:function(){return this.model.get("groupItemTemplate")}});_.extend(StackPanelViewGroupStrategy.prototype,{groupTemplate:InfinniUI.Template["controls/stackPanel/baseView/template/stackPanelGroup.tpl.html"],prepareItemsForRendering:function(){var e=this.stackPanel.getItems(),t="listbox-"+guid(),n={inputName:t,groups:[]},i={},o=this.stackPanel.getGroupValueSelector();e.forEach(function(e,t){var n=o(void 0,{value:e});n in i||(i[n]=[]),i[n].push(e)});for(var r in i)i.hasOwnProperty(r)&&n.groups.push({items:i[r],indices:i[r].map(function(t){return e.indexOf(t)})});return n},getTemplate:function(){return this.stackPanel.template.grouped},appendItemsContent:function(e){var t,n=this.stackPanel,i=n.$el,o=this.groupTemplate,r=this.stackPanel.getGroupItemTemplate(),a=this.stackPanel.getItemTemplate(),l=e.groups;t=l.map(function(e,t){var i,l=e.items||[],s=e.indices||[],u=$(o({items:l})),d=r(null,{index:s[0],item:e});return n.addChildElement(d),i=l.map(function(e,t){var i=a(null,{index:s[t],item:e});return n.addChildElement(i),i.render()}),$(".pl-stack-panel-group__header",u).append(d.render()),$(".pl-stack-panel-list__item",u).each(function(e,t){$(t).append(i[e])}),u}),i.append(t)}}),_.extend(StackPanelViewPlainStrategy.prototype,{prepareItemsForRendering:function(){var e=this.stackPanel.getItems(),t={items:e.toArray()};return t},getTemplate:function(){return this.stackPanel.template.plain},appendItemsContent:function(e,t){var n,i,o=this.stackPanel.$el,r=this.stackPanel.getItemTemplate(),a=e.items,l=this.stackPanel;t=t||".pl-stack-panel-i",o.find(t).each(function(e,t){i=$(t),n=r(void 0,{index:e,item:a[e]}),l.addChildElement(n),i.append(n.render()),i.parent().data("pl-data-item",a[e])})}}),_.inherit(TablePanelControl,ContainerControl),_.extend(TablePanelControl.prototype,{createControlModel:function(){return new TablePanelModel},createControlView:function(e){return new TablePanelView({model:e})}});var TablePanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),TablePanelView=ContainerView.extend({className:"pl-table-panel",initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this;t.forEach(function(t,o){e=n(void 0,{item:t,index:o}),i.addChildElement(e),i.$el.append(e.render())})},updateGrouping:function(){}});_.inherit(RowControl,ContainerControl),_.extend(RowControl.prototype,{createControlModel:function(){return new RowModel},createControlView:function(e){return new RowView({model:e})}});var RowModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),RowView=ContainerView.extend({className:"pl-row row",initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this;t.forEach(function(t,o){e=n(void 0,{item:t,index:o}),i.addChildElement(e),i.$el.append(e.render())})},updateGrouping:function(){}});_.inherit(CellControl,ContainerControl),_.extend(CellControl.prototype,{createControlModel:function(){return new CellModel},createControlView:function(e){return new CellView({model:e})}});var CellModel=ContainerModel.extend({defaults:_.defaults({columnSpan:1},ContainerModel.prototype.defaults),initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),CellView=ContainerView.extend({className:"pl-cell",initialize:function(e){ContainerView.prototype.initialize.call(this,e),this.initColumnSpan()},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this;t.forEach(function(t,o){e=n(void 0,{item:t,index:o}),i.addChildElement(e),i.$el.append(e.render())})},initColumnSpan:function(){this.listenTo(this.model,"change:columnSpan",this.updateColumnSpan),this.updateColumnSpan()},updateColumnSpan:function(){var e=this.model.get("columnSpan"),t=this.columnSpan;e!=t&&(t&&this.$el.removeClass("col-xs-"+t),this.$el.addClass("col-xs-"+e),this.columnSpan=e)},updateGrouping:function(){}});_.inherit(TabPanelControl,ContainerControl),_.extend(TabPanelControl.prototype,{setSelectedItem:function(e){var t=null,n=this.controlModel,i=this.controlView.childElements,o=n.get("items");if(e instanceof TabPage)n.set("selectedItem",e);else if(Array.isArray(i)){var r=o.indexOf(e);-1!==r&&(t=i[r]),this.controlModel.set("selectedItem",t)}},createControlModel:function(){return new TabPanelModel},createControlView:function(e){return new TabPanelView({model:e})}});var TabPanelModel=ContainerModel.extend({ -initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},defaults:_.defaults({headerLocation:InfinniUI.TabHeaderLocation.top,headerOrientation:InfinniUI.TabHeaderOrientation.horizontal},ContainerModel.prototype.defaults)}),TabPanelView=ContainerView.extend({className:"pl-tabpanel",template:{top:InfinniUI.Template["controls/tabPanel/template/tabPanel.top.tpl.html"],right:InfinniUI.Template["controls/tabPanel/template/tabPanel.right.tpl.html"],bottom:InfinniUI.Template["controls/tabPanel/template/tabPanel.bottom.tpl.html"],left:InfinniUI.Template["controls/tabPanel/template/tabPanel.left.tpl.html"],none:InfinniUI.Template["controls/tabPanel/template/tabPanel.none.tpl.html"]},UI:{header:".pl-tabpanel-header",content:".pl-tabpanel-content"},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:headerLocation",this.onChangeHeaderLocation),this.listenTo(this.model,"change:headerOrientation",this.updateHeaderOrientation),this.listenTo(this.model,"change:selectedItem",this.updateSelectedItem)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.renderItemsContents(),this.checkSelectedItem(),this.postrenderingActions(),this.trigger("render"),this.updateProperties(),this},renderItemsContents:function(){var e=this.model.get("items");this.removeChildElements(),this.ui.content.empty(),this.model.set("selectedItemIndex",-1);var t=[];e.forEach(function(e,n){t.push({tabElement:this.renderTabContent(e,n),item:e,index:n})},this),this.renderTabHeaders(t)},renderTabHeaders:function(e){var t,n=this.model,i=n.get("items");n.get("selectedItem");if(Array.isArray(this.tabHeaders))for(;t=this.tabHeaders.pop();)this.stopListening(t),t.remove();this.tabHeaders=e.map(function(e){var t=-1!==i.indexOf(e.item),o=this.renderTabHeader(e.tabElement,t);return this.listenTo(o,"selected",function(){n.set("selectedItem",e.tabElement)}),this.listenTo(o,"close",function(){e.tabElement.close()}),o},this)},renderTabHeader:function(e,t){var n=new TabHeaderView({text:e.getText(),canClose:e.getCanClose(),selected:t});return e.onPropertyChanged("text",function(){n.setText(e.getText())}),e.onPropertyChanged("canClose",function(){n.setCanClose(e.getCanClose())}),this.ui.header.append(n.render().$el),n},renderTabContent:function(e,t){var n=this.model.get("itemTemplate"),i=n(void 0,{item:e,index:t});return this.addChildElement(i),this.ui.content.append(i.render()),i},getTemplate:function(){var e,t=this.model.get("headerLocation");switch(t){case InfinniUI.TabHeaderLocation.top:e=this.template.top;break;case InfinniUI.TabHeaderLocation.right:e=this.template.right;break;case InfinniUI.TabHeaderLocation.bottom:e=this.template.bottom;break;case InfinniUI.TabHeaderLocation.left:e=this.template.left;break;case InfinniUI.TabHeaderLocation.none:default:e=this.template.none}return e},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateHeaderOrientation(),this.updateSelectedItem()},onChangeHeaderLocation:function(){this.rerender()},updateHeaderOrientation:function(){},checkSelectedItem:function(){var e=this.model,t=this.childElements,n=e.get("selectedItem");Array.isArray(t)&&t.length?-1===t.indexOf(n)&&e.set("selectedItem",t[0]):e.set("selectedItem",null)},updateSelectedItem:function(){if(this.wasRendered){var e=this.childElements,t=this.tabHeaders,n=this.model.get("selectedItem"),i=e.indexOf(n);Array.isArray(e)&&(e.forEach(function(e){e.setSelected(!1)}),-1!==i&&e[i].setSelected(!0)),Array.isArray(t)&&(t.forEach(function(e){e.setSelected(!1)}),-1!==i&&t[i].setSelected(!0))}},updateGrouping:function(){}});_.inherit(TabPageControl,ContainerControl),_.extend(TabPageControl.prototype,{createControlModel:function(){return new TabPageModel},createControlView:function(e){return new TabPageView({model:e})}});var TabPageModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},defaults:_.defaults({canClose:!1,selected:!1},ContainerModel.prototype.defaults)}),TabPageView=ContainerView.extend({className:"pl-tabpage hidden",template:InfinniUI.Template["controls/tabPanel/tabPage/template/tabPage.tpl.html"],UI:{},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:selected",this.updateSelected)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateSelected()},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.renderItemsContents(),this.bindUIElements(),this.postrenderingActions(),this.trigger("render"),this.updateProperties(),this},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-tabpage-i"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateSelected:function(){var e=this.model.get("selected");this.$el.toggleClass("hidden",!e)},updateGrouping:function(){}}),TabHeaderModel=Backbone.Model.extend({defaults:{text:"",canClose:!1}}),TabHeaderView=Backbone.View.extend({className:"pl-tabheader",tagName:"li",template:InfinniUI.Template["controls/tabPanel/tabHeader/template/tabHeader.tpl.html"],events:{click:"onClickHandler","click .pl-close":"onClickCloseHandler"},UI:{label:".pl-tabheader-text",close:".pl-close"},initialize:function(e){this.model=new TabHeaderModel(e),this.on("rendered",this.onRenderedHandler)},render:function(){return this.$el.html(this.template),this.bindUIElements(),this.trigger("rendered"),this},setText:function(e){this.model.set("text",e)},setCanClose:function(e){this.model.set("canClose",e)},setSelected:function(e){this.model.set("selected",e)},updateProperties:function(){this.updateTextHandler(),this.updateCanClose(),this.updateSelectedHandler()},onRenderedHandler:function(){this.updateProperties(),this.listenTo(this.model,"change:text",this.updateTextHandler),this.listenTo(this.model,"change:selected",this.updateSelectedHandler),this.listenTo(this.model,"cahnge:canClose",this.updateCanClose)},updateTextHandler:function(){var e=this.model.get("text");this.ui.label.text(e)},updateCanClose:function(){var e=this.model.get("canClose");this.ui.close.toggleClass("hidden",!e)},updateSelectedHandler:function(){var e=this.model.get("selected");this.$el.toggleClass("pl-active active",e)},onClickHandler:function(e){this.trigger("selected")},onClickCloseHandler:function(e){e.stopPropagation(),this.trigger("close")}});_.extend(TabHeaderView.prototype,bindUIElementsMixin),_.inherit(TreeViewControl,ListEditorBaseControl),_.extend(TreeViewControl.prototype,{createControlModel:function(){return new TreeViewModel},createControlView:function(e){return new TreeViewView({model:e})}});var TreeViewModel=ListEditorBaseModel.extend({initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},toggleItem:function(e,t){var n=this.valueByItem(e);this.toggleValue(n,t),this.trigger("toggle")}}),TreeViewView=ListEditorBaseView.extend({className:"pl-treeview",classNameMultiSelect:"pl-treeview_multi-select",classNameSingleSelect:"pl-treeview_single-select",template:InfinniUI.Template["controls/treeView/template/treeview.tpl.html"],events:{},UI:_.defaults({},ListEditorBaseView.prototype.UI),initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e),this.ItemsMap=new HashMap},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.renderItems(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItems:function(e){function t(e){return a.toArray().filter(function(t){var i=l(null,{value:t});return n(e)?n(i):i===e}).map(function(e){function n(t){return r.itemByValue(t)===e}var i=(new u).render(),l=i.$el,h=d(null,{value:e,index:a.indexOf(e)}).render();l.data("pl-data-item",e),i.listenTo(r,"change:selectedItem",function(t,n){i.setSelected(n===e)}),i.listenTo(r,"change:value",function(e,t){var o,r=e.get("multiSelect");o=r?Array.isArray(t)?t.some(n):!1:n(t),i.setChecked(o)}),o.listenTo(i,"select",o.onSelectNodeHandler.bind(o,e,i)),o.listenTo(i,"check",o.onCheckNodeHandler.bind(o,e,i)),i.setItemContent(h);var p=s(null,{value:e}),m=t(p);return i.setItemsContent(m),c.add(p,e),l})}function n(e){return null===e||"undefined"==typeof e}var i,o=this,r=this.model,a=r.get("items"),l=r.get("parentSelector"),s=r.get("keySelector"),u=this.getNodeConstructor(),d=r.get("itemTemplate"),c=this.ItemsMap;c.clear(),i=t(),this.$el.append(i)},getNodeConstructor:function(){var e=this.model.get("multiSelect");return e===!0?TreeViewNodeCheckbox:TreeViewNodeRadio},onSelectNodeHandler:function(e,t){var n=this.model,i=n.get("multiSelect");n.set("selectedItem",e),i||this.tryToggleValue(e)},onCheckNodeHandler:function(e,t){var n=this.model,i=n.get("multiSelect");this.tryToggleValue(e),i||n.set("selectedItem",e)},tryToggleValue:function(e){var t=this.model,n=this.isDisabledItem(e);if(!n){var i=t.valueByItem(e);t.toggleValue(i)}},isDisabledItem:function(e){return null==e?!1:this.model.isDisabledItem(e)||this.isDisabledItem(this.getParent(e))},getParent:function(e){var t=this.model.get("parentSelector"),n=t(null,{value:e});return n&&this.ItemsMap.get(n)},getTemplate:function(){return this.template},updateProperties:function(){ListEditorBaseView.prototype.updateProperties.call(this),this.updateMultiSelect()},updateMultiSelect:function(){var e=this.model.get("multiSelect");this.$el.toggleClass(this.classNameMultiSelect,!!e),this.$el.toggleClass(this.classNameSingleSelect,!e)},updateEnabled:function(){ListEditorBaseView.prototype.updateEnabled.call(this);this.model.get("enabled")},updateValue:function(){},updateSelectedItem:function(){},updateGrouping:function(){},updateDisabledItem:function(){var e=this.model,t=e.get("disabledItemCondition"),n=this.$el.find(".pl-treeview-node");n.removeClass("pl-disabled-list-item"),null!=t&&n.each(function(t,n){var i=$(n),o=i.data("pl-data-item");e.isDisabledItem(o)&&i.addClass("pl-disabled-list-item")})},rerender:function(){}}),TreeViewNodeBase=Backbone.View.extend({className:"pl-treeview-node",classNameCheckerChecked:"pl-treeview-item__checker_checked",classNameContentSelected:"pl-treeview-item__content_selected",classNameItemsExpanded:"pl-treeview-node__items_expanded",classNameItemsCollapsed:"pl-treeview-node__items_collapsed",classNameButtonCollapse:"pl-treeview-node__button_collapse",classNameButtonExpand:"pl-treeview-node__button_expand",UI:{checker:".pl-treeview-item__checker",content:".pl-treeview-item__content",items:".pl-treeview-node__items",button:".pl-treeview-node__button"},initialize:function(){var e=new Backbone.Model({collapsed:!0});this.model=e,this.listenTo(e,"change:selected",this.updateSelected),this.listenTo(e,"change:checked",this.updateChecked),this.listenTo(e,"change:collapsed",this.updateCollapsed)},updateChecked:function(){var e=this.model.get("checked");this.ui.checker.toggleClass(this.classNameCheckerChecked,e===!0)},updateSelected:function(){var e=this.model.get("selected");this.ui.content.toggleClass(this.classNameContentSelected,e===!0)},updateCollapsed:function(){var e=!!this.model.get("collapsed");this.ui.items.toggleClass(this.classNameItemsExpanded,!e),this.ui.items.toggleClass(this.classNameItemsCollapsed,e),this.ui.button.toggleClass(this.classNameButtonCollapse,!e),this.ui.button.toggleClass(this.classNameButtonExpand,e)},updateState:function(){this.updateCollapsed(),this.updateSelected(),this.updateChecked()},render:function(){return this.$el.html(this.template),this.bindUIElements(),this.updateState(),this.initDomEventsHandlers(),this},initDomEventsHandlers:function(){this.ui.button.on("click",this.onClickEventHandler.bind(this)),this.ui.content[0].addEventListener("click",this.onClickItemHandler.bind(this),!0),this.ui.checker[0].addEventListener("click",this.onClickCheckHandler.bind(this),!0)},onClickItemHandler:function(e){this.trigger("select")},onClickCheckHandler:function(e){this.trigger("check")},toggle:function(){var e=this.model,t=e.get("collapsed");this.model.set("collapsed",!t)},setItemContent:function(e){this.ui.content.empty(),this.ui.content.append(e)},setItemsContent:function(e){this.ui.items.empty(),this.ui.items.append(e)},onClickEventHandler:function(e){this.toggle()},setSelected:function(e){this.model.set("selected",e)},setChecked:function(e){this.model.set("checked",e)}});_.extend(TreeViewNodeBase.prototype,bindUIElementsMixin);var TreeViewNodeCheckbox=TreeViewNodeBase.extend({template:InfinniUI.Template["controls/treeView/template/node-checkbox.tpl.html"]}),TreeViewNodeRadio=TreeViewNodeBase.extend({template:InfinniUI.Template["controls/treeView/template/node-radio.tpl.html"]});_.inherit(CheckBoxControl,Control),_.extend(CheckBoxControl.prototype,{createControlModel:function(){return new CheckBoxModel},createControlView:function(e){return new CheckBoxView({model:e})}},editorBaseControlMixin);var CheckBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({value:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),CheckBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{template:InfinniUI.Template["controls/checkBox/template/checkBox.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{text:".checkbox-label",input:"input"}),events:{"click input":"onClickHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this)},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.input.removeAttr("tabindex"):this.ui.input.attr("tabindex",-1)},updateText:function(){var e=this.model.get("text");this.ui.text.text(e?e:"")},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},onClickHandler:function(){var e=this.model,t=e.get("enabled");t&&e.set("value",!e.get("value"))},updateValue:function(){var e=this.model.get("value");this.ui.input.prop("checked",!!e)},setFocus:function(){this.ui.input.focus()}}));_.inherit(ComboBoxControl,ListEditorBaseControl),_.extend(ComboBoxControl.prototype,{createControlModel:function(){return new ComboBoxModel},createControlView:function(e){return new ComboBoxView({model:e})}});var ComboBoxModel=ListEditorBaseModel.extend({defaults:_.defaults({showClear:!0,autocomplete:!1,autocompleteValue:"",valueTemplate:function(e,t){return{render:function(){return t.value}}}},ListEditorBaseModel.prototype.defaults),initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.on("change:value",this.syncSelectedItem)},setSelectedItemToValue:function(){var e=this.get("autocomplete"),t=this.get("multiSelect");if(!e&&!t){var n=this.getSelectedItem(),i=this.valueByItem(n);this.set("value",i)}},syncSelectedItem:function(e,t){var n=this.itemByValue(t);this.setSelectedItem(n)},getSelectedItem:function(){var e=this.get("selectedItem");return e},setSelectedItem:function(e){this.set("selectedItem",e)},selectNextItem:function(){var e=this.get("items"),t=this.getSelectedItem();if(e.length>0){var n=0;t&&(n=e.indexOf(t),n=-1===n?0:Math.min(e.length-1,n+1)),t=e.getByIndex(n)}else t=null;this.setSelectedItem(t),this.setSelectedItemToValue()},selectPrevItem:function(){var e=this.get("items"),t=this.getSelectedItem();if(e.length>0){var n=0;t&&(n=e.indexOf(t),n=-1===n?0:Math.max(0,n-1)),t=e.getByIndex(n)}this.setSelectedItem(t),this.setSelectedItemToValue()},selectFirstItem:function(){var e=this.get("items"),t=null;e.length>0&&(t=e.getByIndex(0)),this.setSelectedItem(t),this.setSelectedItemToValue()},selectLastItem:function(){var e=this.get("items"),t=null;e.length>0&&(t=e.getByIndex(e.length-1)),this.setSelectedItem(t),this.setSelectedItemToValue()},toggleItem:function(e,t){var n=this.valueByItem(e);this.toggleValue(n,t),this.trigger("toggle")}}),ComboBoxView=ListEditorBaseView.extend({className:"pl-combobox form-group",template:InfinniUI.Template["controls/comboBox/template/combobox.tpl.html"],events:{"click .pl-combobox__grip":"onClickGripHandler","click .pl-combobox__value":"onClickValueHandler","click .pl-combobox__clear":"onClickClearHandler","click .pl-control":"onClickValueHandler","keydown .pl-control":"onKeyDownControlHandler"},UI:_.defaults({control:".pl-control",label:".pl-control-label",value:".pl-combobox__value",clear:".pl-combobox__clear"},ListEditorBaseView.prototype.UI),isControlElement:function(e){var t=ListEditorBaseView.prototype.isControlElement.call(this,e);return t?t:this.dropDownView?$.contains(this.dropDownView.el,e):!1},updateFocusable:function(){var e=this.model.get("focusable"),t=this.model.get("enabled");e&&t?this.ui.control.attr("tabindex",0):this.ui.control.removeAttr("tabindex")},initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e);var t=this.model,n=this;this.on("render",function(){n.renderValue(),t.on("change:dropdown",function(e,t){if(t){e.set("autocompleteValue",""),e.set("focused",!0),n.dropDownView&&n.dropDownView.remove();var i=new ComboBoxDropdownView({model:e});n.dropDownView=i,this.listenTo(i,"search",_.debounce(n.onSearchValueHandler.bind(n),300));var o=i.render();$("body").append(o),i.updatePosition(n.el),n.dropDownView.on("itemsRendered2",function(){i.updatePosition(n.el)}),e.get("autocomplete")?i.setSearchFocus():n.ui.control.focus(),setTimeout(i.ensureVisibleSelectedItem.bind(i),0)}else n.ui.control.focus()}),t.onValueChanged(this.onChangeValueHandler.bind(this))},this)},initHandlersForProperties:function(){ListEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:showClear",this.updateShowClear),this.listenTo(this.model,"change:labelText",this.updateLabelText)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getTemplate:function(){return this.template},onKeyDownControlHandler:function(e){var t=this.model.get("enabled");if(!t)return void e.preventDefault();if(!e.ctrlKey&&!e.altKey){if(this.isDropdown())return this.dropDownView.onKeyDownHandler.call(this.dropDownView,e);switch(e.which){case 40:case 13:e.preventDefault(),this.toggleDropdown()}}},onClickClearHandler:function(){var e=this.model.get("enabled");e&&(this.model.set("value",null),this.ui.control.focus())},onClickGripHandler:function(){var e=this.model.get("enabled");e&&this.toggleDropdown()},updateProperties:function(){ListEditorBaseView.prototype.updateProperties.call(this),this.updateLabelText(),this.updateShowClear()},updateGrouping:function(){this.toggleDropdown(!1)},updateLabelText:function(){var e=this.model.get("labelText");e&&""!==e?this.ui.label.toggleClass("hidden",!1):this.ui.label.toggleClass("hidden",!0),this.ui.label.text(e)},updateEnabled:function(){ListEditorBaseView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");e?this.updateFocusable():this.ui.control.removeAttr("tabindex")},updateValue:function(){this.updateShowClear()},updateShowClear:function(){var e=this.model,t=e.get("showClear"),n=e.get("value"),i=null===n||"undefined"==typeof n;this.ui.clear.toggleClass("hidden",!t||i)},updateSelectedItem:function(){},updateDisabledItem:function(){this.toggleDropdown(!1)},isDropdown:function(){var e=this.model;return!!e.get("dropdown")},toggleDropdown:function(e){var t=this.model;"undefined"==typeof e&&(e=!t.get("dropdown")),t.set("dropdown",e)},onChangeValueHandler:function(){this.renderValue()},rerender:function(){},renderValue:function(){var e=this.model,t=e.get("multiSelect"),n=this.model.get("value"),i=[],o=this.model.get("valueTemplate");if(t&&Array.isArray(n)){var r=new ComboBoxValues({items:n.map(function(e,t){return{$value:o(null,{value:e,index:t}).render(),value:e,index:t}})});r.listenTo(e,"toggle",r.setFocus),this.listenTo(r,"remove",this.onRemoveValueHandler),this.listenTo(r,"search",_.debounce(this.onSearchValueHandler.bind(this),300)),i=r.render()}else i=o(null,{value:n}).render();this.ui.value.empty(),this.ui.value.append(i),editorBaseViewMixin.updateValueState.call(this)},onRemoveValueHandler:function(e){this.model.toggleValue(e,!1)},onSearchValueHandler:function(e){this.toggleDropdown(!0),this.model.set("autocompleteValue",e)},onClickValueHandler:function(e){var t=this.model.get("enabled");t&&this.toggleDropdown(!0)}});_.inherit(ContextMenuControl,ContainerControl),_.extend(ContextMenuControl.prototype,{createControlModel:function(){return new ContextMenuModel},createControlView:function(e){return new ContextMenuView({model:e})}});var ContextMenuModel=ContainerModel.extend({}),ContextMenuView=ContainerView.extend({contextMenuTemplate:InfinniUI.Template["controls/contextMenu/template/contextMenu.tpl.html"],updateHorizontalAlignment:function(){var e,t=this.model.get("horizontalAlignment"),n=this;this.whenReady(function(){return e=n.$el.parent().parent(),e.length>0},function(){"Right"==t?e.addClass("pull-right"):e.removeClass("pull-right")})},render:function(){var e=window.InfinniUI.global.messageBus,t=this;return this.prerenderingActions(),this.removeChildElements(),this.$el=this.renderDropdown(),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),e.subscribe(messageTypes.onOpenContextMenu.name,function(e,n){t.open(n.value)}),this},renderDropdown:function(){var e=this.contextMenuTemplate,t=this.model.get("items").toArray(),n=$(e({items:t}));return this.appendItemsContent(n,t),n.on("click",function(){this.close()}.bind(this)),n.on("contextmenu",function(e){e.preventDefault()}.bind(this)),n},appendItemsContent:function(e,t){var n,i,o=this,r=this.model.get("itemTemplate");e.find(".pl-popup-button__item").each(function(e,a){i=$(a),n=r(void 0,{index:e,item:t[e]}),o.addChildElement(n),i.append(n.render())})},open:function(e){var t=this;$("body").append(this.$el);var n=this.$el.parent();this.$el.addClass("open"),n.addClass("open"),this.alignDropdown(e);var i=this.$el;new ActionOnLoseFocus(i,function(){t.close()})},close:function(){this.$el.removeClass("open"),this.$el.parent().removeClass("open"),this.$el.detach()},alignDropdown:function(e){var t=(this.model.get("horizontalAlignment"),this.$el.parent()),n={width:t.width(),height:t.height()},i={width:this.$el[0].children[0].clientWidth,height:this.$el[0].children[0].clientHeight};e.x+i.width>n.width&&(e.x-=i.width),e.y+i.height>n.height&&(e.y-=i.height),this.$el.offset({top:e.y,left:e.x})},updateGrouping:function(){},whenReady:function(e,t,n){var i=this;void 0===n&&(n=100),e()?t():n>0&&setTimeout(function(){i.whenReady(e,t,n-1)},10)}});_.inherit(DividerControl,Control),_.extend(DividerControl.prototype,{createControlModel:function(){return new DividerModel},createControlView:function(e){return new DividerView({model:e})}});var DividerModel=ControlModel.extend({initialize:function(){ControlModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),DividerView=ControlView.extend({tagName:"hr",className:"pl-divider",initialize:function(e){ControlView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this}}),ExtensionPanelControl=function(){_.superClass(ExtensionPanelControl,this)};_.inherit(ExtensionPanelControl,ContainerControl),_.extend(ExtensionPanelControl.prototype,{createControlModel:function(){return new ExtensionPanelModel},createControlView:function(e){return new ExtensionPanelView({model:e})}});var ExtensionPanelModel=ContainerModel.extend({defaults:_.defaults({extensionName:null,context:null},ContainerModel.prototype.defaults),initialize:function(){ContainerModel.prototype.initialize.apply(this)}}),ExtensionPanelView=ContainerView.extend({className:"pl-extension-panel",initialize:function(){ContainerView.prototype.initialize.apply(this),this.extensionObject=null},render:function(){return this.prerenderingActions(),this.extensionObject||this.initExtensionObject(),this.extensionObject.render(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},updateGrouping:function(){},initExtensionObject:function(){var e=this.model.get("extensionName"),t=this.model.get("context"),n=this.model.get("itemTemplate"),i=this.model.get("parameters"),o=this.model.get("items"),r=this.model.get("builder");this.extensionObject=new window[e](t,{$el:this.$el,parameters:i,itemTemplate:n,items:o,builder:r})}});_.inherit(FileBoxControl,Control),_.extend(FileBoxControl.prototype,{createControlModel:function(){return new FileBoxModel},createControlView:function(e){return new FileBoxView({model:e})}},editorBaseControlMixin);var FileBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel(),this.set("acceptTypes",new Collection),this.on("change:file",this.onChangeFileHandler),this.on("change:value",function(e,t){t instanceof File&&e.set("fileName",t.name)}),this.on("invalid",function(e,t){this.set("errorText",t)})},validate:function(e,t){var n=e.file,i=this.get("maxSize"),o=this.get("acceptTypes");if(n){if(i&&n.size>i)return localized.strings.FileBox.fileSizeTooBig.replace(/\{chosen-size\}/g,(n.size/1048576).toFixed(1)).replace(/\{permitted-size\}/g,(i/1048576).toFixed(1));if(o.length){var r=o.contains(n.type),a=n.name.toLowerCase();if(!r)var l=a.length,r=o.some(function(e){return a.lastIndexOf(e.toLowerCase())===l-e.length});if(!r)return localized.strings.FileBox.incorrectFormat}}},setFile:function(e){this.set("file",e,{validate:!0})&&this.set("errorText","")},removeFile:function(){this.setFile(null)},onChangeFileHandler:function(e,t){t?(e.set("fileName",t.name),e.set("fileSize",t.size)):(e.set("fileName",null),e.set("fileSize",null)),e.set("value",t)}},editorBaseModelMixin)),FileBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{template:InfinniUI.Template["controls/fileBox/template/template.tpl.html"],className:"pl-file-box",UI:_.extend({},editorBaseViewMixin.UI,{label:".pl-control-label",btnRemove:".pl-filebox-btn-remove",btnPick:".pl-filebox-btn-pick",fileEmpty:".pl-filebox-file-empty",fileUpload:".pl-filebox-file-upload",fileDownload:".pl-filebox-file-download",fileDownloadUrl:".pl-filebox-file-download-url",edit:".pl-filebox-edit",control:".form-control",input:"input"}),events:{"change input":"onChangeFileHandler","click .pl-filebox-btn-remove":"onClickRemoveImageHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:labelText",this.updateLabelText),this.listenTo(this.model,"change:fileName",this.updateFileName),this.listenTo(this.model,"change:fileSize",this.updateFileSize),this.listenTo(this.model,"change:fileTime",this.updateFileTime),this.listenTo(this.model,"change:fileType",this.updateFileType),this.listenTo(this.model,"change:value",this.updateValue),this.listenTo(this.model,"change:hintText",this.updateHintText),this.listenTo(this.model,"change:errorText",this.updateErrorText),this.listenTo(this.model,"change:warningText",this.updateWarningText),this.listenTo(this.model,"invalid",this.onInvalidHandler);var e=this.model.get("acceptTypes");e.onChange(this.updateAcceptTypes.bind(this))},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateLabelText(),this.updateFileName(),this.updateFileSize(),this.updateFileType(),this.updateFileTime(),this.updateAcceptTypes(),this.updateValue(),this.updateHintText(),this.updateErrorText(),this.updateWarningText()},updateLabelText:function(){var e=this.model.get("labelText");""!=e?this.ui.label.css({display:"inline-block"}).text(e):this.ui.label.css({display:"none"})},updateAcceptTypes:function(){var e=this.model.get("acceptTypes");if(0===e.length)this.ui.input.removeAttr("accept");else{var t=e.toArray().join(",");this.ui.input.attr("accept",t)}},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.control.attr("tabindex",0):this.ui.control.removeAttr("tabindex")},updateText:function(){var e=this.model.get("text");this.ui.btnPick.attr("title",e)},updateHintText:function(){var e=this.model.get("hintText");e?this.ui.hintText.text(e).removeClass("hidden"):this.ui.hintText.text("").addClass("hidden")},updateErrorText:function(){var e=this.model.get("errorText");e?this.ui.errorText.text(e).removeClass("hidden"):this.ui.errorText.text("").addClass("hidden")},updateWarningText:function(){var e=this.model.get("warningText");e?this.ui.warningText.text(e).removeClass("hidden"):this.ui.warningText.text("").addClass("hidden")},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e),this.ui.btnRemove.prop("disabled",!e),this.ui.btnPick.toggleClass("disabled",!e)},updateFileName:function(){var e=this.model.get("fileName");this.ui.fileUpload.text(e),this.ui.fileDownloadUrl.text(e)},updateFileSize:function(){},updateFileInfo:function(){return},updateFileTime:function(){this.model.get("fileTime")},updateFileType:function(){this.model.get("fileType")},updateValue:function(){var e=this.model,t=e.get("value"),n=!1,i=!1,o=!1;null===t||"undefined"==typeof t?(n=null===t||"undefined"==typeof t,this.ui.input.val(null),this.updateUrl(null)):t&&"object"==typeof t?(i=t&&"object"==typeof t,this.updateUrl(null)):(o=!0,this.updateUrl(t)),this.ui.fileEmpty.toggleClass("hidden",!n),this.ui.fileUpload.toggleClass("hidden",!i),this.ui.fileDownload.toggleClass("hidden",!o),this.ui.btnRemove.toggleClass("hidden",n),this.ui.btnPick.toggleClass("hidden",!n)},updateUrl:function(e){this.ui.fileDownloadUrl.attr("href",e);var t=null===e||"undefined"==typeof e;this.$el.toggleClass("pl-empty",t),this.updateFileInfo()},onClickRemoveImageHandler:function(){this.model.removeFile(),this.ui.input.val("")},onChangeFileHandler:function(){var e=null,t=this.ui.input[0].files;t&&t[0]&&(e=t[0]),this.model.setFile(e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},onInvalidHandler:function(){this.ui.input.val(null)}})),FrameControl=function(){_.superClass(FrameControl,this),this.initialize_editorBaseControl()};_.inherit(FrameControl,Control),_.extend(FrameControl.prototype,{createControlModel:function(){return new FrameModel},createControlView:function(e){return new FrameView({model:e})}},editorBaseControlMixin);var FrameModel=ControlModel.extend(_.extend({defaults:_.defaults({},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),FrameView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-frame",template:InfinniUI.Template["controls/frame/template/frame.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{iframe:"iframe"}),initialize:function(){ControlView.prototype.initialize.apply(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this); -},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this)},updateValue:function(){var e=this.model.get("value");this.ui.iframe.attr("src",e)},getData:function(){return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{})},render:function(){this.model;return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this}}));_.inherit(FormControl,StackPanelControl),_.extend(FormControl.prototype,{createControlModel:function(){return new FormModel},createControlView:function(e){return new FormView({model:e})},onSubmit:function(e){this.controlView.$el.on("submit",e)},setSubmitFunction:function(e){this.controlModel.set("submitFunction",e)},getSubmitFunction:function(){return this.controlModel.get("submitFunction")},setMethod:function(e){this.controlModel.set("method",e)},getMethod:function(){return this.controlModel.get("method")},setAction:function(e){this.controlModel.set("action",e)},getAction:function(){return this.controlModel.get("action")}});var FormModel=StackPanelModel.extend({defaults:_.defaults({submitFunction:null,method:"",action:""},StackPanelModel.prototype.defaults)}),FormView=StackPanelView.extend({className:"pl-form",tagName:"form",template:{plain:InfinniUI.Template["controls/form/template/form.tpl.html"]},events:{submit:"onSubmit"},onSubmit:function(e){e.preventDefault()},initialize:function(e){StackPanelView.prototype.initialize.call(this,e),this.listenTo(this.model,"change:method",this.updateMethod),this.listenTo(this.model,"change:action",this.updateAction)},updateGrouping:function(){this.strategy=new StackPanelViewPlainStrategy(this)},render:function(){this.prerenderingActions(),this.removeChildElements();var e=this.strategy.prepareItemsForRendering(),t=this.strategy.getTemplate();return this.$el.html(t(e)),this.strategy.appendItemsContent(e,".pl-form-i"),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},updateProperties:function(){StackPanelView.prototype.updateProperties.call(this),this.updateMethod(),this.updateAction()},updateMethod:function(){var e=this.model.get("method");this.$el.attr("method",e)},updateAction:function(){var e=this.model.get("action");this.$el.attr("action",e)}});_.inherit(GridPanelControl,ContainerControl),_.extend(GridPanelControl.prototype,{createControlModel:function(){return new GridPanelModel},createControlView:function(e){return new GridPanelView({model:e})}});var GridPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),GridPanelView=ContainerView.extend({className:"pl-grid-panel pl-clearfix",columnCount:12,template:{row:InfinniUI.Template["controls/gridPanel/template/row.tpl.html"]},initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this,o=[],r=0;t.forEach(function(t,a){e=n(void 0,{item:t,index:a});var l=e.getColumnSpan();r+l>i.columnCount&&(i.renderRow(o),o.length=0,r=0),o.push(e),r+=l}),o.length&&i.renderRow(o)},renderRow:function(e){var t=this,n=$(this.template.row());n.append(e.map(function(e){return t.addChildElement(e),e.render()})),this.$el.append(n)},updateGrouping:function(){}});_.inherit(IconControl,Control),_.extend(IconControl.prototype,{createControlModel:function(){return new IconModel},createControlView:function(e){return new IconView({model:e})}});var IconModel=ControlModel.extend({defaults:_.defaults({value:null,focusable:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments)}}),IconView=ControlView.extend({className:"pl-icon fa",tagName:"i",render:function(){return this.prerenderingActions(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderIcon:function(){var e=this.model.get("value");this.switchClass("fa",e)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:value",this.updateValue)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateValue()},updateFocusable:function(){var e=this.model.get("focusable");e?this.$el.attr("tabindex",0):this.$el.removeAttr("tabindex")},updateValue:function(){this.renderIcon()}});_.inherit(ImageBoxControl,Control),_.extend(ImageBoxControl.prototype,{createControlModel:function(){return new ImageBoxModel},createControlView:function(e){return new ImageBoxView({model:e})}},editorBaseControlMixin);var ImageBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({text:localized.strings.ImageBox.chooseImage},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel(),this.set("acceptTypes",new Collection),this.on("change:file",this.onChangeFileHandler),this.on("invalid",function(e,t){this.set("errorText",t)})},validate:function(e,t){var n=e.file,i=this.get("maxSize"),o=this.get("acceptTypes");if(n){if(i&&n.size>i)return localized.strings.ImageBox.imageSizeTooBig.replace(/\{chosen-size\}/g,(n.size/1048576).toFixed(1)).replace(/\{permitted-size\}/g,(i/1048576).toFixed(1));if(o.length&&!o.contains(n.type))return localized.strings.ImageBox.incorrectFormat}},setFile:function(e){this.set("file",e,{validate:!0})&&this.set("errorText","")},removeFile:function(){this.setFile(null)},onChangeFileHandler:function(e,t){}},editorBaseModelMixin)),ImageBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-imagebox",template:InfinniUI.Template["controls/imageBox/template/imageBox.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{input:"input",img:"img",file:".pl-image-file",remove:".pl-image-remove",uploadButton:".pl-image-file-upload-button"}),events:{"change input":"onChangeFileHandler","click .pl-image-remove":"onClickRemoveImageHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:value",this.updateValue),this.listenTo(this.model,"change:hintText",this.updateHintText),this.listenTo(this.model,"change:errorText",this.updateErrorText),this.listenTo(this.model,"change:warningText",this.updateWarningText)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateValue(),this.updateHintText(),this.updateErrorText(),this.updateWarningText()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.file.attr("tabindex",0):this.ui.file.removeAttr("tabindex")},updateText:function(){var e=this.model.get("text");this.ui.uploadButton.text(e)},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e)},updateValue:function(){var e=this.model,t=e.get("value");if(t&&"object"==typeof t){this.stopLoadingFile();var n=this.loadPreview(t);this.fileLoader=n,n.then(function(e,t){this.updateUrl(t)}.bind(this),function(e){console.log(e)})}else this.updateUrl(t)},updateUrl:function(e){this.ui.img.attr("src",e);var t=null===e||"undefined"==typeof e;this.$el.toggleClass("pl-empty",t)},stopLoadingFile:function(){var e=this.fileLoader;e&&"pending"===e.state()&&e.reject()},loadPreview:function(e){var t=$.Deferred(),n=new FileReader;return n.onload=function(e){return function(n){t.resolve(e,n.target.result)}}(e),n.onerror=function(e){t.reject(e)},n.readAsDataURL(e),t.promise()},onClickRemoveImageHandler:function(){this.model.removeFile(),this.ui.input.val("")},onChangeFileHandler:function(){var e=null,t=this.ui.input[0].files;t&&t[0]&&(e=t[0]),this.model.setFile(e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this}}));_.inherit(IndeterminateCheckBoxControl,CheckBoxControl),_.extend(IndeterminateCheckBoxControl.prototype,{createControlModel:function(){return new IndeterminateCheckBoxModel},createControlView:function(e){return new IndeterminateCheckBoxView({model:e})}},editorBaseControlMixin);var IndeterminateCheckBoxModel=CheckBoxModel.extend({defaults:_.defaults({value:"unchecked"},CheckBoxModel.prototype.defaults)}),IndeterminateCheckBoxView=CheckBoxView.extend({className:"pl-indeterminate-checkbox",onClickHandler:function(){var e=this.model,t=e.get("enabled");if(t){var n=e.get("value");n="indeterminate"===n?"unchecked":"unchecked"===n?"checked":"unchecked",e.set("value",n)}},updateValue:function(){var e=this.model.get("value");"checked"===e?(this.ui.input.prop("indeterminate",!1),this.ui.input.prop("checked",!0)):"unchecked"===e?(this.ui.input.prop("indeterminate",!1),this.ui.input.prop("checked",!1)):"indeterminate"===e&&(this.ui.input.prop("checked",!1),this.ui.input.prop("indeterminate",!0))}});_.inherit(LinkElementControl,ButtonControl),_.extend(LinkElementControl.prototype,{createControlModel:function(){return new LinkElementModel},createControlView:function(e){return new LinkElementView({model:e})}});var LinkElementModel=ButtonModel.extend({defaults:_.defaults({href:"javascript:;",target:"self"},ButtonModel.prototype.defaults),initialize:function(){ButtonModel.prototype.initialize.apply(this,arguments)}}),LinkElementView=CommonButtonView.extend({tagName:"a",className:"pl-link",events:{click:"onClickHandler"},template:function(){return""},updateProperties:function(){CommonButtonView.prototype.updateProperties.call(this),this.updateHref(),this.updateTarget()},getButtonElement:function(){return this.$el},initHandlersForProperties:function(){CommonButtonView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:href",this.updateHref),this.listenTo(this.model,"change:target",this.updateTarget)},updateHref:function(){var e=this.model.get("href"),t=this.getButtonElement();t.attr("href",e)},updateTarget:function(){var e=this.model.get("target"),t=this.getButtonElement();t.attr("target","_"+e)},onClickHandler:function(e){var t=this.model.get("href");-1===t.indexOf("http://")&&(InfinniUI.AppRouter.navigate(t,{trigger:!0}),2!==e.which&&e.preventDefault())}});_.inherit(MenuBarControl,ContainerControl),_.extend(MenuBarControl.prototype,{createControlModel:function(){return new MenuBarModel},createControlView:function(e){return new MenuBarView({model:e})}});var MenuBarModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),MenuBarView=ContainerView.extend({tagName:"nav",className:"pl-menu-bar navbar navbar-default",template:InfinniUI.Template["controls/menuBar/template/menuBar.tpl.html"],UI:{},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.renderItemsContents(),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-menu-bar-item"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateGrouping:function(){}});!function(){var e=InfinniUI.Template["controls/loaderIndicator/template.tpl.html"];InfinniUI.loaderIndicator={show:function(){$.blockUI({message:$(e()),ignoreIfBlocked:!0,baseZ:99999})},hide:function(){$.unblockUI()}},InfinniUI.config.useLoaderIndicator&&jQuery(function(){var t=$(e());$("body").append(t),$.blockUI.defaults.css={},$(document).ajaxStart(function(){$.blockUI({message:t,ignoreIfBlocked:!0,baseZ:99999})}).ajaxStop(function(){$.unblockUI()}).ajaxError(function(){$.unblockUI()})})}(),_.inherit(NumericBoxControl,TextEditorBaseControl),_.extend(NumericBoxControl.prototype,{createControlModel:function(){return new NumericBoxModel},createControlView:function(e){return new NumericBoxView({model:e})}});var NumericBoxModel=TextEditorBaseModel.extend({defaults:_.defaults({increment:1,inputType:"number"},TextEditorBaseModel.prototype.defaults),incValue:function(){var e=this.get("increment");this.addToValue(e)},decValue:function(){var e=this.get("increment");this.addToValue(-e)},addToValue:function(e){var t=this.get("value"),n=this.get("startValue"),i=this.get("minValue"),o=this.get("maxValue"),r=_.isNumber(t)?t:+t;this.isSetValue(t)&&_.isNumber(t)?r+=e:r=_.isNumber(n)?n:0,_.isNumber(i)&&i>r?r=i:_.isNumber(o)&&r>o&&(r=o),this.set("value",r)},initialize:function(){TextEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},validateValue:function(e,t){var n=!0,i=this.get("minValue"),o=this.get("maxValue");return this.isSetValue(e)?(_.isNumber(i)&&_.isNumber(o)?(i>e||e>o)&&(n=!1):_.isNumber(i)&&i>e?n=!1:_.isNumber(o)&&e>o&&(n=!1),n):!0}}),NumericBoxView=TextEditorBaseView.extend({className:"pl-numericbox form-group",template:InfinniUI.Template["controls/numericBox/template/numericBox.tpl.html"],UI:_.extend({},TextEditorBaseView.prototype.UI,{min:".pl-numeric-box-min",max:".pl-numeric-box-max"}),events:_.extend({},TextEditorBaseView.prototype.events,{"click .pl-numeric-box-min":"onClickMinControlHandler","click .pl-numeric-box-max":"onClickMaxControlHandler","mousedown .pl-numeric-box-min":"onMousedownMinControlHandler","mousedown .pl-numeric-box-max":"onMousedownMaxControlHandler"}),render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.renderNumericBoxEditor(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=this.model;return _.extend({},TextEditorBaseView.prototype.getData.call(this),{minValue:e.get("minValue"),maxValue:e.get("maxValue"),increment:e.get("increment")})},renderNumericBoxEditor:function(){this.renderControlEditor()},onChangeEnabledHandler:function(e,t){this.ui.control.prop("disabled",!t),this.ui.min.prop("disabled",!t),this.ui.max.prop("disabled",!t)},onClickMinControlHandler:function(){this.canChangeValue()&&this.model.decValue()},onClickMaxControlHandler:function(){this.canChangeValue()&&this.model.incValue()},onMousedownMinControlHandler:function(e){this.canChangeValue()&&this.repeatUpdateValue(this.model.decValue.bind(this.model))},onMousedownMaxControlHandler:function(e){this.canChangeValue()&&this.repeatUpdateValue(this.model.incValue.bind(this.model))},repeatUpdateValue:function(e){function t(){n&&(clearInterval(n),n=null),window.document.removeEventListener("mouseup",t)}var n;window.document.addEventListener("mouseup",t),n=setInterval(e,200)},canChangeValue:function(){var e=this.model,t=e.get("enabled");return t===!0}});_.inherit(PanelControl,ContainerControl),_.extend(PanelControl.prototype,{createControlModel:function(){return new PanelModel},createControlView:function(e){return new PanelView({model:e})}});var PanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.on("change:collapsed",function(e,t){e.trigger(t?"collapsed":"expanded",null,{})})},defaults:_.defaults({collapsible:!1,collapsed:!1,collapsibleArea:""},ContainerModel.prototype.defaults),set:function(e,t,n){if(null==e)return this;var i;"object"==typeof e?(i=e,n=t):(i={})[e]=t;var o,r;if("collapsed"in i){o=this.get("collapsed"),r=i.collapsed;var a;r&&!o?a=this.set("_collapsing",!0,{validate:!1}).trigger("collapsing",null,{}).get("_collapsing"):!r&&o&&(a=this.set("_expanding",!0,{validate:!1}).trigger("expanding",null,{}).get("_expanding")),a===!1&&delete i.collapsed}return ContainerModel.prototype.set.call(this,i,n)},on:function(e,t,n){var i,o=this;switch(e){case"collapsing":i=function(){var e=t(null,{});e===!1&&o.set("_collapsing",!1)};break;case"expanding":i=function(){var e=t(null,{});e===!1&&o.set("_expanding",!1)};break;default:i=t}ContainerModel.prototype.on.call(this,e,i,n)}}),PanelView=ContainerView.extend({className:"pl-panel panel panel-default",template:InfinniUI.Template["controls/panel/template/panel.tpl.html"],UI:{header:".pl-panel-header",items:".panel-items"},events:{"click >.pl-panel-header":"onClickHeaderHandler"},initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.bindUIElements(),this.renderItemsContents(),this.trigger("render"),this.updateProperties(),this.postrenderingActions(),this},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:collapsed",this.updateCollapsed),this.listenTo(this.model,"change:collapsible",this.updateCollapsible),this.listenTo(this.model,"change:header",this.updateHeader)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateCollapsed(),this.updateCollapsible(),this.updateHeader()},updateCollapsed:function(){this.ui.header.toggleClass("pl-collapsed",this.model.get("collapsed"))},updateCollapsible:function(e,t){this.ui.header.toggleClass("pl-collapsible",this.model.get("collapsible"))},updateHeader:function(){var e=this.model;this.ui.header.empty();var t=e.get("headerTemplate");if("function"==typeof t){var n=e.get("header"),i=t(null,{value:n}).render();this.isDefaultHeader(i)?this.ui.header.hide():(this.ui.header.show(),this.ui.header.append(i))}},isDefaultHeader:function(e){var t=InfinniUI.PanelBuilder.prototype.buildDefaultHeaderTemplate()(null,{value:null}),n=t.render();return n[0].isEqualNode(e[0])},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-panel-i"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateGrouping:function(){},onEventCallback:function(){var e=this.model.get("collapsible");if(e){var t=this.model.get("collapsed");this.model.set("collapsed",!t),this.updateLayout()}},onClickHeaderHandler:function(e){var t=this.model.get("collapsibleArea");""!==t?$(e.target).closest("[data-pl-name="+t+"]").length&&this.onEventCallback():this.onEventCallback()}}),PasswordBoxControl=function(){_.superClass(PasswordBoxControl,this),this.initialize_editorBaseControl()};_.inherit(PasswordBoxControl,Control),_.extend(PasswordBoxControl.prototype,{createControlModel:function(){return new PasswordBoxModel},createControlView:function(e){return new PasswordBoxView({model:e})}},editorBaseControlMixin);var PasswordBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({autocomplete:!0},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),PasswordBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-password-box form-group",template:{autocomplete:InfinniUI.Template["controls/passwordBox/template/passwordBox.on.tpl.html"],noautocomplete:InfinniUI.Template["controls/passwordBox/template/passwordBox.off.tpl.html"]},UI:_.extend({},editorBaseViewMixin.UI,{label:".pl-control-label",input:".pl-control"}),events:{"blur .pl-control":"onBlurHandler","input .pl-control":"onInputHandler","change .pl-control":"onChangeHandler"},initialize:function(){ControlView.prototype.initialize.apply(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:labelText",this.updateLabelText),this.listenTo(this.model,"change:labelFloating",this.updateLabelFloating),this.listenTo(this.model,"change:autocomplete",this.updateAutocomplete)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateLabelText()},updateLabelText:function(){var e=this.model.get("labelText");this.ui.label.text(e)},updateAutocomplete:function(){this.rerender()},updateValue:function(){editorBaseViewMixin.updateValueState.call(this);var e=this.model.get("value");this.ui.input.val(e)},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e)},getData:function(){return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this))},render:function(){this.model;return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},remove:function(){ControlView.prototype.remove.call(this)},getTemplate:function(){var e=this.model;return e.get("autocomplete")?this.template.autocomplete:this.template.noautocomplete},updateModelValue:function(){var e=this.ui.input.val(),t=this.model;t.set("value",e),t.set("rawValue",e)},onBlurHandler:function(){this.updateModelValue()},onChangeHandler:function(){this.updateModelValue()},onInputHandler:function(){this.updateModelValue()}}));_.inherit(ScrollPanelControl,ContainerControl),_.extend(ScrollPanelControl.prototype,{createControlModel:function(){return new ScrollPanelModel},createControlView:function(e){return new ScrollPanelView({model:e})}});var ScrollPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},defaults:_.defaults({verticalAlignment:"Stretch",horizontalScroll:InfinniUI.ScrollVisibility.auto,verticalScroll:InfinniUI.ScrollVisibility.auto},ContainerModel.prototype.defaults)}),ScrollPanelView=ContainerView.extend({className:"pl-scrollpanel panel panel-default",template:InfinniUI.Template["controls/scrollPanel/template/scrollPanel.tpl.html"],UI:{},initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.renderItemsContents(),this.bindUIElements(),this.postrenderingActions(),this.trigger("render"),this.updateProperties(),function(e){setTimeout(function(){e.scrollTop(0)},0)}(this.$el),this},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:horizontalScroll",this.updateHorizontalScroll),this.listenTo(this.model,"change:verticalScroll",this.updateVerticalScroll)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateHorizontalScroll(),this.updateVerticalScroll()},updateHorizontalScroll:function(){var e="";switch(this.model.get("horizontalScroll")){case InfinniUI.ScrollVisibility.visible:e="visible";break;case InfinniUI.ScrollVisibility.hidden:e="hidden";break;case InfinniUI.ScrollVisibility.auto:default:e="auto"}this.switchClass("pl-horizontal-scroll",e,this.$el)},updateVerticalScroll:function(e,t){var n="";switch(this.model.get("verticalScroll")){case InfinniUI.ScrollVisibility.visible:n="visible";break;case InfinniUI.ScrollVisibility.hidden:n="hidden";break;case InfinniUI.ScrollVisibility.auto:default:n="auto"}this.switchClass("pl-vertical-scroll",n,this.$el)},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-scrollpanel-i"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateGrouping:function(){}});_.inherit(ToggleButtonControl,Control),_.extend(ToggleButtonControl.prototype,{createControlModel:function(){return new ToggleButtonModel},createControlView:function(e){return new ToggleButtonView({model:e})}},editorBaseControlMixin);var ToggleButtonModel=ControlModel.extend(_.extend({defaults:_.defaults({value:!1,textOn:"ON",textOff:"OFF",horizontalAlignment:"Left"},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),ToggleButtonView=ControlView.extend(_.extend({},editorBaseViewMixin,{template:InfinniUI.Template["controls/toggleButton/template/toggleButton.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{textOn:".togglebutton-handle-on",textOff:".togglebutton-handle-off",container:".togglebutton-container"}),events:{"click .togglebutton-box":"onClickHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:textOn",this.updateTextOn),this.listenTo(this.model,"change:textOff",this.updateTextOff)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateTextOn(),this.updateTextOff()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.container.attr("tabindex",0):this.ui.container.removeAttr("tabindex")},updateTextOn:function(){var e=this.model.get("textOn");this.ui.textOn.html(e||" ")},updateTextOff:function(){var e=this.model.get("textOff");this.ui.textOff.html(e||" ")},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=this.model;return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{textOn:e.get("textOn"),textOff:e.get("textOff")})},onClickHandler:function(e){var t=this.model;t.set("value",!t.get("value"))},updateValue:function(){var e=this.model.get("value");this.switchClass("toggle",e?"on":"off",this.$el)}}));_.inherit(ToolBarControl,ContainerControl),_.extend(ToolBarControl.prototype,{createControlModel:function(){return new ToolBarModel},createControlView:function(e){return new ToolBarView({model:e})}});var ToolBarModel=ContainerModel.extend({}),ToolBarView=ContainerView.extend({className:"pl-tool-bar",template:InfinniUI.Template["controls/toolBar/template/toolBar.tpl.html"],itemTemplate:InfinniUI.Template["controls/toolBar/template/toolBarItem.tpl.html"],UI:{container:".pl-tool-bar__container"},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.ui.container.append(this.renderItems()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItems:function(){var e=this.model,t=e.get("items"),n=e.get("itemTemplate");this.removeChildElements();var i=[];return t.forEach(function(e,t){var o=this.itemTemplate(),r=$(o),a=n(null,{index:t,item:e});this.addChildElement(a),r.append(a.render()),i.push(r)},this),i},updateGrouping:function(){}}),ViewPanelControl=function(){_.superClass(ViewPanelControl,this)};_.inherit(ViewPanelControl,Control),ViewPanelControl.prototype.createControlModel=function(){return new ViewPanelModel},ViewPanelControl.prototype.createControlView=function(e){return new ViewPanelView({model:e})};var ViewPanelModel=ControlModel.extend({defaults:_.defaults({layout:null},ControlModel.prototype.defaults),initialize:function(){var e=this;ControlModel.prototype.initialize.apply(this),this.once("change:layout",function(t,n){n&&n.onLoaded&&e.subscribeOnLoaded()})},subscribeOnLoaded:function(){var e=this,t=this.get("layout");t.onLoaded(function(){e.set("isLoaded",!0)})}}),ViewPanelView=ControlView.extend({className:"pl-view-panel",initialize:function(){ControlView.prototype.initialize.apply(this),this.listenTo(this.model,"change:layout",this.onChangeLayoutHandler)},onChangeLayoutHandler:function(e,t){this.$el.empty(),t&&this.$el.append(t.render())},render:function(){this.prerenderingActions();var e=this.model.get("layout");return e&&this.$el.append(e.render()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(!1),this}});_.inherit(ViewControl,ContainerControl),_.extend(ViewControl.prototype,{createControlModel:function(){return new ViewModel},createControlView:function(e){return new ViewView({model:e})}});var DialogResult={none:0,accepted:1,canceled:2};window.InfinniUI.DialogResult=DialogResult;var ViewModel=ContainerModel.extend({defaults:_.defaults({dialogResult:DialogResult.none,isApplication:!1,closeButtonVisibility:!0},ContainerModel.prototype.defaults),initialize:function(){ContainerModel.prototype.initialize.apply(this),this.set("scripts",new Collection([],"name")),this.set("parameters",new Collection([],"name")),this.set("dataSources",new Collection([],"name"))}}),ViewView=ContainerView.extend({className:"pl-view",initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.$el.empty(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this,n=this.model.get("items"),i=this.model.get("itemTemplate");n.forEach(function(n,o){e=i(void 0,{item:n,index:o}),e&&t.$el.append(e.render())})},updateGrouping:function(){}}),DataSourceValidationNotifierMixin={initNotifyValidation:function(e){e.onErrorValidator(this.notifyOnValidationError.bind(this))},notifyOnValidationError:function(e,t){var n=t.value;"undefined"!=typeof n&&null!==n&&!n.IsValid&&Array.isArray(n.Items)&&n.Items.forEach(function(e){var t=window.InfinniUI.global.messageBus;t.send(messageTypes.onNotifyUser,{item:e,messageText:e.Message,messageType:"error"})})}},BaseDataSource=Backbone.Model.extend({defaults:{name:null,idProperty:"_id",identifyingMode:"byId",view:null,isDataReady:!1,dataProvider:null,model:null,modifiedItems:{},itemsById:{},fillCreatedItem:!0,suspendingList:null,waitingOnUpdateItemsHandlers:null,errorValidator:null,isRequestInProcess:!1,isLazy:!0,isWaiting:!1,resolvePriority:0,newItemsHandler:null,isNumRegEx:/^\d/},initialize:function(){var e=this.get("view"),t={items:null,selectedItem:null};if(this.initDataProvider(),!e)throw"BaseDataSource.initialize: При создании объекта не была задана view.";this.set("suspendingList",[]),this.set("waitingOnUpdateItemsHandlers",[]),this.set("model",new TreeModel(e.getContext(),this,t)),_.extend(this,BaseDataSource.identifyingStrategy.byId)},initDataProvider:function(){throw"BaseDataSource.initDataProvider В потомке BaseDataSource не задан провайдер данных."},onPropertyChanged:function(e,t,n){"function"==typeof e&&(n=t,t=e,e="*"),e="."==e.charAt(0)?e.substr(1):""==e?"items":"items."+e,this.get("model").onPropertyChanged(e,function(e,n){var i=n.property;i="items."==i.substr(0,6)?i.substr(6):"items"==i?"":"."+i,n.property=i,t(e,n)},n)},onSelectedItemChanged:function(e,t){var n=this;this.get("model").onPropertyChanged("selectedItem",function(t,i){var o=n._getArgumentTemplate();o.value=i.newValue,e(t,o)},t)},onErrorValidator:function(e){this.on("onErrorValidator",e)},onItemSaved:function(e){this.on("onItemSaved",e)},onItemCreated:function(e){this.on("onItemCreated",e)},onItemsUpdated:function(e){this.on("onItemsUpdated",e)},onItemsUpdatedOnce:function(e){this.once("onItemsUpdated",e)},onItemDeleted:function(e){this.on("onItemDeleted",e)},onProviderError:function(e){this.on("onProviderError",e)},getName:function(){return this.get("name")},setName:function(e){this.set("name",e),this.name=e},getView:function(){return this.get("view")},getProperty:function(e){var t,n=e.charAt(0);if(this.get("isNumRegEx").test(n))e="items."+e;else if(""==n)e="items";else if("$"==n){if(t=this._indexOfSelectedItem(),-1==t)return;e="items."+t+e.substr(1)}else if("."==n)e=e.substr(1);else{if(t=this._indexOfSelectedItem(),-1==t)return;e="items."+t+"."+e}return this.get("model").getProperty(e); -},setProperty:function(e,t){var n,i,o,r=e.split(".");if("$"==r[0]){if(i=this._indexOfSelectedItem(),-1==i)return;e=i+e.substr(1),r[0]=i.toString()}if(n=e.charAt(0),1==r.length)if(""==r[0])this._setItems(t);else if(this.get("isNumRegEx").test(r[0]))this._changeItem(r[0],t);else{if(i=this._indexOfSelectedItem(),-1==i)return;e="items."+i+"."+e,o=this.get("model").setProperty(e,t),o&&this._includeItemToModifiedSetByIndex(i)}else if("."==n)e=e.substr(1),this.get("model").setProperty(e,t);else if(this.get("isNumRegEx").test(n))e="items."+e,o=this.get("model").setProperty(e,t),o&&this._includeItemToModifiedSetByIndex(parseInt(r[0]));else{if(i=this._indexOfSelectedItem(),-1==i)return;e="items."+i+"."+e,o=this.get("model").setProperty(e,t),o&&this._includeItemToModifiedSetByIndex(i)}},_setItems:function(e){this._detectIdentifyingMode(e);var t;this.set("isDataReady",!0),this.get("model").setProperty("items",e),this._clearModifiedSet(),e&&e.length>0?(t=this._indexItemsById(e),this.set("itemsById",t),this._restoreSelectedItem()||this.setSelectedItem(e[0])):this.setSelectedItem(null)},_restoreSelectedItem:function(){var e=window.InfinniUI.global.logger;e.warn({message:"BaseDataSource._restoreSelectedItem: not overrided by strategy",source:this})},getSelectedItem:function(){return this.get("model").getProperty("selectedItem")},setSelectedItem:function(e,t,n){var i=window.InfinniUI.global.logger;i.warn({message:"BaseDataSource.setSelectedItem: not overrided by strategy",source:this})},_notifyAboutSelectedItem:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,t&&t(n,i)},_tuneMirroringOfModel:function(e){-1!=e?this.get("model").setMirroring("items.$","items."+e):this.get("model").setMirroring(null,null)},getIdProperty:function(){return this.get("idProperty")},setIdProperty:function(e){this.set("idProperty",e)},getFillCreatedItem:function(){return this.get("fillCreatedItem")},setFillCreatedItem:function(e){this.set("fillCreatedItem",e)},suspendUpdate:function(e){var t=e||"default",n=this.get("suspendingList");-1===n.indexOf(t)&&(n=n.slice(0),n.push(t),this.set("suspendingList",n))},resumeUpdate:function(e){var t=e||"default",n=this.get("suspendingList"),i=n.indexOf(t);-1!==i&&(n=n.slice(0),n.splice(i,1),this.set("suspendingList",n),!this.isUpdateSuspended()&&this.get("waitingOnUpdateItemsHandlers").length>0&&this.updateItems())},isUpdateSuspended:function(){var e=this.get("suspendingList");return e.length>0},isModifiedItems:function(){return this.isModified()},isModified:function(e){if(0==arguments.length)return _.size(this.get("modifiedItems"))>0;if(null===e||void 0===e)return!1;var t=this.idOfItem(e);return t in this.get("modifiedItems")},_includeItemToModifiedSetByIndex:function(e){var t;t=this.getItems()[e],this._includeItemToModifiedSet(t)},_includeItemToModifiedSet:function(e){var t=window.InfinniUI.global.logger;t.warn({message:"BaseDataSource._includeItemToModifiedSet: not overrided by strategy",source:this})},_excludeItemFromModifiedSet:function(e){var t=window.InfinniUI.global.logger;t.warn({message:"BaseDataSource._excludeItemFromModifiedSet: not overrided by strategy",source:this})},_clearModifiedSet:function(){this.set("modifiedItems",{})},_checkPropertyName:function(e){var t=!0;try{if(e&&e.length>0&&(t=e.match(/^[\$#@\d]+/)),!t)throw new Error('Wrong property name "'+e+'"')}catch(n){console.debug(n)}},_changeItem:function(e,t){var n=this.get("model").getProperty("items."+e),i=n==this.getSelectedItem(),o=this.get("idProperty"),r=this.get("itemsById");t!=n&&(this._excludeItemFromModifiedSet(n),delete r[n[o]],this.get("model").setProperty("items."+e,t),this._includeItemToModifiedSet(t),r[t[o]]=t,this.set("itemsById",r),i&&this.get("model").setProperty("selectedItem",t))},tryInitData:function(){this.get("isDataReady")||this.get("isRequestInProcess")||this.updateItems()},saveItem:function(e,t,n){var i,o=this.get("dataProvider"),r=(window.InfinniUI.global.logger,this),a=this._compensateOnErrorOfProviderHandler(n);return this.isModified(e)?(i=this.validateOnErrors(e),i.IsValid?void o.saveItem(e,function(i){if("IsValid"in i&&i.IsValid!==!0){var o=r._getValidationResult(i);r._notifyAboutValidation(o,"error"),r._executeCallback(n,{item:e,result:o})}else r._excludeItemFromModifiedSet(e),r._notifyAboutItemSaved({item:e,result:i.data},"modified"),r._executeCallback(t,{item:e,result:r._getValidationResult(i)})},function(t){var n=r._getValidationResult(t);r._notifyAboutValidation(n,"error"),r._executeCallback(a,{item:e,result:n})}):void this._executeCallback(n,{item:e,result:i})):(this._notifyAboutItemSaved({item:e,result:null},"notModified"),void r._executeCallback(t,{item:e,result:{IsValid:!0}}))},_getValidationResult:function(e){return e.data&&e.data.responseJSON&&e.data.responseJSON.Result?e.data.responseJSON.Result.ValidationResult:e.data&&e.data.Result&&e.data.Result.ValidationResult},_executeCallback:function(e,t){e&&e(this.getContext(),t)},_notifyAboutItemSaved:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,i.result=t,this.trigger("onItemSaved",n,i)},deleteItem:function(e,t,n){var i=this.get("dataProvider"),o=this,r=this.idOfItem(e),a=void 0!==this.get("itemsById")[r],l=this._compensateOnErrorOfProviderHandler(n);return null==e||void 0!==r&&!a?void this._notifyAboutMissingDeletedItem(e,n):(this.beforeDeleteItem(e),void i.deleteItem(e,function(i){if("IsValid"in i&&i.IsValid!==!0){var r=o._getValidationResult(i);o._notifyAboutValidation(r,"error"),o._executeCallback(n,{item:e,result:r})}else o._handleDeletedItem(e,t)},function(t){var n=o._getValidationResult(t);o._notifyAboutValidation(n,"error"),o._executeCallback(l,{item:e,result:n})}))},beforeDeleteItem:function(e){},_handleDeletedItem:function(e,t){var n=window.InfinniUI.global.logger;n.warn({message:"BaseDataSource._handleDeletedItem: not overrided by strategy",source:this})},_notifyAboutItemDeleted:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,t&&t(n,i),this.trigger("onItemDeleted",n,i)},_notifyAboutMissingDeletedItem:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,i.error={message:"Нельзя удалить элемент, которого нет текущем наборе источника данных"},t&&t(n,i)},isDataReady:function(){return this.get("isDataReady")},getItems:function(){var e=window.InfinniUI.global.logger;return this.isDataReady()||e.warn({message:"BaseDataSource: Попытка получить данные источника данных ("+this.get("name")+"), до того как он был проинициализирован данными",source:this}),this.get("model").getProperty("items")},updateItems:function(e,t){if(this.isUpdateSuspended()){var n=this.get("waitingOnUpdateItemsHandlers");n.push({onSuccess:e,onError:t})}else{var i=this.get("dataProvider"),o=this;this.set("isRequestInProcess",!0),i.getItems(function(t){o._handleSuccessUpdateItemsInProvider(t,e)},function(e){o._onErrorProviderUpdateItemsHandle(e,t)})}},_handleSuccessUpdateItemsInProvider:function(e,t){var n=this,i=n.get("isWaiting"),o=function(){n.set("isRequestInProcess",!1),n._handleUpdatedItemsData(e.data,t)};i?n.once("change:isWaiting",function(){o()}):o()},_onErrorProviderUpdateItemsHandle:function(e,t){var n=this.get("waitingOnUpdateItemsHandlers"),i=this.getContext();if(0==n.length&&!_.isFunction(t))return void this._compensateOnErrorOfProviderHandler(e);for(var o=0,r=n.length;r>o;o++)n[o].onError&&n[o].onError(i,e);this.set("waitingOnUpdateItemsHandlers",[]),_.isFunction(t)&&t(i,e)},_compensateOnErrorOfProviderHandler:function(){this.trigger("onProviderError",arguments)},setIsWaiting:function(e){this.set("isWaiting",e)},_handleUpdatedItemsData:function(e,t){this.get("newItemsHandler")&&(e=this.get("newItemsHandler")(e)),this.setProperty("",e),this._notifyAboutItemsUpdated(e,t)},_notifyAboutItemsUpdated:function(e,t){for(var n=this.getContext(),i={value:e,source:this},o=this.get("waitingOnUpdateItemsHandlers"),r=0,a=o.length;a>r;r++)o[r].onSuccess&&o[r].onSuccess(n,i);this.set("waitingOnUpdateItemsHandlers",[]),t&&t(n,i),this.trigger("onItemsUpdated",n,i)},_notifyAboutItemsUpdatedAsPropertyChanged:function(e){var t=this.getContext(),n=this._getArgumentTemplate();n.property="",n.newValue=e,n.oldValue=null,this.trigger("onPropertyChanged",t,n),this.trigger("onPropertyChanged:",t,n)},createItem:function(e,t){var n,i=this.get("dataProvider"),o=this.get("idProperty"),r=this;this.get("fillCreatedItem")?i.createItem(function(t){r._handleDataForCreatingItem(t,e)},o):(n=i.createLocalItem(o),this._handleDataForCreatingItem(n,e))},_handleDataForCreatingItem:function(e,t){var n=this.getItems();n?(n=n.slice(),n.push(e)):n=[e],this.setProperty("",n),this._includeItemToModifiedSet(e),this.setSelectedItem(e),this._notifyAboutItemCreated(e,t)},_notifyAboutItemCreated:function(e,t){var n=this.getContext(),i={value:e};t&&t(n,i),this.trigger("onItemCreated",n,i)},getFilter:function(){},setFilter:function(e,t,n){},_setCriteriaList:function(e,t,n){this.set("criteriaList",e),this.updateItems(t,n)},setIdFilter:function(e){var t=this.get("dataProvider"),n=t.createIdFilter(e);this.setFilter(n)},setNewItemsHandler:function(e){this.set("newItemsHandler",e)},getErrorValidator:function(){return this.get("errorValidator")},setErrorValidator:function(e){this.set("errorValidator",e)},validateOnErrors:function(e,t){var n,i,o=this.get("errorValidator"),r={IsValid:!0,Items:[]},a=!!e,l=this.getContext();if(o)if(a)r=o(l,e);else{n=this.getItems();for(var s=0,u=n.length;u>s;s++)i=o(l,n[s]),i.IsValid||(this._addIndexToPropertiesOfValidationMessage(i.Items,s),r.IsValid=!1,r.Items=_.union(r.Items,i.Items))}return this._notifyAboutValidation(r,"error"),this._executeCallback(t,{item:e,result:r}),r},setFileProvider:function(e){this.set("fileProvider",e)},getFileProvider:function(){return this.get("fileProvider")},_addIndexToPropertiesOfValidationMessage:function(e,t){for(var n=0,i=e.length;i>n;n++)e[n].property=t+"."+e[n].property},_notifyAboutValidation:function(e,t){if(e){var n=this.getContext(),i={value:e};this.trigger("onErrorValidator",n,i)}},getContext:function(){return this.getView().getContext()},_indexItemsById:function(e){for(var t,n=this.get("idProperty"),i={},o=0,r=e.length;r>o;o++)t=e[o][n],i[t]=e[o];return i},_indexOfItem:function(e){var t=this.getItems();return t?t.indexOf(e):-1},_indexOfSelectedItem:function(){var e=this.getSelectedItem();return this._indexOfItem(e)},idOfItem:function(e){var t=this.get("idProperty");if(e)return e[t]},getCurrentRequestPromise:function(){var e=$.Deferred(),t=window.InfinniUI.global.logger;return this.get("isRequestInProcess")?this.onItemsUpdatedOnce(function(){this.isDataReady()?e.resolve():t.warn({message:"BaseDataSource: strange, expected other dataReady status",source:this})}):e.resolve(),e},getNearestRequestPromise:function(){var e=$.Deferred();return this.onItemsUpdatedOnce(function(){this.isDataReady()?e.resolve():logger.warn({message:"BaseDataSource: strange, expected other dataReady status",source:this})}),e},setIsLazy:function(e){this.set("isLazy",e)},isLazy:function(){return this.get("isLazy")},setResolvePriority:function(e){this.set("resolvePriority",e)},getResolvePriority:function(){return this.get("resolvePriority")},_copyObject:function(e){return JSON.parse(JSON.stringify(e))},_getArgumentTemplate:function(){return{source:this}},_detectIdentifyingMode:function(e){$.isArray(e)&&e.length>0?!$.isPlainObject(e[0])||this.getIdProperty()in e[0]?(this.set("identifyingMode","byId"),_.extend(this,BaseDataSource.identifyingStrategy.byId)):(this.set("identifyingMode","byLink"),_.extend(this,BaseDataSource.identifyingStrategy.byLink)):(this.set("identifyingMode","byId"),_.extend(this,BaseDataSource.identifyingStrategy.byId))},_getIdentifyingMode:function(){return this.get("identifyingMode")}});BaseDataSource.identifyingStrategy={byId:{_restoreSelectedItem:function(){var e=this.getSelectedItem(),t=this.idOfItem(e);if(null!=t){var n=this.get("itemsById"),i=n[t];if(null!=i)return this.setSelectedItem(i),!0}return!1},setSelectedItem:function(e,t,n){var i,o=this.getSelectedItem(),r=this.get("itemsById"),a=this.idOfItem(e);if("undefined"==typeof e&&(e=null),e!=o){if(null!==e&&!r[a]){if(n)return void n(this.getContext(),{error:"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."});throw"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."}this.get("model").setProperty("selectedItem",e),i=this._indexOfItem(r[a]),this._tuneMirroringOfModel(i),this._notifyAboutSelectedItem(e,t)}},_includeItemToModifiedSet:function(e){var t=this.idOfItem(e);this.get("modifiedItems")[t]=e},_excludeItemFromModifiedSet:function(e){var t=this.idOfItem(e);delete this.get("modifiedItems")[t]},_handleDeletedItem:function(e,t){for(var n=this.getItems(),i=this.get("idProperty"),o=this.idOfItem(e),r=this.getSelectedItem(),a=0,l=n.length,s=!1;l>a&&!s;a++)n[a][i]==o&&(n.splice(a,1),s=!0);delete this.get("itemsById")[o],this._excludeItemFromModifiedSet(e),r&&r[i]==o&&this.setSelectedItem(null),this._notifyAboutItemDeleted(e,t)}},byLink:{_restoreSelectedItem:function(){var e=this.getSelectedItem(),t=this.getItems();return-1!=t.indexOf(e)},setSelectedItem:function(e,t,n){var i=this.getSelectedItem(),o=(this.getItems(),this._indexOfItem(e));if("undefined"==typeof e&&(e=null),e!=i){if(null!==e&&-1==o){if(n)return void n(this.getContext(),{error:"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."});throw"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."}this.get("model").setProperty("selectedItem",e),this._tuneMirroringOfModel(o),this._notifyAboutSelectedItem(e,t)}},_includeItemToModifiedSet:function(e){this.get("modifiedItems")["-"]=e},_excludeItemFromModifiedSet:function(e){delete this.get("modifiedItems")["-"]},_handleDeletedItem:function(e,t){var n=this.getItems(),i=this.getSelectedItem(),o=n.indexOf(e);o>=0&&(n.splice(o,1),this._excludeItemFromModifiedSet(e),i&&i==e&&this.setSelectedItem(null)),this._notifyAboutItemDeleted(e,t)}}},window.InfinniUI.BaseDataSource=BaseDataSource;var RestDataSource=BaseDataSource.extend({defaults:_.defaults({updatingItemsConverter:null},BaseDataSource.prototype.defaults),initialize:function(){BaseDataSource.prototype.initialize.apply(this,Array.prototype.slice.call(arguments));var e=this.get("model");e.urlParams={get:{method:"get",origin:null,path:"",data:{},params:{}},set:{method:"post",origin:null,path:"",data:{},params:{}},"delete":{method:"delete",origin:null,path:"",data:{},params:{}}},this.initUrlParamsHandlers()},initDataProvider:function(){var e=window.InfinniUI.providerRegister.build("RestDataSource");this.set("dataProvider",e)},initUrlParamsHandlers:function(){var e=this;this.get("model").onPropertyChanged("urlParams.get.*",function(t,n){var i,o=e.get("dataProvider"),r=e.getGettingUrlParams();o.setOrigin("get",r.origin),i=e._templateParamsInStr(r.path,r.params),o.setPath("get",i),i=e._templateParamsInObject(r.data,r.params),o.setData("get",i),(e.get("isDataReady")||e.get("isRequestInProcess")||e.get("waitingOnUpdateItemsHandlers").length>0)&&e.updateItems()}),this.get("model").onPropertyChanged("urlParams.set.*",function(t,n){var i,o=e.get("dataProvider"),r=e.getSettingUrlParams();o.setOrigin("set",r.origin),i=e._templateParamsInStr(r.path,r.params),o.setPath("set",i),i=e._templateParamsInObject(r.data,r.params),o.setData("set",i)}),this.get("model").onPropertyChanged("urlParams.delete.*",function(t,n){var i,o=e.get("dataProvider"),r=e.getDeletingUrlParams();o.setOrigin("delete",r.origin),i=e._templateParamsInStr(r.path,r.params),o.setPath("delete",i),i=e._templateParamsInObject(r.data,r.params),o.setData("delete",i)})},updateItems:function(){this._checkGettingUrlParamsReady()?(BaseDataSource.prototype.updateItems.apply(this,Array.prototype.slice.call(arguments)),this.resumeUpdate("urlGettingParamsNotReady")):(this.suspendUpdate("urlGettingParamsNotReady"),BaseDataSource.prototype.updateItems.apply(this,Array.prototype.slice.call(arguments)))},getGettingUrlParams:function(e){return e=0==arguments.length?"urlParams.get":""==e?"urlParams.get":"urlParams.get."+e,this.get("model").getProperty(e)},setGettingUrlParams:function(e,t){1==arguments.length?(t=e,e="urlParams.get"):e=""==e?"urlParams.get":"urlParams.get."+e,this.get("model").setProperty(e,t)},getSettingUrlParams:function(e){return e=0==arguments.length?"urlParams.set":""==e?"urlParams.set":"urlParams.set."+e,this.get("model").getProperty(e)},setSettingUrlParams:function(e,t){1==arguments.length?(t=e,e="urlParams.set"):e=""==e?"urlParams.set":"urlParams.set."+e,this.get("model").setProperty(e,t)},getDeletingUrlParams:function(e){return e=0==arguments.length?"urlParams.delete":""==e?"urlParams.delete":"urlParams.delete."+e,this.get("model").getProperty(e)},setDeletingUrlParams:function(e,t){1==arguments.length?(t=e,e="urlParams.delete"):e=""==e?"urlParams.delete":"urlParams.delete."+e,this.get("model").setProperty(e,t)},_checkGettingUrlParamsReady:function(){var e,t,n,i,o,r=[];if(!this._checkUrlParamsReady(this.getGettingUrlParams()))return!1;e=this.getGettingUrlParams("path"),t=this._findSubstitutionParams(e),r=r.concat(t),n=this.getGettingUrlParams("data"),e=JSON.stringify(n),t=this._findSubstitutionParams(e),r=r.concat(t),i=this.getGettingUrlParams("params");for(var a=0,l=r.length;l>a;a++)if(o=r[a],void 0===i[o])return!1;return!0},_checkUrlParamsReady:function(e){return e&&"string"==typeof e.origin&&"string"==typeof e.path&&"object"==typeof e.data&&"object"==typeof e.params},_findSubstitutionParams:function(e){if(!e)return[];var t=[];return e.replace(/<%([\s\S]+?)%>/g,function(e,n){return t.push(n),e}),t},_templateParamsInStr:function(e,t){return e&&t?e.replace(/<%([\s\S]+?)%>/g,function(e,n){return t[n]}):e},_templateParamsInObject:function(e,t){if(!e||!t)return e;var n=JSON.stringify(e),i=this._templateParamsInStr(n,t);return JSON.parse(i)},getUpdatingItemsConverter:function(){return this.get("updatingItemsConverter")},setUpdatingItemsConverter:function(e){this.set("updatingItemsConverter",e)},_handleUpdatedItemsData:function(e,t,n){var i,o=this.getUpdatingItemsConverter();i=o?o(e):e,BaseDataSource.prototype._handleUpdatedItemsData.call(this,i,t,n)}});window.InfinniUI.RestDataSource=RestDataSource;var DocumentDataSource=RestDataSource.extend({defaults:_.defaults({documentId:null},RestDataSource.prototype.defaults),initialize:function(){RestDataSource.prototype.initialize.apply(this,Array.prototype.slice.call(arguments));var e=this.get("model");e.setProperty("pageNumber",0),e.setProperty("pageSize",15),e.setProperty("filterParams",{}),this.setUpdatingItemsConverter(function(t){return e.setProperty("totalCount",t.Result.Count),t.Result.Items}),this.initHandlers()},initHandlers:function(){var e=this.get("model"),t=this,n=_.bind(this.updateGettingUrlParams,this),i=function(){t.suspendUpdate("updateGettingUrlParams"),t.get("model").setProperty("pageNumber",0),t.updateGettingUrlParams(),t.resumeUpdate("updateGettingUrlParams")};e.onPropertyChanged("documentId",function(){t.updateGettingUrlParams(),t.updateSettingUrlParams(),t.updateDeletingUrlParams()}),e.onPropertyChanged("filter",i),e.onPropertyChanged("filterParams.*",i),e.onPropertyChanged("pageNumber",n),e.onPropertyChanged("pageSize",i),e.onPropertyChanged("search",i),e.onPropertyChanged("select",n),e.onPropertyChanged("order",i),e.onPropertyChanged("needTotalCount",n),this.updateGettingUrlParams(),this.updateSettingUrlParams(),this.updateDeletingUrlParams()},updateGettingUrlParams:function(){var e=this.get("model"),t={type:"get",origin:InfinniUI.config.serverUrl,path:"/documents/"+this.get("model").getProperty("documentId"),data:{},params:{}},n=e.getProperty("filter"),i=e.getProperty("filterParams"),o=e.getProperty("pageNumber"),r=e.getProperty("pageSize"),a=e.getProperty("search"),l=e.getProperty("select"),s=e.getProperty("order"),u=e.getProperty("needTotalCount");n&&(t.data.filter=n,i&&_.extend(t.params,i)),r&&(o=o||0,t.data.skip=o*r,t.data.take=r),a&&(t.data.search=a),l&&(t.data.select=l),s&&(t.data.order=s),u&&(t.data.count=u),this.setGettingUrlParams(t)},updateSettingUrlParams:function(){var e=(this.get("model"),{type:"post",origin:InfinniUI.config.serverUrl,path:"/documents/"+this.get("model").getProperty("documentId"),data:{},params:{}});this.setSettingUrlParams(e)},updateDeletingUrlParams:function(){var e=(this.get("model"),{type:"delete",origin:InfinniUI.config.serverUrl,path:"/documents/"+this.get("model").getProperty("documentId")+"/<%id%>",data:{},params:{}});this.setDeletingUrlParams(e)},initDataProvider:function(){var e=window.InfinniUI.providerRegister.build("DocumentDataSource");this.set("dataProvider",e)},getDocumentId:function(){return this.get("model").getProperty("documentId")},setDocumentId:function(e){this.get("model").setProperty("documentId",e)},getFilter:function(){return this.get("model").getProperty("filter")},setFilter:function(e){this.get("model").setProperty("filter",e)},getFilterParams:function(e){return e=0==arguments.length?"filterParams":""==e?"filterParams":"filterParams."+e,this.get("model").getProperty(e)},setFilterParams:function(e,t){1==arguments.length?(t=e,e="filterParams"):e=""==e?"filterParams":"filterParams."+e,this.get("model").setProperty(e,t)},setIdFilter:function(e){this.setFilter("eq("+this.getIdProperty()+","+this.quoteValue(e)+")")},getPageNumber:function(){return this.get("model").getProperty("pageNumber")},setPageNumber:function(e){this.get("model").setProperty("pageNumber",e)},getPageSize:function(){return this.get("model").getProperty("pageSize")},setPageSize:function(e){this.get("model").setProperty("pageSize",e)},getSearch:function(){return this.get("model").getProperty("search")},setSearch:function(e){this.get("model").setProperty("search",e)},getSelect:function(){return this.get("model").getProperty("select")},setSelect:function(e){this.get("model").setProperty("select",e)},getOrder:function(){return this.get("model").getProperty("order")},setOrder:function(e){this.get("model").setProperty("order",e)},getTotalCount:function(){return this.get("model").getProperty("totalCount")},getNeedTotalCount:function(){return this.get("model").getProperty("needTotalCount")},setNeedTotalCount:function(e){this.get("model").setProperty("needTotalCount",e)},beforeDeleteItem:function(e){var t=this.idOfItem(e);void 0!==t&&this.setDeletingUrlParams("params.id",t)},quoteValue:function(e){var t="'";return _.isString(e)?t+e+t:e}});window.InfinniUI.DocumentDataSource=DocumentDataSource;var BaseDataSourceBuilder=function(){};_.extend(BaseDataSourceBuilder.prototype,{build:function(e,t){var n=this.createDataSource(t.parentView);return n.suspendUpdate("tuningInSourceBuilder"),this.applyMetadata(t.builder,t.parentView,t.metadata,n),this.applySuspended(n,t.suspended),n.resumeUpdate("tuningInSourceBuilder"),n},applySuspended:function(e,t){if(t)for(var n in t)t.hasOwnProperty(n)&&e.getName()===n&&e.suspendUpdate(t[n])},applyMetadata:function(e,t,n,i){var o=n.IdProperty;o&&i.setIdProperty(o),i.setName(n.Name),i.setFillCreatedItem(n.FillCreatedItem),"IsLazy"in n&&i.setIsLazy(n.IsLazy),"ResolvePriority"in n&&i.setResolvePriority(n.ResolvePriority),_.isObject(n.CustomProperties)&&this.initCustomProperties(i,n.CustomProperties),this.initValidation(t,i,n),this.initNotifyValidation(i),this.initScriptsHandlers(t,n,i),this.initFileProvider(i)},createDataSource:function(e){throw"BaseDataSourceBuilder.createDataSource В потомке BaseDataSourceBuilder не переопределен метод createDataSource."},initCustomProperties:function(e,t){_.each(t,function(t,n){e.setProperty("."+n,t)})},initValidation:function(e,t,n){n.ValidationErrors&&t.setErrorValidator(function(t,i){return new ScriptExecutor(e).executeScript(n.ValidationErrors.Name||n.ValidationErrors,i)})},initScriptsHandlers:function(e,t,n){e&&(t.OnSelectedItemChanged&&n.onSelectedItemChanged(function(n,i){new ScriptExecutor(e).executeScript(t.OnSelectedItemChanged.Name||t.OnSelectedItemChanged,i)}),t.OnItemsUpdated&&n.onItemsUpdated(function(n,i){new ScriptExecutor(e).executeScript(t.OnItemsUpdated.Name||t.OnItemsUpdated,i)}),t.OnPropertyChanged&&n.onPropertyChanged(function(n,i){new ScriptExecutor(e).executeScript(t.OnPropertyChanged.Name||t.OnPropertyChanged,i)}),t.OnItemDeleted&&n.onItemDeleted(function(){new ScriptExecutor(e).executeScript(t.OnItemDeleted.Name||t.OnItemDeleted)}),t.OnErrorValidator&&n.onErrorValidator(function(){new ScriptExecutor(e).executeScript(t.OnErrorValidator.Name||t.OnErrorValidator)}))},buildBindingBuilder:function(e){return function(t){return e.builder.buildBinding(t,{parentView:e.parentView,basePathOfProperty:e.basePathOfProperty})}},initFileProvider:function(e){var t=InfinniUI.config.serverUrl,n=new DocumentUploadQueryConstructor(t),i=new DocumentFileProvider(n);e.setFileProvider(i)}}),_.extend(BaseDataSourceBuilder.prototype,DataSourceValidationNotifierMixin),window.InfinniUI.BaseDataSourceBuilder=BaseDataSourceBuilder;var RestDataSourceBuilder=function(){_.superClass(RestDataSourceBuilder,this)};_.inherit(RestDataSourceBuilder,BaseDataSourceBuilder),_.extend(RestDataSourceBuilder.prototype,{createDataSource:function(e){return new RestDataSource({view:e})},applyMetadata:function(e,t,n,i){BaseDataSourceBuilder.prototype.applyMetadata.call(this,e,t,n,i);var o;this.initProviderErrorHandling(i),"GettingParams"in n&&(o=this.extractUrlParams(n.GettingParams,".urlParams.get.params"),i.setGettingUrlParams(o),this.bindParams(n.GettingParams,i,t,".urlParams.get.params",e)),"SettingParams"in n&&(o=this.extractUrlParams(n.SettingParams,".urlParams.set.params"),i.setSettingUrlParams(o),this.bindParams(n.SettingParams,i,t,".urlParams.set.params",e)),"DeletingParams"in n&&(o=this.extractUrlParams(n.DeletingParams,".urlParams.delet.params"),i.setDeletingUrlParams(o),this.bindParams(n.DeletingParams,i,t,".urlParams.delet.params",e)),"UpdatingItemsConverter"in n&&i.setUpdatingItemsConverter(function(e){return new ScriptExecutor(t).executeScript(n.UpdatingItemsConverter.Name||n.UpdatingItemsConverter,{value:e,source:i})})},extractUrlParams:function(e,t){var n={};return"Origin"in e?n.origin=e.Origin:n.origin=InfinniUI.config.serverUrl,"Path"in e&&(n.path=e.Path),"Data"in e&&(n.data=e.Data),"Method"in e&&(n.method=e.Method),n.params={},n},bindParams:function(e,t,n,i,o){if("Params"in e){var r=e.Params;for(var a in r)this.initBindingToProperty(r[a],t,n,i+"."+a,o)}},initBindingToProperty:function(e,t,n,i,o){if("object"!=typeof e)void 0!==e&&t.setProperty(i,e);else{var r={parent:n,parentView:n},a=o.buildBinding(e,r);a.setMode(InfinniUI.BindingModes.toElement),a.bindElement(t,i)}},initProviderErrorHandling:function(e){e.onProviderError(function(){var e=window.InfinniUI.global.messageBus;e.send(messageTypes.onNotifyUser,{messageText:"Ошибка на сервере",messageType:"error"})})}}),window.InfinniUI.RestDataSourceBuilder=RestDataSourceBuilder;var DocumentDataSourceBuilder=function(){_.superClass(DocumentDataSourceBuilder,this)};_.inherit(DocumentDataSourceBuilder,BaseDataSourceBuilder),_.extend(DocumentDataSourceBuilder.prototype,{applyMetadata:function(e,t,n,i){if(BaseDataSourceBuilder.prototype.applyMetadata.call(this,e,t,n,i),i.setDocumentId(n.DocumentId),"Filter"in n&&i.setFilter(n.Filter),"FilterParams"in n){var o=n.FilterParams;for(var r in o)this.initBindingToProperty(o[r],i,t,".filterParams."+r,e)}"Search"in n&&i.setSearch(n.Search),"Select"in n&&i.setSelect(n.Select),"Order"in n&&i.setOrder(n.Order),"NeedTotalCount"in n&&i.setNeedTotalCount(n.NeedTotalCount),"PageSize"in n&&i.setPageSize(n.PageSize),"PageNumber"in n&&i.setPageNumber(n.PageNumber),Array.isArray(n.DefaultItems)&&i.setProperty("",n.DefaultItems)},createDataSource:function(e){return new DocumentDataSource({view:e})},initBindingToProperty:RestDataSourceBuilder.prototype.initBindingToProperty}),window.InfinniUI.DocumentDataSourceBuilder=DocumentDataSourceBuilder;var Element=function(e,t){this.parent=e,this.control=this.createControl(t),this.state={Enabled:!0},this.childElements=[]};Object.defineProperties(Element.prototype,{name:{get:function(){return this.getName()}}}),_.extend(Element.prototype,{createControl:function(e){throw"Не перегружен абстрактный метод Element.createControl"},setParent:function(e){this.parent=e},getParent:function(){return this.parent},getChildElements:function(){return this.childElements},findAllChildrenByType:function(e){function t(){return this.constructor.name===e}function n(t){return t.findAllChildrenByType(e)}return this._findAllChildren(t,n)},findAllChildrenByName:function(e){function t(){return this.getName()===e}function n(t){return t.findAllChildrenByName(e)}return this._findAllChildren(t,n)},_findAllChildren:function(e,t){var n=this.getChildElements(),i=[];return Array.isArray(n)&&n.forEach(function(n){e.call(n)&&i.push(n),Array.prototype.push.apply(i,t(n))}),i},getView:function(){return this.parentView||(this.parent&&this.parent.isView?this.parentView=this.parent:this.parent&&this.parent.getView?this.parentView=this.parent.getView():this.parentView=null),this.parentView},getName:function(){return this.control.get("name")},setName:function(e){if(this.getName())throw"name already exists";"string"==typeof e&&this.control.set("name",e)},getProperty:function(e){var t="get"+this._upperFirstSymbol(e);if("function"==typeof this[t])return this[t]();throw"expect that "+t+" is getter function"},setProperty:function(e,t){var n,i="set"+this._upperFirstSymbol(e);if("function"==typeof this[i])this[i](t);else{if(!this._isCollectionProperty(e))throw"expect that "+i+" is setter function";n="get"+this._upperFirstSymbol(e),this[n]().set(t)}},_isCollectionProperty:function(e){var t="get"+this._upperFirstSymbol(e);return"function"==typeof this[t]&&this[t]()instanceof Collection},onPropertyChanged:function(e,t){var n="on"+this._upperFirstSymbol(e)+"Changed";"function"==typeof this[n]?this[n](t):this.control.on("change:"+e,function(n,i){var o=this.getView(),r=o?o.getContext():void 0,a={property:e,oldValue:n.previous(e),newValue:i};t(r,a)}.bind(this))},getText:function(){return this.control.get("text")},setText:function(e){"undefined"!=typeof e&&this.control.set("text",e)},getEnabled:function(){return this.control.get("enabled")},setEnabled:function(e){if("boolean"==typeof e){this.setState("Enabled",e);var t=this.control.get("parentEnabled"),n=this.control.get("enabled");e=t&&e,e!==n&&(this.control.set("enabled",e),this.setParentEnabledOnChild(e))}},setParentEnabledOnChild:function(e){var t=this.getChildElements();if(_.isEmpty(t)===!1)for(var n=0,i=t.length;i>n;n+=1)"undefined"!=typeof t[n].setParentEnabled&&t[n].setParentEnabled(e)},setParentEnabled:function(e){if("boolean"==typeof e){var t=this.control.get("parentEnabled");if(this.control.set("parentEnabled",e),t!==e){var n=e&&this.getState("Enabled");this.control.set("enabled",n),this.setParentEnabled(n),this.setParentEnabledOnChild(n)}}},getVisible:function(){return this.control.get("visible")},setVisible:function(e){"boolean"==typeof e&&this.control.set("visible",e)},getStyle:function(){return this.control.get("style")},setStyle:function(e){"string"==typeof e&&this.control.set("style",e)},getTextHorizontalAlignment:function(){return this.control.get("textHorizontalAlignment")},setTextHorizontalAlignment:function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.TextHorizontalAlignment)&&this.control.set("textHorizontalAlignment",e)},getHorizontalAlignment:function(){return this.control.get("horizontalAlignment")},setHorizontalAlignment:function(e){"string"==typeof e&&this.control.set("horizontalAlignment",e)},getVerticalAlignment:function(){return this.control.get("verticalAlignment")},setVerticalAlignment:function(e){"string"==typeof e&&this.control.set("verticalAlignment",e)},getTextStyle:function(){return this.control.get("textStyle")},setTextStyle:function(e){"string"==typeof e&&this.control.set("textStyle",e); -},getBackground:function(){return this.control.get("background")},setBackground:function(e){"string"==typeof e&&this.control.set("background",e)},getForeground:function(){return this.control.get("foreground")},setForeground:function(e){"string"==typeof e&&this.control.set("foreground",e)},onLoaded:function(e){this.control.onLoaded(e)},isLoaded:function(){return this.control.isLoaded()},getFocusable:function(){return this.control.get("focusable")},setFocusable:function(e){_.isBoolean(e)&&this.control.set("focusable",e)},getFocused:function(){return this.control.get("focused")},setFocused:function(e){return this.control.set("focused",!!e)},onLostFocus:function(e){this.control.on("OnLostFocus",e)},onGotFocus:function(e){this.control.on("OnGotFocus",e)},setToolTip:function(e){this.control.set("toolTip",e)},getToolTip:function(){return this.control.get("toolTip")},setContextMenu:function(e){this.control.set("contextMenu",e)},getContextMenu:function(e){return this.control.get("contextMenu")},getIsLoaded:function(){return this.control.get("isLoaded")},setIsLoaded:function(){this.control.set("isLoaded",!0)},setTag:function(e){this.control.set("tag",e)},getTag:function(){return this.control.get("tag")},render:function(){return this.control.render()},getWidth:function(){},getHeight:function(){},getScriptsStorage:function(){return this.getView()},setValidationState:function(e,t){this.control.set("validationMessage",t),this.control.set("validationState",e)},getValidationState:function(){return this.control.get("validationState")},getState:function(e){return this.state[e]},setState:function(e,t){this.state[e]=t},onBeforeClick:function(e){return this.control.onBeforeClick(e)},onKeyDown:function(e){var t=this,n=function(n){var i=t._getHandlingKeyEventData(n);e(i)};return this.control.onKeyDown(n)},onKeyUp:function(e){var t=this,n=function(n){var i=t._getHandlingKeyEventData(n);e(i)};return this.control.onKeyUp(n)},onClick:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onClick(n)},onDoubleClick:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onDoubleClick(n)},onMouseDown:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseDown(n)},onMouseUp:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseUp(n)},onMouseEnter:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseEnter(n)},onMouseLeave:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseLeave(n)},onMouseMove:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseMove(n)},onMouseWheel:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseWheel(n)},remove:function(e){var t=window.InfinniUI.global.logger;if(this.isRemoved)return void t.warn("Element.remove: Попытка удалить элемент, который уже был удален");for(var n=this.childElements,i=0,o=n.length;o>i;i++)n[i].remove(!0);this.control.remove(),this.parent&&this.parent.removeChild&&!e&&(this.parent.isRemoved?t.warn("Element.remove: Попытка удалить элемент из родителя, который помечан как удаленный"):this.parent.removeChild(this)),this.isRemoved=!0,this.childElements=void 0},removeChild:function(e){var t=this.childElements.indexOf(e);-1!=t&&this.childElements.splice(t,1)},addChild:function(e){if(this.isRemoved){var t=window.InfinniUI.global.logger;t.warn("Element.addChild: Попытка добавить потомка в удаленный элемент")}else this.childElements.push(e)},createControlEventHandler:function(e,t,n){var i,o=e.getView();return n=n||{},o&&(i=o.context),function(o){return _.extend(o,n),o.source=e,t.call(void 0,i,o)}},_getHandlingKeyEventData:function(e){var t={};return t={source:this,key:e.which,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,nativeEventData:e}},_getHandlingMouseEventData:function(e){var t={};return t={source:this,button:e.which,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,nativeEventData:e}},_upperFirstSymbol:function(e){return e[0].toUpperCase()+e.substr(1)},setFocus:function(){this.control.setFocus()},renderTree:function(e){var e=e||"";if(console.log(e+"Name: "+this.getName(),this),void 0!==this.childElements){e+="_____";for(var t=0,n=this.childElements.length;n>t;t+=1)this.renderTree.call(this.childElements[t],e)}},renderFullTree:function(){for(var e=this.parent;e.parent&&void 0!==e.parent.parent;)e=e.parent;this.renderTree.call(e)}}),window.InfinniUI.Element=Element;var ElementBuilder=function(){};_.extend(ElementBuilder.prototype,{build:function(e,t){t=t||{};var n=this.createElement(t),i=_.extend(t,{element:n});return this.applyMetadata(i),t.parentView&&t.parentView.registerElement&&t.parentView.registerElement(n),t.parent&&t.parent.addChild&&t.parent.addChild(n),n},createElement:function(e){throw"Не перегружен абстрактный метод ElementBuilder.createElement()"},applyMetadata:function(e){var t=e.metadata,n=e.element;this.initBindingToProperty(e,"Text"),this.initBindingToProperty(e,"Visible",!0),this.initBindingToProperty(e,"Enabled",!0),this.initBindingToProperty(e,"HorizontalAlignment"),this.initBindingToProperty(e,"TextHorizontalAlignment"),this.initBindingToProperty(e,"VerticalAlignment"),this.initBindingToProperty(e,"TextStyle"),this.initBindingToProperty(e,"Foreground"),this.initBindingToProperty(e,"Background"),this.initBindingToProperty(e,"Style"),this.initBindingToProperty(e,"Tag"),this.initBindingToProperty(e,"Focusable",!0),t.ToolTip&&this.initToolTip(e),t.ContextMenu&&this.initContextMenu(e),"Name"in t&&n.setName(t.Name),t.OnLoaded&&n.onLoaded(function(){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnLoaded.Name||t.OnLoaded,{source:n})}),t.OnGotFocus&&n.onGotFocus(function(){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnGotFocus.Name||t.OnGotFocus,{source:n})}),t.OnLostFocus&&n.onLostFocus(function(){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnLostFocus.Name||t.OnLostFocus,{source:n})}),t.OnDoubleClick&&n.onDoubleClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnDoubleClick.Name||t.OnDoubleClick,e)}),t.OnClick&&n.onClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnClick.Name||t.OnClick,e)}),t.OnMouseEnter&&n.onMouseEnter(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseEnter.Name||t.OnMouseEnter,e)}),t.OnMouseLeave&&n.onMouseLeave(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseLeave.Name||t.OnMouseLeave,e)}),t.OnMouseMove&&n.onMouseMove(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseMove.Name||t.OnMouseMove,e)}),t.OnKeyDown&&n.onKeyDown(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnKeyDown.Name||t.OnKeyDown,e)}),t.OnKeyUp&&n.onKeyUp(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnKeyUp.Name||t.OnKeyUp,e)}),t.OnMouseDown&&n.onMouseDown(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseDown.Name||t.OnMouseDown,e)}),t.OnMouseUp&&n.onMouseUp(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseUp.Name||t.OnMouseUp,e)}),t.OnMouseWheel&&n.onMouseWheel(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseWheel.Name||t.OnMouseWheel,e)})},initBindingToProperty:function(e,t,n){var i,o=e.metadata,r=o[t],a=e.element,l=this.lowerFirstSymbol(t);if(r&&"object"==typeof r){var s,u={parent:e.parent,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},d=e.builder.buildBinding(o[t],u);return n&&(d.setMode(InfinniUI.BindingModes.toElement),i=d.getConverter(),i||(i={}),i.toElement?(s=i.toElement,i.toElement=function(e,t){var n=s(e,t);return!!n}):i.toElement=function(e,t){return!!t.value},d.setConverter(i)),d.bindElement(a,l),d}return void 0!==r&&e.element["set"+t](r),null},initToolTip:function(e){var t,n=window.InfinniUI.global.messageBus,i=e.builder,o=e.element,r=e.metadata,a={parent:o,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty};t="string"==typeof r.ToolTip?i.buildType("Label",{Text:r.ToolTip},a):i.build(r.ToolTip,a),o.setToolTip(t),n.send(messageTypes.onToolTip.name,{source:o,content:t.render()})},initContextMenu:function(e){var t,n=window.InfinniUI.global.messageBus,i=e.builder,o=e.element,r=e.metadata,a={parent:o,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty};t=i.buildType("ContextMenu",{Items:r.ContextMenu.Items},a),o.setContextMenu(t),n.send(messageTypes.onContextMenu.name,{source:o,content:t.render()})},lowerFirstSymbol:function(e){return e[0].toLowerCase()+e.substr(1)}}),window.InfinniUI.ElementBuilder=ElementBuilder;var builderValuePropertyMixin={initValueProperty:function(e,t){var n=e.metadata;if("undefined"==typeof t&&(t=!1),void 0!==n.Value){var i=e.builder.build(e.view,n.Value,e.collectionProperty);if(i.setElement(e.element),null!=i){i.onPropertyValueChanged(function(t,n){e.element.setValue(i.getPropertyValue())});var o=i.getPropertyValue();null!==o&&"undefined"!=typeof o&&e.element.setValue(o),e.element.onValueChanged(function(e,t){i.setPropertyValue(t)})}return t&&i&&e.element.onLostFocus(function(){i.validate()}),i}}},buttonBuilderMixin={applyButtonMetadata:function(e){var t=e.element,n=e.metadata,i=e.builder;if(this.initTemplatingContent(e),n.Action){var o={parentView:e.parentView,parent:t,basePathOfProperty:e.basePathOfProperty},r=i.build(n.Action,o);t.onClick(function(){r.execute()})}},initTemplatingContent:function(e){var t,n,i=e.element,o=e.metadata,r=e.builder;"ContentTemplate"in o&&(t=this.buildContentTemplate(o.ContentTemplate,e),i.setContentTemplate(t)),"Content"in o&&(n=r.buildBinding(o.Content,{parentView:e.parentView,basePathOfProperty:e.basePathOfProperty}),n.bindElement(i,"content"))},buildContentTemplate:function(e,t){var n=(t.element,t.builder),i=t.basePathOfProperty;return function(o,r){var a={parent:t.element,parentView:t.parentView,basePathOfProperty:i};return n.build(e,a)}}},buttonMixin={buttonInit:function(){this.isFirstAction=!0},getContent:function(){return this.control.get("content")},setContent:function(e){this.control.set("content",e)},getContentTemplate:function(){return this.control.get("contentTemplate")},setContentTemplate:function(e){this.control.set("contentTemplate",e)},setAction:function(e){var t=this.control;t.set("action",e),this.isFirstAction&&(this.isFirstAction=!1,this.onClick(function(){var e=t.get("action");e&&e.execute()}))},getAction:function(){return this.control.get("action")},click:function(){this.control.click()},onClick:function(e){function t(t){var i=n.getEnabled();i&&e(t)}var n=this;Element.prototype.onClick.call(this,t)}},displayFormatBuilderMixin={buildDisplayFormat:function(e,t){function n(e,t){return t=t||{},t.value}var i,o=t.formatOptions,r=t.builder,a=n;return"string"==typeof e?(i=r.buildType("ObjectFormat",{Format:e}),a=function(e,t){return t=t||{},i.format(t.value)}):e&&"object"==typeof e&&(i=r.build(e),a=function(e,t){return t=t||{},i.format(t.value)}),i&&i.setOptions(o),a}},labelTextElementMixin={getLabelText:function(){return this.control.get("labelText")},setLabelText:function(e){this.control.set("labelText",e)}},routerServiceMixin={replaceParamsInHref:function(e,t,n,i){if(i){var o=i.split("?")[0],r=i.split("?")[1],a=o.split("/"),l=a.indexOf(":"+t);if(-1===l)throw new Error("Different param names in metadata and InfinniUI.config.Routes");return a=e.split("/"),a[l]=n,a=a.join("/"),r&&(a+="?"+r),a}return e.replace(":"+t,n)},replaceParamsInQuery:function(e,t,n,i){if(i){for(var o=e.split("?")[0],r=e.split("?")[1],a=i.split("?")[1],l=a.split("&"),s=-1,u=0,d=l.length;d>u;u+=1)-1!==l[u].indexOf(":"+t)&&(s=u);if(-1===s)throw new Error("Different query names in metadata and InfinniUI.config.Routes");l=r.split("&");var c=l[s].split("=");c[1]=n,l[s]=c.join("=");var h=o+"?"+l.join("&");return h}return e.replace(":"+t,n)},bindParams:function(e,t,n,i){var o=e.element,r=(e.builder,this),a={parent:e.parent,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},l=e.builder.buildBinding(n,a);l.bindElement({onPropertyChanged:function(){},setProperty:function(e,n){var a=o.getHref(),l=r.replaceParamsInHref(a,t,n,i);o.setHref(l)},getProperty:function(){}},"")},bindQuery:function(e,t,n,i){var o=e.element,r=(e.builder,this),a={parent:e.parent,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},l=e.builder.buildBinding(n,a);l.bindElement({onPropertyChanged:function(){},setProperty:function(e,n){var a=o.getHref(),l=r.replaceParamsInQuery(a,t,n,i);o.setHref(l)},getProperty:function(){}},"")}},valuePropertyMixin={getValue:function(){return this.control.get("value")},setValue:function(e){return this.control.set("value",e)},onValueChanged:function(e){this.control.onValueChanged(e)}},viewBuilderHeaderTemplateMixin={buildHeaderTemplate:function(e,t){var n,i=t.builder,o=t.metadata;return n=o.HeaderTemplate?function(n,r){var a={parent:e,parentView:e,basePathOfProperty:t.basePathOfProperty};return i.build(o.HeaderTemplate,a)}:function(t,n){var i=new Label;return i.setValue(e.getText()),e.onPropertyChanged("text",function(e,t){i.setValue(t.newValue)}),i}}};window.InfinniUI.Container=Container,_.inherit(Container,Element),Container.prototype.getItemTemplate=function(){return this.control.get("itemTemplate")},Container.prototype.setItemTemplate=function(e){if("function"!=typeof e)throw new Error("Function expected");this.control.set("itemTemplate",e)},Container.prototype.getItems=function(){return this.control.get("items")},Container.prototype.getGroupValueSelector=function(){return this.control.get("groupValueSelector")},Container.prototype.setGroupValueSelector=function(e){this.control.set("groupValueSelector",e)},Container.prototype.getGroupItemTemplate=function(){return this.control.get("groupItemTemplate")},Container.prototype.setGroupItemTemplate=function(e){this.control.set("groupItemTemplate",e)},Container.prototype.getGroupItemComparator=function(){return this.control.get("groupItemComparator")},Container.prototype.setGroupItemComparator=function(e){this.control.set("groupItemComparator",e)},window.InfinniUI.ContainerBuilder=ContainerBuilder,_.inherit(ContainerBuilder,ElementBuilder),_.extend(ContainerBuilder.prototype,{applyMetadata:function(e){var t;e.metadata,e.element;return ElementBuilder.prototype.applyMetadata.call(this,e),t=this.initItems(e),this.initGroup(e,t),{itemsBinding:t}},initItems:function(e){var t=e.metadata,n=null;return Array.isArray(t.Items)?this.initNotTemplatingItems(e):t.Items&&(n=this.initTemplatingItems(e)),n},initTemplatingItems:function(e){var t,n,i,o=e.metadata,r=e.element;return n=e.builder.buildBinding(o.Items,{parentView:e.parentView,basePathOfProperty:e.basePathOfProperty}),n.setMode(InfinniUI.BindingModes.toElement),this.bindElementItemsWithSorting(n,e),"ItemTemplate"in o?t=this.buildItemTemplate(o.ItemTemplate,e):"ItemFormat"in o?t=this.buildItemFormat(n,o.ItemFormat,e):"ItemSelector"in o?t=this.buildItemSelector(n,o.ItemSelector,e):(i="ItemProperty"in o?o.ItemProperty:"",t=this.buildItemProperty(n,i,e)),r.setItemTemplate(t),n},initNotTemplatingItems:function(e){var t=e.metadata.Items,n=e.element,i=t.slice(0);n.getItems().set(i);var o=this.buildItemTemplateForUniqueItem(i,e);n.setItemTemplate(o)},tuneItemsBinding:function(e){var t=e.getSource();"function"==typeof t.tryInitData&&t.tryInitData()},initGroup:function(e,t){this.hasGrouping(e)&&(this.initGroupValueSelector(e),this.initGroupItemTemplate(e,t))},hasGrouping:function(e){return e.metadata.GroupValueSelector||e.metadata.GroupValueProperty},initGroupValueSelector:function(e){var t,n=e.metadata,i=e.element;t=n.GroupValueSelector?function(e,t){var o=new ScriptExecutor(i.getScriptsStorage());return o.executeScript(n.GroupValueSelector.Name||n.GroupValueSelector,t)}:n.GroupValueProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,n.GroupValueProperty)}:null,i.setGroupValueSelector(t)},initGroupItemTemplate:function(e,t){var n,i=e.metadata,o=e.element;i.GroupItemTemplate?n=this.buildItemTemplate(i.GroupItemTemplate,e):i.GroupItemFormat?n=this.buildItemFormat(t,i.GroupItemFormat,e):i.GroupItemSelector?n=this.buildItemSelector(t,i.GroupItemSelector,e):i.GroupItemProperty&&(n=this.buildItemProperty(t,i.GroupItemProperty,e)),n&&o.setGroupItemTemplate(n)},buildItemProperty:function(e,t,n){return function(n,i){var o,r=i.index,a=new Label(this),l=e.getSource(),s=new DataBinding;return o=r.toString(),""!=e.getSourceProperty()&&(o=e.getSourceProperty()+"."+o),""!=t&&(o=o+"."+t),s.bindSource(l,o),s.bindElement(a,"value"),a}},buildItemFormat:function(e,t,n){var i=this.buildDisplayFormat(t,n);return function(t,n){var o=n.index,r=new Label(this),a=e.getSourceProperty(),l=e.getSource(),s=new DataBinding;return a=o.toString(),""!=e.getSourceProperty()&&(a=e.getSourceProperty()+"."+a),r.setDisplayFormat(i),s.bindSource(l,a),s.bindElement(r,"value"),r}},buildItemSelector:function(e,t,n){return function(i,o){var r=o.index,a=new Label(this),l=new ScriptExecutor(n.parentView),s=e.getSourceProperty(),u=e.getSource(),d=new DataBinding;return d.setMode(InfinniUI.BindingModes.toElement),s=r.toString(),""!=e.getSourceProperty()&&(s=e.getSourceProperty()+"."+s),d.setConverter({toElement:function(e,n){return l.executeScript(t.Name||t,n)}}),d.bindSource(u,s),d.bindElement(a,"value"),a}},buildItemTemplate:function(e,t){var n=(t.element,t.builder),i=t.basePathOfProperty||new BasePathOfProperty(""),o=t.metadata.Items.Property||"",r=this;return function(a,l){var s,u=l.index,d={parent:t.element,parentView:t.parentView};return void 0!==u&&null!==u&&(s=r.bindingIndexByItemsIndex(u,t),void 0!==s&&null!==s?d.basePathOfProperty=i.buildChild(o,s):d.basePathOfProperty=i.buildChild(o,u)),n.build(e,d)}},buildItemTemplateForUniqueItem:function(e,t){var n=t.element,i=t.builder,o=t.basePathOfProperty||new BasePathOfProperty("");return function(e,r){var a=r.index,l=n.getItems().getByIndex(a),s={parent:t.element,parentView:t.parentView,basePathOfProperty:o};return i.build(l,s)}},bindingIndexByItemsIndex:function(e,t){var n=t.element,i=n.getItems();return i.getProperty(e,"bindingIndex")},bindElementItemsWithSorting:function(e,t){var n,i=t.metadata,o=t.element,r=new ScriptExecutor(t.parent);i.ItemComparator&&(n=function(e,t){return r.executeScript(i.ItemComparator.Name||i.ItemComparator,{item1:e,item2:t})});var a=e.getSource();a.onPropertyChanged("*",function(e,t){var n=o.getItems();t.property&&t.property.match(/^\d+$/)&&n.replace(t.oldValue,t.newValue)}),e.bindElement({setProperty:function(e,t){var i,r=o.getItems();n?(i=r.set(t,!0),r.forEach(function(e,t,n){n.setProperty(t,"bindingIndex",t)}),i&&r.sort(n)):(i=r.set(t),r.forEach(function(e,t,n){n.setProperty(t,"bindingIndex",t)}))},onPropertyChanged:function(){}},"items")}},displayFormatBuilderMixin);var editorBaseBuilderMixin={initialize_editorBaseBuilder:function(){},applyMetadata_editorBaseBuilder:function(e,t){function n(e,t){return e=e||{},t=t||{},!e.toElement&&t.toElement&&(e.toElement=t.toElement),!e.toSource&&t.toSource&&(e.toSource=t.toSource),!e._element&&t._element&&(e._element=t._element),_.isEmpty(e)?null:e}var i=e.metadata,o=e.element;if(t=t||{},t.valueProperty=t.valueProperty||"value",o.setLabelFloating(i.LabelFloating),o.setHintText(i.HintText),o.setErrorText(i.ErrorText),o.setWarningText(i.WarningText),i.OnValueChanging&&o.onValueChanging(function(t,n){var o=new ScriptExecutor(e.parentView);return o.executeScript(i.OnValueChanging.Name||i.OnValueChanging,n)}),i.OnValueChanged&&o.onValueChanged(function(t,n){new ScriptExecutor(e.parentView).executeScript(i.OnValueChanged.Name||i.OnValueChanged,n)}),void 0!==i.Value)if(InfinniUI.Metadata.isBindingMetadata(i.Value)){var r={parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},a=e.builder.buildBinding(i.Value,r),l=n(a.getConverter(),t.converter);l&&a.setConverter(l),t.mode&&a.setMode(t.mode),a.bindElement(e.element,t.valueProperty),this.initValidationResultText(o,a)}else e.element.setValue(i.Value);return{valueBinding:a}},initValidationResultText:function(e,t){function n(e,t){return e.filter(function(e){return o===e.property}).map(function(e){return e.message}).join(" ")}var i=t.getSource(),o=t.getSourceProperty();"function"==typeof i.onErrorValidator&&i.onErrorValidator(function(t,i){var o=i.value,r="";!o.isValid&&Array.isArray(o.items)&&(r=n(o.items)),e.setErrorText(r)}),"function"==typeof i.onWarningValidator&&i.onWarningValidator(function(t,i){var o=i.value,r="";!o.isValid&&Array.isArray(o.items)&&(r=n(o.items)),e.setWarningText(r)})}},editorBaseMixin={initialize_editorBase:function(){},getValue:function(){return this.control.getValue()},setValue:function(e){this.control.setValue(e)},getLabelFloating:function(){return this.control.get("labelFloating")},setLabelFloating:function(e){this.control.set("labelFloating",e)},getHintText:function(){return this.control.get("hintText")},setHintText:function(e){this.control.set("hintText",e)},getErrorText:function(){return this.control.get("errorText")},setErrorText:function(e){this.control.set("errorText",e)},getWarningText:function(){return this.control.get("warningText")},setWarningText:function(e){this.control.set("warningText",e)},validateValue:function(e){},convertValue:function(e){return e},onValueChanging:function(e){this.control.onValueChanging(this.createControlEventHandler(this,e,{property:"value"}))},onValueChanged:function(e){this.control.onValueChanged(this.createControlEventHandler(this,e,{property:"value"}))}};window.InfinniUI.ListEditorBase=ListEditorBase,_.inherit(ListEditorBase,Container),_.extend(ListEditorBase.prototype,{getMultiSelect:function(){return this.control.get("multiSelect")},setMultiSelect:function(e){this.control.set("multiSelect",e)},getValueSelector:function(){return this.control.get("valueSelector")},setValueSelector:function(e){this.control.set("valueSelector",e)},getDisabledItemCondition:function(){return this.control.get("disabledItemCondition")},setDisabledItemCondition:function(e){this.control.set("disabledItemCondition",e)},setValueItem:function(e){var t,n=this.getMultiSelect(),i=this.getValueSelector();if(n){t=[];for(var o=0,r=e.length;r>o;o++)t[o]=i(null,{value:e[o]})}else t=i(null,{value:e});this.setValue(t)},getSelectedItem:function(){return this.control.get("selectedItem")},setSelectedItem:function(e){this.control.set("selectedItem",e)},onSelectedItemChanged:function(e){this.control.onSelectedItemChanged(this.createControlEventHandler(this,e))}},editorBaseMixin),window.InfinniUI.ListEditorBaseBuilder=ListEditorBaseBuilder,_.inherit(ListEditorBaseBuilder,ContainerBuilder),_.extend(ListEditorBaseBuilder.prototype,{applyMetadata:function(e){var t,n=ContainerBuilder.prototype.applyMetadata.call(this,e),i=n.itemsBinding;return this.initSelecting(e,i),this.initDisabledItemCondition(e),this.initValueFeatures(e),t=this.applyMetadata_editorBaseBuilder(e),_.extend(n,t)},initSelecting:function(e,t){var n=e.metadata,i=e.element,o=t.getSource(),r=t.getSourceProperty(),a=""==r;a&&(o.setSelectedItem(null),o.onSelectedItemChanged(function(e,t){var n=i.getSelectedItem(),o=t.value;o!=n&&i.setSelectedItem(o)})),i.onSelectedItemChanged(function(e,t){var r=o.getSelectedItem(),l=t.value;a&&l!=r&&o.setSelectedItem(l),n.OnSelectedItemChanged&&new ScriptExecutor(i.getScriptsStorage()).executeScript(n.OnSelectedItemChanged.Name||n.OnSelectedItemChanged,t)})},initValueFeatures:function(e){var t=e.metadata,n=e.element;"undefined"!=typeof t.MultiSelect&&null!==t.MultiSelect&&n.setMultiSelect(t.MultiSelect),this.initValueSelector(e)},initValueSelector:function(e){var t,n=e.metadata,i=e.element;t=n.ValueSelector?function(t,i){var o=new ScriptExecutor(e.element.getScriptsStorage());return o.executeScript(n.ValueSelector.Name||n.ValueSelector,i)}:n.ValueProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,n.ValueProperty)}:function(e,t){return t.value},i.setValueSelector(t)},initDisabledItemCondition:function(e){var t,n=e.metadata,i=e.element;n.DisabledItemCondition&&(t=function(e,t){var o=new ScriptExecutor(i.getScriptsStorage());return o.executeScript(n.DisabledItemCondition.Name||n.DisabledItemCondition,t)}),i.setDisabledItemCondition(t)}},editorBaseBuilderMixin),window.InfinniUI.TextEditorBase=TextEditorBase,_.inherit(TextEditorBase,Element),_.extend(TextEditorBase.prototype,{setEditor:function(e){this.control.set("editor",e)},setDisplayFormat:function(e){this.control.set("displayFormat",e)},getDisplayFormat:function(){return this.control.get("displayFormat")},setEditMask:function(e){this.control.set("editMask",e)},getEditMask:function(){return this.control.get("editMask")},getRawValue:function(){function e(e){return null!==e&&"undefined"!=typeof e}var t=this.control.get("editor").getValue(),n=this.getEditMask();if(n){var i=n.getValue(),o=n.getText();e(i)?t=i:e(o)&&(t=o)}return t},getInputType:function(){return this.control.get("inputType")},setInputType:function(e){e&&this.control.set("inputType",e)}},editorBaseMixin,labelTextElementMixin),window.InfinniUI.TextEditorBaseBuilder=TextEditorBaseBuilder,_.inherit(TextEditorBaseBuilder,ElementBuilder),_.extend(TextEditorBaseBuilder.prototype,{applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e);var t=(e.metadata,e.element);this.initBindingToProperty(e,"LabelText"),t.setInputType(this.getCompatibleInputType(e)),this.initDisplayFormat(e).initEditMask(e).initEditor(e)},getCompatibleInputType:function(e){var t=e.metadata.Type,n=e.metadata.EditMask;return"undefined"==typeof t&&(t=e.element.getInputType()),n&&(t="text"),t},initEditor:function(e){var t=e.element,n=new TextEditor;return n.setDisplayFormat(t.getDisplayFormat()).setEditMask(t.getEditMask()).setValueConverter(function(){return t.convertValue.bind(t)}).setValidatorValue(t.validateValue.bind(t)),t.setEditor(n),n.onValueChanged(function(e){t.setValue(e)}),t.onValueChanged(function(e,t){n.setValue(t.newValue)}),n.setValue(t.getValue()),this},initDisplayFormat:function(e){var t=e.metadata,n=this.buildDisplayFormat(t.DisplayFormat,e);return e.element.setDisplayFormat(n),this},initEditMask:function(e){var t,n=e.metadata,i=e.builder;return n.EditMask&&(t=i.build(n.EditMask,{parentView:e.parentView,formatOptions:e.formatOptions})),e.element.setEditMask(t),this}},editorBaseBuilderMixin,displayFormatBuilderMixin);var TextEditor=function(){var e=new TextEditorModel;e.on("invalid",function(e,t){console.log("error",t)}),this._model=e};window.InfinniUI.TextEditor=TextEditor,TextEditor.prototype.setDisplayFormat=function(e){return this._model.set("displayFormat",e),this},TextEditor.prototype.setEditMask=function(e){return this._model.set("editMask",e),this},TextEditor.prototype.setValidatorValue=function(e){return this._model.set("validateValue",e),this},TextEditor.prototype.setValueConverter=function(e){return this._model.set("valueConverter",e),this},TextEditor.prototype.getValue=function(){return this._model.getValue()},TextEditor.prototype.render=function(e){this._view=new TextEditorView({model:this._model,el:e})},TextEditor.prototype.setValue=function(e){return this._model.set("originalValue",e,{originalValue:!0}),this},TextEditor.prototype.onValueChanged=function(e){this._model.on("change:originalValue",function(t,n,i){i.originalValue!==!0&&e.call(null,n)})},window.InfinniUI.ListBox=ListBox,_.inherit(ListBox,ListEditorBase),ListBox.prototype.createControl=function(e){return new ListBoxControl(e)},ListBox.prototype.setEnabled=function(e){_.isBoolean(e)&&(ListEditorBase.prototype.setEnabled.call(this,e),e?this.control.updateDisabledItem():this.control.disableAll())},window.InfinniUI.ListBoxBuilder=ListBoxBuilder,_.inherit(ListBoxBuilder,ListEditorBaseBuilder),_.extend(ListBoxBuilder.prototype,{createElement:function(e){return new ListBox(e.parent,e.metadata.ViewMode)},applyMetadata:function(e){ListEditorBaseBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.TextBox=TextBox,_.inherit(TextBox,TextEditorBase),_.extend(TextBox.prototype,{createControl:function(e){return new TextBoxControl(e)},getMultiline:function(){return this.control.get("multiline")},setMultiline:function(e){this.control.set("multiline",e)},getLineCount:function(){return this.control.get("lineCount")},setLineCount:function(e){this.control.set("lineCount",e)}}),window.InfinniUI.TextBoxBuilder=TextBoxBuilder,_.inherit(TextBoxBuilder,TextEditorBaseBuilder),TextBoxBuilder.prototype.createElement=function(e){return new TextBox(e.parent)},TextBoxBuilder.prototype.applyMetadata=function(e){TextEditorBaseBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata,i=n.LineCount;t.setMultiline(n.Multiline),(n.Multiline&&null===i||"undefined"==typeof i)&&(i=2),t.setLineCount(i)},window.InfinniUI.DateTimePicker=DateTimePicker,_.inherit(DateTimePicker,TextEditorBase),DateTimePicker.prototype.createControl=function(e){return new DateTimePickerControl(e)},DateTimePicker.prototype.getMinValue=function(){return this.control.get("minValue")},DateTimePicker.prototype.setMinValue=function(e){this.control.set("minValue",e)},DateTimePicker.prototype.getMaxValue=function(){return this.control.get("maxValue")},DateTimePicker.prototype.setMaxValue=function(e){this.control.set("maxValue",e)},DateTimePicker.prototype.getMode=function(){return this.control.get("mode")},DateTimePicker.prototype.setMode=function(e){this.control.set("mode",e)},DateTimePicker.prototype.getTimeZone=function(){return this.control.get("timeZone")},DateTimePicker.prototype.setTimeZone=function(e){_.isNumber(e)&&this.control.set("timeZone",e)},DateTimePicker.prototype.setDateFormat=function(e){this.control.set("format",e)},DateTimePicker.prototype.validateValue=function(e){if(null!==e&&""!==e&&"undefined"!=typeof e){var t=InfinniUI.DateUtils.restoreTimezoneOffset(this.getMinValue(),this.getTimeZone()),n=InfinniUI.DateUtils.restoreTimezoneOffset(this.getMaxValue(),this.getTimeZone()),i=InfinniUI.DateUtils.checkRangeDate(e,t,n);return i?void 0:"Неверное значение"}},window.InfinniUI.DateTimePickerBuilder=DateTimePickerBuilder,_.inherit(DateTimePickerBuilder,TextEditorBaseBuilder),DateTimePickerBuilder.prototype.createElement=function(e){return new DateTimePicker(e.parent)},DateTimePickerBuilder.prototype.applyMetadata=function(e){var t=e.element;this.applyDefaultMetadata(e);var n=e.metadata;TextEditorBaseBuilder.prototype.applyMetadata.call(this,e),t.setTimeZone(n.TimeZone),t.setMode(n.Mode),this.applyMinValue(t,n.MinValue),this.applyMaxValue(t,n.MaxValue)},DateTimePickerBuilder.prototype.applyMinValue=function(e,t){e.setMinValue(InfinniUI.DateUtils.parseISO8601toDate(t))},DateTimePickerBuilder.prototype.applyMaxValue=function(e,t){e.setMaxValue(InfinniUI.DateUtils.parseISO8601toDate(t))},DateTimePickerBuilder.prototype.applyDefaultMetadata=function(e){var t=e.metadata,n={Date:"{:d}",DateTime:"{:g}",Time:"{:T}"},i={Date:{DateTimeEditMask:{Mask:"d"}},DateTime:{DateTimeEditMask:{Mask:"g"}},Time:{DateTimeEditMask:{Mask:"T"}}};e.metadata=_.extend({},t),_.defaults(e.metadata,{Mode:"Date"}),_.defaults(e.metadata,{DisplayFormat:n[e.metadata.Mode],EditMask:i[e.metadata.Mode]})},DateTimePickerBuilder.prototype.initDisplayFormat=function(e){return TextEditorBaseBuilder.prototype.initDisplayFormat.call(this,this.applyTimeZone(e))},DateTimePickerBuilder.prototype.initEditMask=function(e){return TextEditorBaseBuilder.prototype.initEditMask.call(this,this.applyTimeZone(e))},DateTimePickerBuilder.prototype.applyTimeZone=function(e){var t=e.metadata,n={},i={};return"undefined"!=typeof t.TimeZone&&null!==t.TimeZone&&(i.TimeZone=t.TimeZone),_.defaults(n,e,{formatOptions:i}),n},window.InfinniUI.DatePicker=DatePicker,_.inherit(DatePicker,DateTimePicker),DatePicker.prototype.setTimeZone=function(){ -DateTimePicker.prototype.setTimeZone.call(this,0)},DatePicker.prototype.createControl=function(e){return new DatePickerControl(e)},DatePicker.prototype.convertValue=function(e){var t=null;return t="undefined"!=typeof e&&null!==e&&e.toString().length?InfinniUI.DateUtils.dateToTimestamp(e):null},window.InfinniUI.DatePickerBuilder=DatePickerBuilder,_.inherit(DatePickerBuilder,DateTimePickerBuilder),DatePickerBuilder.prototype.createElement=function(e){return new DatePicker(e.parent)},DatePickerBuilder.prototype.applyDefaultMetadata=function(e){e.metadata=_.extend({},e.metadata,{Mode:"DatePicker",TimeZone:0}),_.defaults(e.metadata,{DisplayFormat:"{:d}",EditMask:{DateTimeEditMask:{Mask:"d"}}})},window.InfinniUI.TimePicker=TimePicker,_.inherit(TimePicker,DateTimePicker),TimePicker.prototype.createControl=function(e){return new TimePickerControl(e)},TimePicker.prototype.setTimeZone=function(){DateTimePicker.prototype.setTimeZone.call(this,0)},TimePicker.prototype.convertValue=function(e){var t=null;return t="undefined"!=typeof e&&null!==e&&e.toString().length?InfinniUI.DateUtils.dateToTimestampTime(e):null},window.InfinniUI.TimePickerBuilder=TimePickerBuilder,_.inherit(TimePickerBuilder,DateTimePickerBuilder),TimePickerBuilder.prototype.createElement=function(e){return new TimePicker(e.parent)},TimePickerBuilder.prototype.applyDefaultMetadata=function(e){e.metadata=_.extend({},e.metadata,{Mode:"TimePicker",TimeZone:0}),_.defaults(e.metadata,{DisplayFormat:"{:T}",EditMask:{DateTimeEditMask:{Mask:"T"}}})},TimePickerBuilder.prototype.applyMinValue=function(e,t){var n=InfinniUI.DateUtils.parseTimeISO8601toDate(t,0);"undefined"!=typeof n&&e.setMinValue(n)},TimePickerBuilder.prototype.applyMaxValue=function(e,t){var n=InfinniUI.DateUtils.parseTimeISO8601toDate(t,0);"undefined"!=typeof n&&e.setMaxValue(n)},window.InfinniUI.StackPanel=StackPanel,_.inherit(StackPanel,Container),StackPanel.prototype.getOrientation=function(){return this.control.get("orientation")},StackPanel.prototype.setOrientation=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.StackPanelOrientation)&&this.control.set("orientation",e)},StackPanel.prototype.createControl=function(e){return new StackPanelControl(e)},window.InfinniUI.StackPanelBuilder=StackPanelBuilder,_.inherit(StackPanelBuilder,ContainerBuilder),_.extend(StackPanelBuilder.prototype,{createElement:function(e){return new StackPanel(e.parent,e.metadata.ViewMode)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setOrientation(t.Orientation),i}}),window.InfinniUI.Button=Button,_.inherit(Button,Element),_.extend(Button.prototype,{createControl:function(e){return new ButtonControl(e)},setType:function(e){this.control.setType(e)},getType:function(){return this.control.getType()}},buttonMixin),window.InfinniUI.ButtonBuilder=ButtonBuilder,_.inherit(ButtonBuilder,ElementBuilder),_.extend(ButtonBuilder.prototype,{createElement:function(e){var t=this.detectViewMode(e);return new Button(e.parent,t)},detectViewMode:function(e){var t=e.metadata.ViewMode,n=e.parent,i=!1;if(!t)for(;!i;)n?n instanceof PopupButton?(t="link",i=!0):n instanceof MenuBar?(t="menuItem",i=!0):n instanceof View?i=!0:n=n.parent:i=!0;return t},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyButtonMetadata(e),e.metadata.Type&&e.element.setType(e.metadata.Type)}},buttonBuilderMixin),window.InfinniUI.CheckBox=CheckBox,_.inherit(CheckBox,Element),_.extend(CheckBox.prototype,{createControl:function(e){return new CheckBoxControl(e)}},editorBaseMixin),window.InfinniUI.CheckBoxBuilder=CheckBoxBuilder,_.inherit(CheckBoxBuilder,ElementBuilder),_.extend(CheckBoxBuilder.prototype,{createElement:function(e){return new CheckBox(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e)}},editorBaseBuilderMixin),window.InfinniUI.DataGrid=DataGrid,_.inherit(DataGrid,ListEditorBase),DataGrid.prototype.getColumns=function(){return this.control.get("columns")},DataGrid.prototype.setShowSelectors=function(e){"undefined"!=typeof e&&null!==e&&this.control.set("showSelectors",!!e)},DataGrid.prototype.getShowSelectors=function(){return this.control.get("showSelectors")},DataGrid.prototype.createRow=function(){return new DataGridRow(this)},DataGrid.prototype.setEnabled=function(e){_.isBoolean(e)&&this.control.setEnabled(e)},DataGrid.prototype.setCheckAllVisible=function(e){_.isBoolean(e)&&this.control.set("checkAllVisible",e)},DataGrid.prototype.getCheckAllVisible=function(){return this.control.get("checkAllVisible")},DataGrid.prototype.getCheckAll=function(){return this.control.get("checkAll")},DataGrid.prototype.onCheckAllChanged=function(e){this.control.onCheckAllChanged(this.createControlEventHandler(this,e))},DataGrid.prototype.createControl=function(){return new DataGridControl},DataGrid.prototype.onRowClick=function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onRowClick(n)},DataGrid.prototype.onRowDoubleClick=function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onRowDoubleClick(n)},window.InfinniUI.DataGridBuilder=DataGridBuilder,_.inherit(DataGridBuilder,ListEditorBaseBuilder),_.extend(DataGridBuilder.prototype,{createElement:function(e){return new DataGrid(e.parent)},applyMetadata:function(e){ListEditorBaseBuilder.prototype.applyMetadata.call(this,e);var t=e.metadata,n=e.element;n.setShowSelectors(t.ShowSelectors),n.setCheckAllVisible(t.CheckAllVisible),t.OnCheckAllChanged&&n.onCheckAllChanged(function(e,i){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnCheckAllChanged.Name||t.OnCheckAllChanged,i)}),t.OnRowClick&&n.onRowClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnRowClick.Name||t.OnRowClick,e)}),t.OnRowDoubleClick&&n.onRowDoubleClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnRowDoubleClick.Name||t.OnRowDoubleClick,e)}),this.applyColumnsMetadata(e)},applyColumnsMetadata:function(e){var t=e.metadata,n=e.element,i=n.getColumns();if(Array.isArray(t.Columns)){var o=t.Columns.map(function(t){return this.buildColumn(t,e)},this);i.reset(o)}},buildColumn:function(e,t){return this.columnBuilder.build(t.element,e,t)},buildItemProperty:function(e,t,n){function i(e,t,i){var a=n.basePathOfProperty||new BasePathOfProperty(""),l={element:e,parent:o,builder:n.builder,metadata:n.metadata,parentView:n.parentView};l.basePathOfProperty=a.buildChild("",t),r.initBindingToProperty(l,i)}var o=n.element,r=this;return function(t,n){var r=o.createRow();r.setGrid(o),["RowStyle","RowBackground","RowForeground","RowTextStyle"].forEach(i.bind(null,r,n.index));var a=o.getColumns(),l=a.toArray().map(function(i,o){var r=i.getCellTemplate(),a=r(e);return a.bind(i,t,n)});return r.setCellTemplates(l),r.setMultiSelect(o.getMultiSelect()),r.setShowSelectors(o.getShowSelectors()),r}}}),DataGridColumn.prototype.setHeader=function(e){this.setProperty("header",e)},DataGridColumn.prototype.getHeader=function(){return this.getProperty("header")},DataGridColumn.prototype.setCellTemplate=function(e){this.setProperty("cellTemplate",e)},DataGridColumn.prototype.getCellTemplate=function(){return this.getProperty("cellTemplate")},DataGridColumn.prototype.setCellSelector=function(e){this.setProperty("cellSelector",e)},DataGridColumn.prototype.getCellSelector=function(){return this.getProperty("cellSelector")},DataGridColumn.prototype.setHeaderTemplate=function(e){this.setProperty("cellHeaderTemplate",e)},DataGridColumn.prototype.getHeaderTemplate=function(){return this.getProperty("cellHeaderTemplate")},DataGridColumn.prototype.setWidth=function(e){this.setProperty("width",e)},DataGridColumn.prototype.getWidth=function(e){return this.getProperty("width")},DataGridColumn.prototype.setSortable=function(e){this.setProperty("sortable",e)},DataGridColumn.prototype.getSortable=function(){return this.getProperty("sortable")},DataGridColumn.prototype.isSortable=function(){return this.getSortable()},DataGridColumn.prototype.setSortDirection=function(e){this.setProperty("sortDirection",e)},DataGridColumn.prototype.getSortDirection=function(){return this.getProperty("sortDirection")},DataGridColumn.prototype.setSortFunction=function(e){this.setProperty("sortFunction",e)},DataGridColumn.prototype.getSortFunction=function(){return this.getProperty("sortFunction")},DataGridColumn.prototype.setIsHeaderTemplateEmpty=function(e){this.setProperty("isHeaderTemplateEmpty",e)},DataGridColumn.prototype.getIsHeaderTemplateEmpty=function(){return this.getProperty("isHeaderTemplateEmpty")},DataGridColumn.prototype.onSort=function(e){var t=function(t){e(t)};this.on("onSort",t)},DataGridColumn.prototype.onPropertyChanged=function(e,t){this.on("change:"+e,t)},DataGridColumn.prototype.setProperty=function(e,t){var n=this._values[e];this._values[e]=t,n!==t&&this.trigger("change:"+e,null,{property:e,oldValue:n,newValue:t})},DataGridColumn.prototype.getProperty=function(e){return this._values[e]},_.extend(DataGridColumn.prototype,Backbone.Events),_.extend(DataGridColumnBuilder.prototype,displayFormatBuilderMixin),DataGridColumnBuilder.prototype.build=function(e,t,n){var i=new DataGridColumn;return this.buildHeader(i,t,n).buildHeaderTemplate(i,t,n).buildCellTemplate(i,t,n).buildWidth(i,t),t.Sortable&&(i.setSortable(!0),i.setSortDirection(null),!t.SortedDefault||"asc"!==t.SortedDefault&&"desc"!==t.SortedDefault||i.setSortDirection(t.SortedDefault),t.SortFunction&&i.onSort(function(n){new ScriptExecutor(e.getScriptsStorage()).executeScript(t.SortFunction.Name||t.SortFunction,n)})),i},DataGridColumnBuilder.prototype.buildWidth=function(e,t){var n=t.Width;return null!==n&&"undefined"!=typeof n&&e.setWidth(n),this},DataGridColumnBuilder.prototype.buildHeader=function(e,t,n){if(t.Header&&"object"==typeof t.Header){var i=n.builder,o=i.buildType("PropertyBinding",t.Header,{parent:n.element,parentView:n.parentView,basePathOfProperty:n.basePathOfProperty});o.bindElement(e,"header")}else e.setHeader(t.Header);return this},DataGridColumnBuilder.prototype.buildCellTemplate=function(e,t,n){var i;if("CellTemplate"in t)i=this.buildCellTemplateByTemplate(n,t.CellTemplate);else if("CellFormat"in t)i=this.buildCellTemplateByFormat(n,t.CellFormat);else if("CellSelector"in t)i=this.buildCellTemplateBySelector(n,t.CellSelector);else{var o="CellProperty"in t?t.CellProperty:"";i=this.buildCellTemplateByDefault(n,o)}return e.setCellTemplate(i),this},DataGridColumnBuilder.prototype.buildCellTemplateByTemplate=function(e,t){var n=e.element,i=e.builder,o=e.basePathOfProperty||new BasePathOfProperty("");return function(r){return function(r,a){var l=a.index,s={parent:n,parentView:e.parentView};return s.basePathOfProperty=o.buildChild("",l),i.build(t,s)}}},DataGridColumnBuilder.prototype.buildCellTemplateByFormat=function(e,t){var n=e.element,i=(n.parent,this.buildDisplayFormat(t,e));return function(e){return function(t,n){var o=n.index,r=new Label(this),a=e.getSourceProperty(),l=e.getSource(),s=new DataBinding;return a=o.toString(),""!=e.getSourceProperty()&&(a=e.getSourceProperty()+"."+a),r.setDisplayFormat(i),s.bindSource(l,a),s.bindElement(r,"value"),r}}},DataGridColumnBuilder.prototype.buildCellTemplateBySelector=function(e,t){var n=e.element,i=n.parent;return function(){return function(e,n){var o=new Label(this),r=new ScriptExecutor(i.getScriptsStorage()),a=r.executeScript(t.Name||t,{value:n.item});return o.setText(a),o}}},DataGridColumnBuilder.prototype.buildCellTemplateByDefault=function(e,t){var n=e.element,i=n.parent;return function(e){return function(n,o){var r,a=o.index,l=new Label(i),s=e.getSource(),u=new DataBinding;return r=a.toString(),""!=e.getSourceProperty()&&(r=e.getSourceProperty()+"."+r),""!=t&&(r=r+"."+t),u.bindSource(s,r),u.bindElement(l,"value"),l}}},DataGridColumnBuilder.prototype.buildCellSelector=function(e,t,n){var i;if(t.CellSelector)i=function(e,i){var o=new ScriptExecutor(n.parent);return o.executeScript(t.CellSelector.Name||t.CellSelector,i)};else if(t.CellProperty){var o=t.CellProperty;i=function(e){return InfinniUI.ObjectUtils.getPropertyValue(e,o)}}else i=function(e){return e};return e.setCellSelector(i),this},DataGridColumnBuilder.prototype.buildHeaderTemplate=function(e,t,n){var i,o=t.HeaderTemplate;return"undefined"==typeof o||_.isEmpty(o)?(i=this.buildHeaderTemplateByDefault(n),e.setIsHeaderTemplateEmpty(!0)):(i=this.buildHeaderTemplateByMetadata(o,n),e.setIsHeaderTemplateEmpty(!1)),e.setHeaderTemplate(i),this},DataGridColumnBuilder.prototype.buildHeaderTemplateByMetadata=function(e,t){var n=t.element,i=t.builder;return function(o,r){var a={parent:n,parentView:t.parentView};return i.build(e,a)}},DataGridColumnBuilder.prototype.buildHeaderTemplateByDefault=function(e){return function(e,t){var n=new Label(this);return n.setText(t.value),n}},window.InfinniUI.ComboBox=ComboBox,_.inherit(ComboBox,ListEditorBase),_.extend(ComboBox.prototype,labelTextElementMixin),ComboBox.prototype.createControl=function(){return new ComboBoxControl},ComboBox.prototype.setValueTemplate=function(e){this.control.set("valueTemplate",e)},ComboBox.prototype.getValueTemplate=function(){return this.control.get("valueTemplate")},ComboBox.prototype.getAutocomplete=function(){return this.control.get("autocomplete")},ComboBox.prototype.setAutocomplete=function(e){"boolean"==typeof e&&this.control.set("autocomplete",e)},ComboBox.prototype.setShowClear=function(e){"boolean"==typeof e&&this.control.set("showClear",e)},ComboBox.prototype.getShowClear=function(){return this.control.get("showClear")},ComboBox.prototype.getAutocompleteValue=function(){return this.control.get("autocompleteValue")},ComboBox.prototype.setAutocompleteValue=function(e){this.control.set("autocompleteValue",e)},window.InfinniUI.ComboBoxBuilder=ComboBoxBuilder,_.inherit(ComboBoxBuilder,ListEditorBaseBuilder),_.extend(ComboBoxBuilder.prototype,{createElement:function(e){return new ComboBox(e.parent)},applyMetadata:function(e){var t=e.element,n=this,i=ListEditorBaseBuilder.prototype.applyMetadata.call(this,e);if(this.initValueTemplate(i.valueBinding,e),this.initBindingToProperty(e,"LabelText"),t.setAutocomplete(e.metadata.Autocomplete),t.setShowClear(e.metadata.ShowClear),e.metadata.Autocomplete){var o=t.getName();o||(o=n.generateName(),t.setName(o))}},initValueTemplate:function(e,t){var n,i=t.metadata,o=t.element;n="ValueTemplate"in i?this.buildValueTemplate(i.ValueTemplate,t):"ValueFormat"in i?this.buildValueTemplateByFormat(e,i.ValueFormat,t):this.buildValueTemplateByDefault(e,t),o.setValueTemplate(n)},buildValueTemplate:function(e,t){var n=(t.element,t.builder),i=t.basePathOfProperty||new BasePathOfProperty("");return function(o,r){var a,l=r.index,s={parent:t.element,parentView:t.parentView};return void 0!==l&&null!==l&&(a=l,void 0!==a&&null!==a?s.basePathOfProperty=i.buildChild("",a):s.basePathOfProperty=i.buildChild("",l)),n.build(e,s)}},buildValueTemplateByFormat:function(e,t,n){var i=this.buildDisplayFormat(t,n);return function(e,t){var n=(t.index,t.value),o=new Label(this);return o.setHorizontalAlignment("Left"),o.setDisplayFormat(i),o.setValue(n),o}},buildValueTemplateByDefault:function(e,t){return function(e,t){var n=(t.index,t.value),i=new Label(this);return i.setHorizontalAlignment("Left"),i.setValue(n),i}},generateName:function(){return"combobox-"+guid()}}),window.InfinniUI.ContextMenu=ContextMenu,_.inherit(ContextMenu,Container),_.extend(ContextMenu.prototype,{createControl:function(){return new ContextMenuControl}}),window.InfinniUI.ContextMenuBuilder=ContextMenuBuilder,_.inherit(ContextMenuBuilder,ContainerBuilder),_.extend(ContextMenuBuilder.prototype,{createElement:function(e){return new ContextMenu(e.parent)},applyMetadata:function(e){ContainerBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.DataNavigation=DataNavigation,_.inherit(DataNavigation,Element),_.extend(DataNavigation.prototype,{createControl:function(){return new DataNavigationControl},getDataSource:function(){return this.control.get("dataSource")},setDataSource:function(e){this.control.set("dataSource",e)},getAvailablePageSizes:function(){return this.control.get("availablePageSizes")},setPageNumber:function(e){this.control.set("pageNumber",e)},getPageNumber:function(){return this.control.get("pageNumber")},onPageNumberChanged:function(e){this.control.onPageNumberChanged(this.createControlEventHandler(this,e))},setPageSize:function(e){this.control.set("pageSize",e)},getPageSize:function(){return this.control.get("pageSize")},onPageSizeChanged:function(e){this.control.onPageSizeChanged(this.createControlEventHandler(this,e))},getPageCount:function(){return this.control.get("pageCount")},setPageCount:function(e){this.control.set("pageCount",e)},getIsDataReady:function(){return this.control.get("isDataReady")},setIsDataReady:function(e){this.control.set("isDataReady",e)}}),window.InfinniUI.DataNavigationBuilder=DataNavigationBuilder,_.inherit(DataNavigationBuilder,ElementBuilder),_.extend(DataNavigationBuilder.prototype,{createElement:function(e){return new DataNavigation(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t,n=e.element,i=e.metadata,o=this;Array.isArray(i.AvailablePageSizes)&&n.getAvailablePageSizes().reset(i.AvailablePageSizes);var r=this.findDataSource(e);r?(t=r.getProperty(".pageSize"),n.setDataSource(r),n.setPageSize(t),r.onItemsUpdated(function(){o.onDataUpdated(n,r)}),r.isDataReady()&&this.onDataUpdated(n,r),n.onPageNumberChanged(function(e,t){r.setProperty(".pageNumber",t.value)}),n.onPageSizeChanged(function(e,t){r.setProperty(".pageSize",t.value)})):console.error("DataSource not found")},onDataUpdated:function(e,t){var n,i=t.getProperty(".totalCount"),o=t.getProperty(".pageSize"),r=t.getProperty(".pageNumber");"number"==typeof i&&(n=Math.ceil(i/o),e.setPageCount(n)),e.setPageNumber(r),e.setIsDataReady(!0)},findDataSource:function(e){var t,n,i=e.metadata.DataSource,o=e.parentView;return i&&o&&(t=o.getContext(),n=t.dataSources[i]),n}}),window.InfinniUI.ButtonEdit=ButtonEdit,_.inherit(ButtonEdit,TextBox),ButtonEdit.prototype.createControl=function(e){return new ButtonEditControl(e)},ButtonEdit.prototype.setIcon=function(e){e&&e.toLowerCase&&(e=e.toLowerCase()),this.control.set("icon",e)},ButtonEdit.prototype.getIcon=function(){return this.control.get("icon")},ButtonEdit.prototype.setReadOnly=function(e){"undefined"!=typeof e&&null!==e&&this.control.set("readOnly",!!e)},ButtonEdit.prototype.getReadOnly=function(){return this.control.get("readOnly")},ButtonEdit.prototype.setShowClear=function(e){"undefined"!=typeof e&&null!==e&&this.control.set("showClear",!!e)},ButtonEdit.prototype.getShowClear=function(){return this.control.get("showClear")},ButtonEdit.prototype.onButtonClick=function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onButtonClick(n)},window.InfinniUI.ButtonEditBuilder=ButtonEditBuilder,_.inherit(ButtonEditBuilder,TextBoxBuilder),ButtonEditBuilder.prototype.createElement=function(e){return new ButtonEdit(e.parent)},ButtonEditBuilder.prototype.applyMetadata=function(e){TextBoxBuilder.prototype.applyMetadata.call(this,e),this.initBindingToProperty(e,"Icon"),this.initBindingToProperty(e,"ReadOnly",!0),this.initBindingToProperty(e,"ShowClear",!0),this.buildOnButtonClick(e),this.buildButtonAction(e)},ButtonEditBuilder.prototype.buildButtonAction=function(e){var t=e.element,n=e.metadata,i=e.builder;if(n.Action){var o={parentView:e.parentView,parent:t,basePathOfProperty:e.basePathOfProperty},r=i.build(n.Action,o);t.onButtonClick(function(){r.execute()})}},ButtonEditBuilder.prototype.buildOnButtonClick=function(e){var t=e.element,n=e.metadata,i=n.OnButtonClick;i&&t.onButtonClick(function(e){new ScriptExecutor(t.getScriptsStorage()).executeScript(i.Name||i,e)})},window.InfinniUI.Divider=Divider,_.inherit(Divider,Element),Divider.prototype.createControl=function(e){return new DividerControl(e)},window.InfinniUI.DividerBuilder=DividerBuilder,_.inherit(DividerBuilder,ElementBuilder),DividerBuilder.prototype.createElement=function(e){return new Divider(e.parent)},DividerBuilder.prototype.applyMetadata=function(e){ElementBuilder.prototype.applyMetadata.call(this,e)},window.InfinniUI.FileBox=FileBox,_.inherit(FileBox,Element),_.extend(FileBox.prototype,{getFile:function(){return this.control.get("file")},createControl:function(){return new FileBoxControl},getMaxSize:function(){return this.control.get("maxSize")},setMaxSize:function(e){this.control.set("maxSize",e)},getAcceptTypes:function(){return this.control.get("acceptTypes")},setAcceptTypes:function(e){var t=this.getAcceptTypes();Array.isArray(e)&&t.set(e)},setFile:function(e){this.control.set("file",e)},setFileName:function(e){return this.control.set("fileName",e),this},setFileSize:function(e){return this.control.set("fileSize",e),this},setFileTime:function(e){return this.control.set("fileTime",e),this},setFileType:function(e){return this.control.set("fileType",e),this}},editorBaseMixin,labelTextElementMixin),window.InfinniUI.FileBoxBuilder=FileBoxBuilder,_.inherit(FileBoxBuilder,ElementBuilder),_.extend(FileBoxBuilder.prototype,{createElement:function(e){return new FileBox(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata;Array.isArray(n.AcceptTypes)&&t.setAcceptTypes(n.AcceptTypes),null!==n.MaxSize&&"undefined"!=typeof n.MaxSize&&t.setMaxSize(n.MaxSize),this.initBindingToProperty(e,"LabelText");var i=new FileBoxValueConverter(t),o=this.applyMetadata_editorBaseBuilder(e,{mode:InfinniUI.BindingModes.toElement,converter:i}),r=o.valueBinding;if(r){var a=r.getSource();e.element.onPropertyChanged("file",function(e,t){var n=t.newValue;null===n?a.setProperty(r.getSourceProperty(),null):n instanceof File&&a.setProperty(r.getSourceProperty(),t.newValue)})}}},editorBaseBuilderMixin),window.InfinniUI.FileBoxValueConverter=FileBoxValueConverter,FileBoxValueConverter.prototype.toElement=function(e,t){var n=t.value,i=t.binding,o=i.getSource(),r=o.getFileProvider(),a=null;return n&&(r&&InfinniUI.BlobUtils.isFileInfo(n)?(a=r.getFileUrl(null,null,InfinniUI.BlobUtils.getContentId(n)),this._element.setFileName(InfinniUI.BlobUtils.getName(n)).setFileSize(InfinniUI.BlobUtils.getSize(n)).setFileTime(InfinniUI.BlobUtils.getTime(n)).setFileType(InfinniUI.BlobUtils.getType(n))):a="string"==typeof n?n:n),a},window.InfinniUI.ExtensionPanel=ExtensionPanel,_.inherit(ExtensionPanel,Container),_.extend(ExtensionPanel.prototype,{createControl:function(){var e=new ExtensionPanelControl;return e},setExtensionName:function(e){return this.control.set("extensionName",e)},setParameters:function(e){return this.control.set("parameters",e)},getParameters:function(){return this.control.get("parameters")},setContext:function(e){this.control.set("context",e)},setBuilder:function(e){this.control.set("builder",e)}}),window.InfinniUI.ExtensionPanelBuilder=ExtensionPanelBuilder,_.inherit(ExtensionPanelBuilder,ContainerBuilder),_.extend(ExtensionPanelBuilder.prototype,{applyMetadata:function(e){var t=e.metadata,n=e.element,i=e.parentView,o=e.builder;ContainerBuilder.prototype.applyMetadata.call(this,e),n.setExtensionName(t.ExtensionName);var r={};_.each(t.Parameters,function(t){var n=o.buildType("Parameter",t,{parentView:i,basePathOfProperty:e.basePathOfProperty});r[n.getName()]=n}),n.setParameters(r),n.setContext(i.getContext()),n.setBuilder(o)},createElement:function(e){var t=new ExtensionPanel(e.parent);return t}}),window.InfinniUI.Form=Form,_.inherit(Form,StackPanel),Form.prototype.createControl=function(e){return new FormControl(e)},Form.prototype.onSubmit=function(e){var t=function(t){e(t)};return this.control.onSubmit(t)},Form.prototype.setSubmitFunction=function(e){this.control.setSubmitFunction(e)},Form.prototype.getSubmitFunction=function(){return this.control.getSubmitFunction()},Form.prototype.setMethod=function(e){this.control.setMethod(e)},Form.prototype.getMethod=function(){return this.control.getMethod()},Form.prototype.setAction=function(e){this.control.setAction(e)},Form.prototype.getAction=function(){return this.control.getAction()},window.InfinniUI.FormBuilder=FormBuilder,_.inherit(FormBuilder,StackPanelBuilder),_.extend(FormBuilder.prototype,{createElement:function(e){return new Form(e.parent)},applyMetadata:function(e){var t=e.element,n=e.metadata;StackPanelBuilder.prototype.applyMetadata.call(this,e),n.OnSubmit&&t.onSubmit(function(){return new ScriptExecutor(t.getScriptsStorage()).executeScript(n.OnSubmit.Name||n.OnSubmit)}),n.Method&&t.setMethod(n.Method),n.Action&&t.setAction(n.Action)}}),window.InfinniUI.Frame=Frame,_.inherit(Frame,Element),_.extend(Frame.prototype,{createControl:function(){return new FrameControl}},editorBaseMixin),window.InfinniUI.FrameBuilder=FrameBuilder,_.inherit(FrameBuilder,TextEditorBaseBuilder),_.extend(FrameBuilder.prototype,{applyMetadata:function(e){e.element;ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e)},createElement:function(e){var t=new Frame(e.parent);return t}},editorBaseBuilderMixin),window.InfinniUI.GridPanel=GridPanel,_.inherit(GridPanel,Container),_.extend(GridPanel.prototype,{createControl:function(){return new GridPanelControl}}),window.InfinniUI.GridPanelBuilder=GridPanelBuilder,_.inherit(GridPanelBuilder,ContainerBuilder),_.extend(GridPanelBuilder.prototype,{createElement:function(e){return new GridPanel(e.parent)},applyMetadata:function(e){e.metadata,e.element;ContainerBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.Icon=Icon,_.inherit(Icon,Element),_.extend(Icon.prototype,{createControl:function(){return new IconControl},setValue:function(e){this.control.set("value",e)},getValue:function(){return this.control.get("value")},onValueChanged:function(){}}),window.InfinniUI.IconBuilder=IconBuilder,_.inherit(IconBuilder,ElementBuilder),_.extend(IconBuilder.prototype,{createElement:function(e){return new Icon(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);e.metadata;this.initBindingToProperty(e,"Value")}}),window.InfinniUI.ImageBox=ImageBox,_.inherit(ImageBox,Element),_.extend(ImageBox.prototype,{getFile:function(){return this.control.get("file")},createControl:function(){return new ImageBoxControl},getMaxSize:function(){return this.control.get("maxSize")},setMaxSize:function(e){this.control.set("maxSize",e)},getAcceptTypes:function(){return this.control.get("acceptTypes")},setAcceptTypes:function(e){var t=this.getAcceptTypes();Array.isArray(e)&&t.set(e)}},editorBaseMixin),window.InfinniUI.ImageBoxBuilder=ImageBoxBuilder,_.inherit(ImageBoxBuilder,ElementBuilder),_.extend(ImageBoxBuilder.prototype,{createElement:function(e){return new ImageBox(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata;Array.isArray(n.AcceptTypes)&&t.setAcceptTypes(n.AcceptTypes),null!==n.MaxSize&&"undefined"!=typeof n.MaxSize&&t.setMaxSize(n.MaxSize);var i=new ImageBoxValueConverter(t),o=this.applyMetadata_editorBaseBuilder(e,{mode:InfinniUI.BindingModes.toElement,converter:i}),r=o.valueBinding;if(r){var a=r.getSource();e.element.onPropertyChanged("file",function(e,t){var n=t.newValue;(n instanceof File||null===n)&&a.setProperty(r.getSourceProperty(),t.newValue)})}}},editorBaseBuilderMixin),ImageBoxValueConverter.prototype.toElement=function(e,t){var n=t.value,i=t.binding,o=i.getSource(),r=o.getFileProvider(),a=null;return n&&(a=r&&InfinniUI.BlobUtils.isFileInfo(n)?r.getFileUrl(null,null,InfinniUI.BlobUtils.getContentId(n)):"string"==typeof n?n:n),a},window.InfinniUI.IndeterminateCheckBox=IndeterminateCheckBox,_.inherit(IndeterminateCheckBox,CheckBox),_.extend(IndeterminateCheckBox.prototype,{createControl:function(e){return new IndeterminateCheckBoxControl(e)}},editorBaseMixin),window.InfinniUI.IndeterminateCheckBoxBuilder=IndeterminateCheckBoxBuilder,_.inherit(IndeterminateCheckBoxBuilder,CheckBoxBuilder),_.extend(IndeterminateCheckBoxBuilder.prototype,{createElement:function(e){return new IndeterminateCheckBox(e.parent)}}),window.InfinniUI.Label=Label,_.inherit(Label,Element),_.extend(Label.prototype,{createControl:function(){return new LabelControl},setTextWrapping:function(e){"boolean"==typeof e&&this.control.set("textWrapping",e)},getTextWrapping:function(){return this.control.get("textWrapping")},setTextTrimming:function(e){"boolean"==typeof e&&this.control.set("textTrimming",e)},getTextTrimming:function(){return this.control.get("textTrimming")},getDisplayFormat:function(){return this.control.get("displayFormat")},setDisplayFormat:function(e){return this.control.set("displayFormat",e)},getDisplayValue:function(){return this.control.getDisplayValue()},getEscapeHtml:function(){return this.control.get("escapeHtml")},setEscapeHtml:function(e){_.isBoolean(e)&&this.control.set("escapeHtml",e)}},editorBaseMixin),window.InfinniUI.LabelBuilder=LabelBuilder,_.inherit(LabelBuilder,ElementBuilder),_.extend(LabelBuilder.prototype,{applyMetadata:function(e){var t=e.element;ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e),t.setTextWrapping(e.metadata.TextWrapping),t.setTextTrimming(e.metadata.TextTrimming),t.setEscapeHtml(e.metadata.EscapeHtml),this.initDisplayFormat(e),this.initScriptsHandlers(e)},initDisplayFormat:function(e){var t=e.metadata,n=this.buildDisplayFormat(t.DisplayFormat,e);e.element.setDisplayFormat(n)},initScriptsHandlers:function(e){var t=e.metadata;e.view&&t.OnLoaded&&e.element.onLoaded(function(){new ScriptExecutor(e.view).executeScript(t.OnLoaded.Name||t.OnLoaded)}),e.view&&t.OnValueChanged&&e.element.onValueChanged(function(){new ScriptExecutor(e.view).executeScript(t.OnValueChanged.Name||t.OnValueChanged)})},createElement:function(e){var t=new Label(e.parent,e.metadata.ViewMode);return t.getHeight=function(){return 34},t}},editorBaseBuilderMixin,displayFormatBuilderMixin),window.InfinniUI.Link=Link,_.inherit(Link,Button),Link.prototype.createControl=function(){return new LinkElementControl},Link.prototype.setHref=function(e){this.control.set("href",e)},Link.prototype.getHref=function(){return this.control.get("href")},Link.prototype.setTarget=function(e){this.control.set("target",e)},Link.prototype.getTarget=function(){return this.control.get("target")},window.InfinniUI.LinkBuilder=LinkBuilder,_.inherit(LinkBuilder,ButtonBuilder),_.extend(LinkBuilder.prototype,routerServiceMixin,{createElement:function(e){return new Link(e.parent)},applyMetadata:function(e){ButtonBuilder.prototype.applyMetadata.call(this,e);var t=e.metadata,n=e.element;if(t.Href&&"string"==typeof t.Href)n.setHref(t.Href);else if(t.Href){var i=t.Href.Name,o=t.Href.Params,r=t.Href.Query,a=routerService.getLinkByName(i,"no"),l=a;if(n.setHref(l),o)for(var s=0,u=o.length;u>s;s+=1)"string"==typeof o[s].Value?(n.getHref()!==l&&(l=n.getHref()),l=this.replaceParamsInHref(l,o[s].Name,o[s].Value),n.setHref(l)):this.bindParams(e,o[s].Name,o[s].Value,l);if(r)for(var s=0,u=r.length;u>s;s+=1)"string"==typeof r[s].Value?(n.getHref()!==l&&(l=n.getHref()),l=this.replaceParamsInQuery(l,r[s].Name,r[s].Value),n.setHref(l)):this.bindQuery(e,r[s].Name,r[s].Value,l)}t.Target&&n.setTarget(t.Target)}}),window.InfinniUI.MenuBar=MenuBar,_.inherit(MenuBar,Container),_.extend(MenuBar.prototype,{createControl:function(e){return new MenuBarControl(e)},highlightItem:function(e){!function(t){var n=t.getChildElements();n.forEach(function(t){var n=_.isString(e)&&t.getName()===e,i=t.control;i&&i.setHighlight(n)})}(this)}}),window.InfinniUI.MenuBarBuilder=MenuBarBuilder,_.inherit(MenuBarBuilder,ContainerBuilder),_.extend(MenuBarBuilder.prototype,{createElement:function(e){return new MenuBar(e.parent)}}),window.InfinniUI.NumericBox=NumericBox,_.inherit(NumericBox,TextEditorBase),NumericBox.prototype.createControl=function(e){return new NumericBoxControl(e); -},NumericBox.prototype.getMinValue=function(){return this.control.get("minValue")},NumericBox.prototype.setMinValue=function(e){this.control.set("minValue",e)},NumericBox.prototype.getMaxValue=function(){return this.control.get("maxValue")},NumericBox.prototype.setMaxValue=function(e){this.control.set("maxValue",e)},NumericBox.prototype.getIncrement=function(){return this.control.get("increment")},NumericBox.prototype.setIncrement=function(e){this.control.set("increment",e)},NumericBox.prototype.setStartValue=function(e){this.control.set("startValue",e)},NumericBox.prototype.validateValue=function(e){var t,n=this.getMinValue(),i=this.getMaxValue();return e=this.convertValue(e),null===e||"undefined"==typeof e?t:(_.isNumber(e)?_.isNumber(n)?_.isNumber(i)?(n>e||e>i)&&(t="Значение должно быть от "+n+" до "+i):n>e&&(t="Значение должно быть больше "+n):_.isNumber(i)&&e>i&&(t="Значение должно быть меьше "+i):t="Значение должно быть числом",t)},NumericBox.prototype.convertValue=function(e){var t=null===e||""===e||"undefined"==typeof e?null:+e;return _.isNumber(t)?t:null},NumericBox.prototype.getStartValue=function(){return this.control.get("startValue")},window.InfinniUI.NumericBoxBuilder=NumericBoxBuilder,_.inherit(NumericBoxBuilder,TextEditorBaseBuilder),NumericBoxBuilder.prototype.createElement=function(e){return new NumericBox(e.parent)},NumericBoxBuilder.prototype.applyMetadata=function(e){TextEditorBaseBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata;t.setMinValue(n.MinValue),t.setMaxValue(n.MaxValue),t.setIncrement(n.Increment),t.setStartValue(n.StartValue)},window.InfinniUI.Panel=Panel,_.inherit(Panel,Container),Panel.prototype.getCollapsible=function(){return this.control.get("collapsible")},Panel.prototype.setCollapsible=function(e){"undefined"!=typeof e&&this.control.set("collapsible",!!e)},Panel.prototype.getCollapsed=function(){return this.control.get("collapsed")},Panel.prototype.setCollapsed=function(e){"undefined"!=typeof e&&this.control.set("collapsed",!!e)},Panel.prototype.getHeaderTemplate=function(){return this.control.get("headerTemplate")},Panel.prototype.setHeaderTemplate=function(e){this.control.set("headerTemplate",e)},Panel.prototype.getHeader=function(){return this.control.get("header")},Panel.prototype.setHeader=function(e){this.control.set("header",e)},Panel.prototype.getCollapsibleArea=function(){return this.control.get("collapsibleArea")},Panel.prototype.setCollapsibleArea=function(e){this.control.set("collapsibleArea",e)},Panel.prototype.onExpanding=function(e){this.control.on("expanding",e)},Panel.prototype.onExpanded=function(e){this.control.on("expanded",e)},Panel.prototype.onCollapsing=function(e){this.control.on("collapsing",e)},Panel.prototype.onCollapsed=function(e){this.control.on("collapsed",e)},Panel.prototype.createControl=function(){return new PanelControl},window.InfinniUI.PanelBuilder=PanelBuilder,_.inherit(PanelBuilder,ContainerBuilder),_.extend(PanelBuilder.prototype,{createElement:function(e){return new Panel(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);n.setCollapsible(t.Collapsible),n.setCollapsed(t.Collapsed),n.setCollapsibleArea(t.CollapsibleArea);var o=this.buildHeaderTemplate(t.HeaderTemplate,e);if(n.setHeaderTemplate(o),t.Header&&"object"==typeof t.Header){var r=e.builder,a=r.buildType("PropertyBinding",t.Header,{parent:n,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty});a.bindElement(n,"header")}else n.setHeader(t.Header);return this.initEventHandler(e),i},initEventHandler:function(e){function t(){return new ScriptExecutor(e.parentView)}var n=e.metadata,i=e.element;n.OnExpanding&&i.onExpanding(function(e,i){return t().executeScript(n.OnExpanding.Name||n.OnExpanding,i)}),n.OnExpanded&&i.onExpanded(function(e,i){return t().executeScript(n.OnExpanded.Name||n.OnExpanded,i)}),n.OnCollapsing&&i.onCollapsing(function(e,i){return t().executeScript(n.OnCollapsing.Name||n.OnCollapsing,i)}),n.OnCollapsed&&i.onCollapsed(function(e,i){return t().executeScript(n.OnCollapsed.Name||n.OnCollapsed,i)})},buildHeaderTemplate:function(e,t){var n;return n="undefined"==typeof e||_.isEmpty(e)?this.buildDefaultHeaderTemplate(t):this.buildMetadataHeaderTemplate(e,t)},buildDefaultHeaderTemplate:function(e){return function(e,t){var n=new Label(this);return n.setText(t.value),n}},buildMetadataHeaderTemplate:function(e,t){var n=t.element,i=t.builder;return function(o,r){var a={parent:n,parentView:t.parentView,basePathOfProperty:t.basePathOfProperty};return i.build(e,a)}}}),window.InfinniUI.PasswordBox=PasswordBox,_.inherit(PasswordBox,Element),_.extend(PasswordBox.prototype,{setAutocomplete:function(e){"undefined"!=typeof e&&null!==e&&this.control.set("autocomplete",!!e)},getAutocomplete:function(){return this.control.get("autocomplete")},createControl:function(){return new PasswordBoxControl},getRawValue:function(){return this.control.get("rawValue")}},editorBaseMixin,labelTextElementMixin),window.InfinniUI.PasswordBoxBuilder=PasswordBoxBuilder,_.inherit(PasswordBoxBuilder,ElementBuilder),_.extend(PasswordBoxBuilder.prototype,{applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e);var t=e.metadata,n=e.element;this.initBindingToProperty(e,"LabelText"),n.setAutocomplete(t.Autocomplete)},createElement:function(e){var t=new PasswordBox(e.parent);return t}},editorBaseBuilderMixin),window.InfinniUI.PopupButton=PopupButton,_.inherit(PopupButton,Container),_.extend(PopupButton.prototype,{createControl:function(e){return new PopupButtonControl(e)}},buttonMixin),window.InfinniUI.PopupButtonBuilder=PopupButtonBuilder,_.inherit(PopupButtonBuilder,ContainerBuilder),_.extend(PopupButtonBuilder.prototype,{createElement:function(e){var t=this.detectViewMode(e);return new PopupButton(e.parent,t)},detectViewMode:function(e){var t=e.metadata.ViewMode,n=e.parent,i=!1;if(!t)for(;!i;)n?n instanceof MenuBar?(t="forMenu",i=!0):n=n.parent:i=!0;return t},applyMetadata:function(e){ContainerBuilder.prototype.applyMetadata.call(this,e),this.applyButtonMetadata.call(this,e)}},buttonBuilderMixin),window.InfinniUI.RadioGroupBuilder=RadioGroupBuilder,_.inherit(RadioGroupBuilder,ListBoxBuilder),_.extend(RadioGroupBuilder.prototype,{createElement:function(e){var t=e.metadata.ViewMode||"checking";return new ListBox(e.parent,t)},applyMetadata:function(e){var t=e.element;ListBoxBuilder.prototype.applyMetadata.call(this,e),t.setMultiSelect(!1)}}),window.InfinniUI.ScrollPanel=ScrollPanel,_.inherit(ScrollPanel,Container),ScrollPanel.prototype.getHorizontalScroll=function(){return this.control.get("horizontalScroll")},ScrollPanel.prototype.setHorizontalScroll=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.ScrollVisibility)&&this.control.set("horizontalScroll",e)},ScrollPanel.prototype.getVerticalScroll=function(){return this.control.get("verticalScroll")},ScrollPanel.prototype.setVerticalScroll=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.ScrollVisibility)&&this.control.set("verticalScroll",e)},ScrollPanel.prototype.createControl=function(){return new ScrollPanelControl},window.InfinniUI.ScrollPanelBuilder=ScrollPanelBuilder,_.inherit(ScrollPanelBuilder,ContainerBuilder),_.extend(ScrollPanelBuilder.prototype,{createElement:function(e){return new ScrollPanel(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setHorizontalScroll(t.HorizontalScroll),n.setVerticalScroll(t.VerticalScroll),i}}),window.InfinniUI.TablePanel=TablePanel,_.inherit(TablePanel,Container),_.extend(TablePanel.prototype,{createControl:function(){return new TablePanelControl}}),window.InfinniUI.TablePanelBuilder=TablePanelBuilder,_.inherit(TablePanelBuilder,ContainerBuilder),_.extend(TablePanelBuilder.prototype,{createElement:function(e){return new TablePanel(e.parent)},applyMetadata:function(e){e.metadata,e.element;ContainerBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.TabPanel=TabPanel,_.inherit(TabPanel,Container),TabPanel.prototype.getHeaderLocation=function(){return this.control.get("headerLocation")},TabPanel.prototype.setHeaderLocation=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.TabHeaderLocation)&&this.control.set("headerLocation",e)},TabPanel.prototype.getHeaderOrientation=function(){return this.control.get("headerOrientation")},TabPanel.prototype.setHeaderOrientation=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.TabHeaderOrientation)&&this.control.set("headerOrientation",e)},TabPanel.prototype.setHeaderTemplate=function(e){this.control.set("headerTemplate",e)},TabPanel.prototype.getHeaderTemplate=function(){return this.control.get("headerTemplate")},TabPanel.prototype.setSelectedItem=function(e){return this.control.setSelectedItem(e)},TabPanel.prototype.getSelectedItem=function(){return this.control.get("selectedItem")},TabPanel.prototype.onSelectedItemChanged=function(e){this.control.on("change:selectedItem",e)},TabPanel.prototype.closeTab=function(e){var t=this.childElements.indexOf(e);if(-1===t)throw new Error("TabPage not found in TabPanel.childElements");this.getItems().removeAt(t)},TabPanel.prototype.createControl=function(){return new TabPanelControl},window.InfinniUI.TabPanelBuilder=TabPanelBuilder,_.inherit(TabPanelBuilder,ContainerBuilder),_.extend(TabPanelBuilder.prototype,{createElement:function(e){return new TabPanel(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setHeaderLocation(t.HeaderLocation),n.setHeaderOrientation(t.HeaderOrientation),this.initScriptHandlers(e),i},initScriptHandlers:function(e){var t=e.metadata,n=e.element;n.onSelectedItemChanged(function(e,t){var n=window.InfinniUI.global.messageBus;n.send("OnChangeLayout",{})}),t.OnSelectedItemChanged&&n.onSelectedItemChanged(function(n,i){return new ScriptExecutor(e.parentView).executeScript(t.OnSelectedItemChanged.Name||t.OnSelectedItemChanged,i)})}}),window.InfinniUI.ToggleButton=ToggleButton,_.inherit(ToggleButton,Element),_.extend(ToggleButton.prototype,{createControl:function(e){return new ToggleButtonControl(e)},getTextOn:function(){return this.control.get("textOn")},setTextOn:function(e){return this.control.set("textOn",e?e:"")},getTextOff:function(){return this.control.get("textOff")},setTextOff:function(e){return this.control.set("textOff",e?e:"")}},editorBaseMixin),window.InfinniUI.ToggleButtonBuilder=ToggleButtonBuilder,_.inherit(ToggleButtonBuilder,ElementBuilder),_.extend(ToggleButtonBuilder.prototype,{createElement:function(e){return new ToggleButton(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e);var t=e.element,n=e.metadata;t.setTextOff(n.TextOff),t.setTextOn(n.TextOn)}},editorBaseBuilderMixin);var ToolBar=function(e){_.superClass(ToolBar,this,e)};window.InfinniUI.ToolBar=ToolBar,_.inherit(ToolBar,Container),ToolBar.prototype.createControl=function(){return new ToolBarControl},window.InfinniUI.ToolBarBuilder=ToolBarBuilder,_.inherit(ToolBarBuilder,ContainerBuilder),_.extend(ToolBarBuilder.prototype,{createElement:function(e){return new ToolBar(e.parent)}}),window.InfinniUI.TreeView=TreeView,_.inherit(TreeView,ListEditorBase),TreeView.prototype.createControl=function(){return new TreeViewControl},TreeView.prototype.getKeySelector=function(){return this.control.get("keySelector")},TreeView.prototype.setKeySelector=function(e){this.control.set("keySelector",e)},TreeView.prototype.getParentSelector=function(){return this.control.get("parentSelector")},TreeView.prototype.setParentSelector=function(e){this.control.set("parentSelector",e)},window.InfinniUI.TreeViewBuilder=TreeViewBuilder,_.inherit(TreeViewBuilder,ListEditorBaseBuilder),_.extend(TreeViewBuilder.prototype,{createElement:function(e){return new TreeView(e.parent)},applyMetadata:function(e){ListEditorBaseBuilder.prototype.applyMetadata.call(this,e);this._initKeySelector(e),this._initParentSelector(e)},_initKeySelector:function(e){var t,n=e.element,i=e.metadata;t=i.KeySelector?function(e,t){var o=new ScriptExecutor(n.getScriptsStorage());return o.executeScript(i.KeySelector.Name||i.KeySelector,t)}:i.KeyProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,i.KeyProperty)}:function(e,t){return t.value},n.setKeySelector(t)},_initParentSelector:function(e){var t,n=e.element,i=e.metadata;t=i.ParentSelector?function(e,t){var o=new ScriptExecutor(n.getScriptsStorage());return o.executeScript(i.ParentSelector.Name||i.ParentSelector,t)}:i.ParentProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,i.ParentProperty)}:function(e,t){return t.value},n.setParentSelector(t)}}),window.InfinniUI.View=View,_.inherit(View,Container),_.extend(View.prototype,{isView:!0,_initDataSourceHandlers:function(){var e=this,t=this.getContext().dataSources,n=[];this.control.onLoaded(function(){for(var i in t)n.push(t[i].getCurrentRequestPromise());n.length>0?$.when.apply($,n).done(function(){e._notifyAboutDsReady()}):e._notifyAboutDsReady()})},_notifyAboutDsReady:function(){this.handlers.onBeforeLoaded.resolve(),this.handlers.onLoaded.resolve()},createControl:function(){return new ViewControl},_initContext:function(){this.context={view:this,scripts:{},parameters:{},dataSources:{},controls:{},messageBus:new MessageBus(this),global:InfinniUI.global};var e=this;this.control.get("scripts").onChange(function(){e.context.scripts={};var t=e.getScripts();t.forEach(function(t){e.context.scripts[t.name]=t.func})}),this.control.get("parameters").onChange(function(){e.context.parameters={};var t=e.getParameters();t.forEach(function(t){e.context.parameters[t.name]=t,e.registerMember(t.name,t)})}),this.control.get("dataSources").onChange(function(){e.context.dataSources={};var t=e.getDataSources();t.forEach(function(t){e.context.dataSources[t.get("name")]=t,e.registerMember(t.name,t)})})},getApplicationView:function(){var e=this.control.get("isApplication"),t=this.parent;return e?this:_.isEmpty(t)?null:t.getApplicationView()},isApplication:function(e){var t=this.control.get("isApplication");return _.isBoolean(e)&&this.control.set("isApplication",e),t},registerElement:function(e){this.context.controls[e.name]=e,this.registerMember(e.name,e)},getContext:function(){return this.context},getScripts:function(){return this.control.get("scripts")},getParameters:function(){return this.control.get("parameters")},getDataSources:function(){return this.control.get("dataSources")},getDialogResult:function(){return this.control.get("dialogResult")},setDialogResult:function(e){return this.control.set("dialogResult",e)},open:function(e,t){var n=this.getContext(),i=this._getScriptArgs();this.eventManager.trigger("onOpening",i,n)?(this.openStrategy.open(),this.eventManager.trigger("onOpened",i,n),e&&e(n,i)):t&&t(n,i)},close:function(e,t,n){if(!this.isClosing){this.isClosing=!0;var i=this.getContext(),o=this._getScriptArgs();n||this.eventManager.trigger("onClosing",o,i)?(this.eventManager.trigger("onClosed",o,i),this.openStrategy.close(),e&&e(i,o)):t&&t(i,o)}},getScriptsStorage:function(){return this},setOpenStrategy:function(e){this.openStrategy=e},onBeforeLoaded:function(e){this.handlers.onBeforeLoaded.done(e)},onLoaded:function(e){this.handlers.onLoaded.done(e)},onOpening:function(e){this.eventManager.on("onOpening",e)},onOpened:function(e){this.eventManager.on("onOpened",e)},onClosing:function(e){this.eventManager.on("onClosing",e)},onClosed:function(e){this.eventManager.on("onClosed",e)},_getScriptArgs:function(){return{source:this}},setHeaderTemplate:function(e){this.headerTemplate=e},getHeaderTemplate:function(){return this.headerTemplate},setCloseButtonVisibility:function(e){"boolean"==typeof e&&this.control.set("closeButtonVisibility",e)},getCloseButtonVisibility:function(){return this.control.get("closeButtonVisibility")},noDataSourceOnView:function(){this._initDataSourceHandlers()},registerMember:function(e,t){this.members[e]=t,e in this.membersDeferreds&&this.membersDeferreds[e].resolve(t)},getDeferredOfMember:function(e){if(!(e in this.membersDeferreds)&&(this.membersDeferreds[e]=$.Deferred(),this.members[e])){var t=this.members[e];this.membersDeferreds[e].resolve(t)}return this.membersDeferreds[e]},setFocusOnControl:function(e){this.control.set("focusOnControl",e)},getFocusOnControl:function(){return this.control.get("focusOnControl")}}),window.InfinniUI.ViewBuilder=ViewBuilder,_.inherit(ViewBuilder,ContainerBuilder),_.extend(ViewBuilder.prototype,{createElement:function(e){return new View(e.parent)},applyMetadata:function(e){e.parentView;e=_.extend({},e),e.parentView=e.element;var t=e.metadata,n=e.element,i=e.builder,o=n.getScripts(),r=n.getParameters();if(t.Scripts)for(var a=0,l=t.Scripts.length;l>a;++a){var s=t.Scripts[a],u={name:s.Name,func:i.buildType("Script",s,{parentView:n})};o.add(u)}if(this.triggerStartCreatingEvent(e),t.Parameters)for(var d,c,h,p=e.params||{},a=0,l=t.Parameters.length;l>a;++a)d=t.Parameters[a].Name,h=p[d],h||(h=new Parameter({view:n}),h.setName(d),"DefaultValue"in t.Parameters[a]&&(c=t.Parameters[a].DefaultValue,h.setValue(c))),r.add(h),t.Parameters[a].OnPropertyChanged&&h.onPropertyChanged(function(){new ScriptExecutor(n).executeScript(t.Parameters[a].OnPropertyChanged)});if(t.DataSources&&t.DataSources.length){var m=i.buildMany(t.DataSources,{parentView:n,suspended:e.suspended});n.getDataSources().set(m),this.changeDataSourcesReadinessByPriority(m);for(var a=0,f=m.length;f>a;a++)m[a].isLazy()||m[a].tryInitData()}else n.noDataSourceOnView();if(t.NotificationSubscriptions){var g=InfinniUI.global.notificationSubscription;for(var y in t.NotificationSubscriptions)!function(){var e=t.NotificationSubscriptions[y];g.subscribe(y,function(t,i){new ScriptExecutor(n).executeScript(e,{context:t,message:i.message})},this)}();n.onClosing(function(){for(var e in t.NotificationSubscriptions)g.unsubscribe(e,this)})}this.initBindingToProperty(e,"CloseButtonVisibility",!0),n.setHeaderTemplate(this.buildHeaderTemplate(n,e)),t.OnOpening&&n.onOpening(function(){return new ScriptExecutor(n).executeScript(t.OnOpening.Name||t.OnOpening)}),t.OnOpened&&n.onOpened(function(){new ScriptExecutor(n).executeScript(t.OnOpened.Name||t.OnOpened)}),t.OnClosing&&n.onClosing(function(){return new ScriptExecutor(n).executeScript(t.OnClosing.Name||t.OnClosing)}),t.OnClosed&&n.onClosed(function(){new ScriptExecutor(n).executeScript(t.OnClosed.Name||t.OnClosed)}),ContainerBuilder.prototype.applyMetadata.call(this,e),n.setFocusOnControl(t.FocusOnControl)},triggerStartCreatingEvent:function(e){var t=e.element,n=e.metadata,i=n.OnStartCreating;i&&new ScriptExecutor(t).executeScript(i.Name||i,{})},changeDataSourcesReadinessByPriority:function(e){var t=_.groupBy(e,function(e){return e.getResolvePriority()}),n=function(e){if(_.keys(e).length){var t=_.chain(e).keys().max().value(),i=e[t],o=i.length,r=_.omit(e,t),a=0;_.each(i,function(e){e.onItemsUpdatedOnce(function(e,t){++a==o&&setTimeout(function(){n(r)},0)}),e.setIsWaiting(!1)})}};_.keys(t).length>1&&(_.each(e,function(e){e.setIsWaiting(!0)}),n(t))}},viewBuilderHeaderTemplateMixin),window.InfinniUI.ViewPanel=ViewPanel,_.inherit(ViewPanel,Element),_.extend(ViewPanel.prototype,{setLayout:function(e){var t=this.getLayout();t&&t.close(),this.control.set("layout",e)},getLayout:function(){return this.control.get("layout")},createControl:function(){return new ViewPanelControl}}),window.InfinniUI.ViewPanelBuilder=ViewPanelBuilder,_.inherit(ViewPanelBuilder,ElementBuilder),_.extend(ViewPanelBuilder.prototype,{applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t=e.builder,n=e.element,i=e.metadata;e.parentView;if(_.isEmpty(i.Name)&&(i.Name=guid(),n.setName(i.Name)),InfinniUI.global.containers[i.Name]=n,"LinkView"in i){var o=t.build(i.LinkView,{parentView:e.parentView,parent:e.element});o.setOpenMode("Container"),o.setContainer(i.Name),o.createView(function(e){e.open()})}},createElement:function(e){return new ViewPanel(e.parent)}}),InfinniUI.global.containers={},_.inherit(DataGridRow,Element),_.extend(DataGridRow.prototype,{createControl:function(){return new DataGridRowControl},setCellTemplates:function(e){this.control.set("cellTemplates",e)},toggle:function(e){this.control.set("toggle",e)},getSelected:function(){this.control.get("selected")},setSelected:function(e){this.control.set("selected",e)},setMultiSelect:function(e){this.control.set("multiSelect",e)},setShowSelectors:function(e){this.control.set("showSelectors",e)},onToggle:function(e){this.control.onToggle(e)},setRowBackground:function(e){this.control.set("rowBackground",e)},getRowBackground:function(){return this.control.get("rowBackground")},setRowForeground:function(e){this.control.set("rowForeground",e)},getRowForeground:function(){return this.control.get("rowForeground")},setRowTextStyle:function(e){this.control.set("rowTextStyle",e)},getRowTextStyle:function(){return this.control.get("rowTextStyle")},setRowStyle:function(e){this.control.set("rowStyle",e)},getRowStyle:function(){return this.control.get("rowStyle")},setGrid:function(e){this.control.set("grid",e)},_transformRowProperties:function(e){for(var t in e)e.hasOwnProperty(t)&&(this.setProperty(e[t],this.getProperty(t)),this.onPropertyChanged(t,function(e,t){return function(n,i){e.setProperty(t,i.newValue)}}(this,e[t])))}}),_.inherit(Row,Container),_.extend(Row.prototype,{createControl:function(){return new RowControl}}),_.inherit(RowBuilder,ContainerBuilder),_.extend(RowBuilder.prototype,{createElement:function(e){return new Row(e.parent)},applyMetadata:function(e){e.metadata,e.element;ContainerBuilder.prototype.applyMetadata.call(this,e)}}),_.inherit(TabPage,Container),TabPage.prototype.getIcon=function(){return this.control.get("icon")},TabPage.prototype.setIcon=function(e){this.control.set("icon",e)},TabPage.prototype.getCanClose=function(){return this.control.get("canClose")},TabPage.prototype.setCanClose=function(e){this.control.set("canClose",e)},TabPage.prototype.close=function(e,t){var n=this.getCanClose(),i=this,o=this.events;n&&this.events.trigger("closing").done(function(){i.parent&&i.parent.closeTab(i),"function"==typeof e&&e(),o.trigger("closed")}).fail(function(){"function"==typeof t&&t()})},TabPage.prototype.onClosing=function(e){this.events.on("closing",e)},TabPage.prototype.onClosed=function(e){this.events.on("closed",e)},TabPage.prototype.getSelected=function(){return this.control.get("selected")},TabPage.prototype.setSelected=function(e){this.control.set("selected",e)},TabPage.prototype.createControl=function(){return new TabPageControl},_.inherit(TabPageBuilder,ContainerBuilder),_.extend(TabPageBuilder.prototype,{createElement:function(e){return new TabPage(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setIcon(t.Icon),n.setCanClose(t.CanClose),this.initScriptHandlers(e),i},initScriptHandlers:function(e){var t=e.metadata,n=e.element;t.OnClosing&&n.onClosing(function(){return new ScriptExecutor(e.parentView).executeScript(t.OnClosing.Name||t.OnClosing,{})}),t.OnClosed&&n.onClosed(function(){return new ScriptExecutor(e.parentView).executeScript(t.OnClosed.Name||t.OnClosed,{})})}}),_.inherit(Cell,Container),_.extend(Cell.prototype,{createControl:function(){return new CellControl},getColumnSpan:function(){return this.control.get("columnSpan")},setColumnSpan:function(e){this.control.set("columnSpan",e)}}),_.inherit(CellBuilder,ContainerBuilder),_.extend(CellBuilder.prototype,{createElement:function(e){return new Cell(e.parent)},applyMetadata:function(e){var t=e.metadata;e.element;ContainerBuilder.prototype.applyMetadata.call(this,e),e.element.setColumnSpan(t.ColumnSpan)}}),window.InfinniUI.BaseAction=BaseAction,_.extend(BaseAction.prototype,{defaults:{},setProperty:function(e,t){var n=this._properties;n[e]!==t&&(n[e]=t,this.trigger("change:"+e,this,t))},getProperty:function(e){return this._properties[e]},initDefaultValues:function(){},onExecutedHandler:function(e){var t=this.getProperty("onExecutedHandler");_.isFunction(t)&&t(e)}},Backbone.Events),InfinniUI.global.executeAction=function(e,t,n){var i=new ApplicationBuilder,o=i.build(t,{parentView:e.view});o.execute(n)};var BaseActionBuilderMixin={applyBaseActionMetadata:function(e,t){var n=t.metadata;"OnExecuted"in n&&e.setProperty("onExecutedHandler",function(t){new ScriptExecutor(e.parentView).executeScript(n.OnExecuted.Name||n.OnExecuted,t)})}};window.InfinniUI.BaseEditAction=BaseEditAction,_.inherit(BaseEditAction,BaseAction),_.extend(BaseEditAction.prototype,{execute:function(e){var t=this,n=this.getProperty("linkView");this.setProperty("callback",e),n.createView(function(e){t.handleViewReady(e)})},handleViewReady:function(e){var t=this.getProperty("sourceSource"),n=e.getContext().dataSources[t],i=this.getProperty("destinationSource"),o=this.parentView.getContext().dataSources[i],r=this;this.setProperty("editDataSource",n),this.setProperty("destinationDataSource",o);var a=this.setSelectedItem();a?(e.open(),e.onClosed(function(){var t=e.getDialogResult();t==DialogResult.accepted&&r.handleClosingView()})):e.close()},handleClosingView:function(){var e=this.getProperty("callback");this.save(),this.onExecutedHandler(),_.isFunction(e)&&e()},_isObjectDataSource:function(e){return"setItems"in e}});var BaseEditActionBuilderMixin={applyBaseEditActionMetadata:function(e,t){var n=t.metadata,i=t.parentView,o=t.builder,r={};r[n.SourceValue.Source]="BaseEditAction";var a=o.build(n.LinkView,{parent:t.parent,parentView:i,basePathOfProperty:t.basePathOfProperty,suspended:r});e.setProperty("linkView",a),e.setProperty("sourceSource",n.SourceValue.Source),e.setProperty("destinationSource",n.DestinationValue.Source);var l=null!=t.basePathOfProperty?t.basePathOfProperty.resolveProperty(n.DestinationValue.Property):n.DestinationValue.Property;e.setProperty("destinationProperty",l)}},BaseFallibleActionBuilderMixin={applyBaseFallibleActionMetadata:function(e,t){var n=t.metadata;"OnSuccess"in n&&e.setProperty("onSuccessHandler",function(t){new ScriptExecutor(e.parentView).executeScript(n.OnSuccess.Name||n.OnSuccess,t)}),"OnError"in n&&e.setProperty("onErrorHandler",function(t){new ScriptExecutor(e.parentView).executeScript(n.OnError.Name||n.OnError,t)})}},BaseFallibleActionMixin={onSuccessHandler:function(e){var t=this.getProperty("onSuccessHandler");_.isFunction(t)&&t(e)},onErrorHandler:function(e){var t=this.getProperty("onErrorHandler");_.isFunction(t)&&t(e)}};_.inherit(AcceptAction,BaseAction),_.extend(AcceptAction.prototype,{execute:function(e){var t=this;this.parentView.onClosed(function(){t.onExecutedHandler(),e&&e()}),this.parentView.setDialogResult(DialogResult.accepted),this.parentView.close()}}),window.InfinniUI.AcceptAction=AcceptAction,_.extend(AcceptActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=new AcceptAction(t.parentView);return this.applyBaseActionMetadata(n,t),n}}),window.InfinniUI.AcceptActionBuilder=AcceptActionBuilder,_.inherit(CancelAction,BaseAction),_.extend(CancelAction.prototype,{execute:function(e){var t=this;this.parentView.onClosed(function(){t.onExecutedHandler(),e&&e()}),this.parentView.setDialogResult(DialogResult.canceled),this.parentView.close()}}),window.InfinniUI.CancelAction=CancelAction,_.extend(CancelActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=new CancelAction(t.parentView);return this.applyBaseActionMetadata(n,t),n}}),window.InfinniUI.CancelActionBuilder=CancelActionBuilder,_.inherit(AddAction,BaseEditAction),_.extend(AddAction.prototype,{setSelectedItem:function(){var e=this.getProperty("editDataSource"),t=e.getView();return t.onBeforeLoaded(function(){e.createItem()}),!0},save:function(){var e=this.getProperty("editDataSource"),t=this.getProperty("destinationDataSource"),n=this.getProperty("destinationProperty")||"";if(this._isObjectDataSource(e)){var i=t.getProperty(n)||[],o=e.getSelectedItem();i=_.clone(i),i.push(o),t.setProperty(n,i)}else t.updateItems()}}),window.InfinniUI.AddAction=AddAction,_.extend(AddActionBuilder.prototype,BaseActionBuilderMixin,BaseEditActionBuilderMixin,{build:function(e,t){var n=new AddAction(t.parentView);return this.applyBaseActionMetadata(n,t),this.applyBaseEditActionMetadata(n,t),n}}),window.InfinniUI.AddActionBuilder=AddActionBuilder,_.inherit(DeleteAction,BaseAction),_.extend(DeleteAction.prototype,BaseFallibleActionMixin,{execute:function(e){var t=this.getProperty("accept"),n=this,i=this.getProperty("destinationSource"),o=this.getProperty("destinationProperty");i.getProperty(o)?t?new MessageBox({text:"Вы уверены, что хотите удалить?",buttons:[{name:"Да",type:"action",onClick:function(){n.remove(e)}},{name:"Нет"}]}):this.remove(e):new MessageBox({text:"Вы не выбрали элемент который необходимо удалить",buttons:[{name:"Закрыть"}]})},remove:function(e){var t=this.getProperty("destinationSource"),n=this.getProperty("destinationProperty");this._isDocument(n)?this._deleteDocument(t,n,e):this._deleteItem(t,n,e)},_deleteDocument:function(e,t,n){var i=this,o=function(t,o){e.updateItems(),i.onExecutedHandler(o),i.onSuccessHandler(o),_.isFunction(n)&&n()},r=function(e,t){i.onExecutedHandler(t),i.onErrorHandler(t),_.isFunction(n)&&n()},a=e.getProperty(t);e.deleteItem(a,o,r)},_deleteItem:function(e,t,n){var i=t.split("."),o=i.pop(),r=i.join("."),a=e.getProperty(r);a=_.clone(a),a.splice(o,1),e.setProperty(r,a),this.onExecutedHandler(),this.onSuccessHandler(),_.isFunction(n)&&n()},_isDocument:function(e){return"$"==e||_.isFinite(e)}}),window.InfinniUI.DeleteAction=DeleteAction,_.extend(DeleteActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.metadata,i=t.parentView,o=n.DestinationValue.Source,r=n.DestinationValue.Property||"$",a=new DeleteAction(i);this.applyBaseActionMetadata(a,t),this.applyBaseFallibleActionMetadata(a,t);var l=n.Accept!==!1,s=i.getContext().dataSources[o],u=null!=t.basePathOfProperty?t.basePathOfProperty.resolveProperty(r):r;return a.setProperty("accept",l),a.setProperty("destinationSource",s),a.setProperty("destinationProperty",u),a}}),window.InfinniUI.DeleteActionBuilder=DeleteActionBuilder,_.inherit(EditAction,BaseEditAction),_.extend(EditAction.prototype,{setSelectedItem:function(){var e=this.getProperty("editDataSource"),t=this.getProperty("destinationDataSource"),n=this.getProperty("destinationProperty"),i=t.getProperty(n);if(null==i){if(this._isRootItem(n)){var o=window.InfinniUI.global.logger,r=stringUtils.format('EditAction: edit item has not been found. {0} does not have item by path "{1}"',[t.getName(),n]);return o.error(r),!1}i=i||{}}return this._isObjectDataSource(e)?this._setItem(e,i):this._setDocument(e,i),!0},_resumeUpdateEditDataSource:function(){var e=this.getProperty("editDataSource");e.resumeUpdate("BaseEditAction")},_setDocument:function(e,t){var n=e.idOfItem(t);e.setIdFilter(n),e.tryInitData(),this._resumeUpdateEditDataSource()},_setItem:function(e,t){var n=_.clone(t);void 0!==n&&null!==n||(n={}),this._resumeUpdateEditDataSource(),e.setItems([n]),e.setSelectedItem(n)},save:function(){var e=this.getProperty("editDataSource"),t=this.getProperty("destinationDataSource"),n=this.getProperty("destinationProperty");if(this._isObjectDataSource(e)){var i=e.getSelectedItem(),o=this._getRootItem(t,n);this._isRootItem(n)&&(this._overrideOriginItem(o,i),t._includeItemToModifiedSet(o)),t.setProperty(n,i),t.saveItem(o)}t.updateItems()},_overrideOriginItem:function(e,t){for(var n in e)delete e[n];for(var n in t)e[n]=_.clone(t[n])},_isRootItem:function(e){return!e.includes(".")},_getRootItem:function(e,t){var n=(t||"$").split(".")[0];return e.getProperty(n)}}),window.InfinniUI.EditAction=EditAction,_.extend(EditActionBuilder.prototype,BaseActionBuilderMixin,BaseEditActionBuilderMixin,{build:function(e,t){var n=new EditAction(t.parentView); -return this.applyBaseActionMetadata(n,t),this.applyBaseEditActionMetadata(n,t),n}}),window.InfinniUI.EditActionBuilder=EditActionBuilder,_.inherit(OpenAction,BaseAction),_.extend(OpenAction.prototype,{execute:function(e){var t=this.getProperty("linkView"),n=this;t.createView(function(t){t.onLoaded(function(){n.onExecutedHandler(),e&&e(t)}),t.open()})}}),window.InfinniUI.OpenAction=OpenAction,_.extend(OpenActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=new OpenAction(t.parentView);this.applyBaseActionMetadata(n,t);var i=t.builder.build(t.metadata.LinkView,{parent:t.parent,parentView:t.parentView,basePathOfProperty:t.basePathOfProperty});return n.setProperty("linkView",i),n}}),window.InfinniUI.OpenActionBuilder=OpenActionBuilder,_.inherit(SaveAction,BaseAction),_.extend(SaveAction.prototype,BaseFallibleActionMixin,{execute:function(e){var t=this.parentView,n=this.getProperty("dataSource"),i=this.getProperty("canClose"),o=this,r=function(n,r){i!==!1&&(t.setDialogResult(DialogResult.accepted),t.close()),o.onExecutedHandler(r),o.onSuccessHandler(r),_.isFunction(e)&&e(n,r)},a=function(t,n){o.onExecutedHandler(n),o.onErrorHandler(n),_.isFunction(e)&&e(t,n)},l=n.getSelectedItem();n.saveItem(l,r,a)}}),window.InfinniUI.SaveAction=SaveAction,_.extend(SaveActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.parentView,i=n.getContext().dataSources[t.metadata.DestinationValue.Source],o=new SaveAction(n);return this.applyBaseActionMetadata(o,t),this.applyBaseFallibleActionMetadata(o,t),o.setProperty("dataSource",i),o.setProperty("canClose",t.metadata.CanClose),o}}),window.InfinniUI.SaveActionBuilder=SaveActionBuilder,window.InfinniUI.DownloadExecutor=DownloadExecutor,DownloadExecutor.prototype.config=function(e){_.extend(this.options,e)},DownloadExecutor.prototype.run=function(e){var t=this.cleanup.bind(this),n=function(){"function"==typeof this.resultCallback&&this.resultCallback.apply(this,arguments)}.bind(this),i=function(e){"function"==typeof this.successCallback&&this.successCallback.call(this,e),n(e)}.bind(this),o=function(e){"function"==typeof this.successCallback&&this.successCallback.call(this,data),n(e)};this.waitResponse(t).always(function(){t()}).done(i).fail(o),this.openWindow(e)},DownloadExecutor.prototype.openWindow=function(e){var t=this.getName("window"),n=document.createElement("form");this.form=n,n.setAttribute("method",e.method),n.setAttribute("action",e.requestUrl),n.setAttribute("target",t),n.setAttribute("style","display: none;");var i=document.createElement("input");i.setAttribute("name","data"),i.setAttribute("value",JSON.stringify(e.args)),n.appendChild(i);var o=document.createElement("input");o.setAttribute("name","token"),o.setAttribute("value",this.getName("token")),n.appendChild(o),document.body.appendChild(n),this.popup=window.open("about:blank",t),n.submit()},DownloadExecutor.prototype.getName=function(e){return e+this.guid},DownloadExecutor.prototype.cleanup=function(){clearInterval(this.intervalId),clearTimeout(this.timeout),$.removeCookie(this.getName("token")),this.form&&(this.form.remove(),this.form=null),this.popup&&(this.popup.close(),this.popup=null)},DownloadExecutor.prototype.waitResponse=function(e){var t=this.getName("token"),n=$.Deferred(e);return this.intervalId=setInterval(function(){var e=$.cookie(t);e===t&&n.resolve()},this.options.poll),this.timeout=setTimeout(function(){n.reject()},this.options.timeout),n.promise()},_.inherit(ServerAction,BaseAction),_.extend(ServerAction.prototype,BaseFallibleActionMixin,{defaults:{contentType:"application/x-www-form-urlencoded; charset=utf-8",method:"GET",data:{}},updateContentTypeStrategy:function(){var e=this.getProperty("contentType");_.isString(e)&&e.includes("multipart")?this.contentTypeStrategy=serverActionContentTypeStrategy.File:this.contentTypeStrategy=serverActionContentTypeStrategy.Object},execute:function(e){var t=this,n=function(n){t.onExecutedHandler(n),_.isFunction(e)&&e(n)},i=function(e){t.onSuccessHandler(e)},o=function(e){t.onErrorHandler(e)};this.contentTypeStrategy.run(this.provider,this._getRequestData(),n,i,o)},setParam:function(e,t){this.setProperty("params."+e,t)},getParam:function(e){return this.getProperty("params."+e)},_getRequestData:function(){var e=this._replaceParamsInStr(this.getProperty("origin")),t=this._replaceParamsInStr(this.getProperty("path")),n=this.getProperty("method").toUpperCase(),i=this.getProperty("contentType"),o=this._replaceParamsInObject(this.getProperty("data")),r={};return r.requestUrl=e+t,r.method=n,r.contentType=i,_.isEmpty(o)||("GET"==n?r.requestUrl=r.requestUrl+"?"+stringUtils.joinDataForQuery(o):r.args=_.isString(i)&&i.includes("application/json")?JSON.stringify(o):o),r},_replaceParamsInStr:function(e){if(!e)return e;var t=this;return e.replace(/<%([\s\S]+?)%>/g,function(e,n){return t.getParam(n)})},_replaceParamsInObject:function(e){if(_.isEmpty(e))return e;var t=JSON.stringify(e),n=this._replaceParamsInStr(t);return JSON.parse(n)}}),window.InfinniUI.ServerAction=ServerAction,_.extend(ServerActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.builder,i=t.metadata,o=t.parentView,r=new ServerAction(o);if(this.applyBaseActionMetadata(r,t),this.applyBaseFallibleActionMetadata(r,t),r.setProperty("origin",i.Origin),r.setProperty("path",i.Path),i.Data&&r.setProperty("data",i.Data),i.Method&&r.setProperty("method",i.Method),(i.ContentType||i.ContentType===!1)&&r.setProperty("contentType",i.ContentType),i.Params)for(var a in i.Params){var l=i.Params[a];"object"!=typeof l?void 0!==l&&r.setParam(a,l):this._initBinding(a,l,r,o,n)}return r},_initBinding:function(e,t,n,i,o){var r={parent:i,parentView:i},a=o.buildBinding(t,r);a.setMode(InfinniUI.BindingModes.toElement),a.bindElement({setProperty:function(e,t){n.setParam(e,t)},onPropertyChanged:function(){}},e)}}),window.InfinniUI.ServerActionBuilder=ServerActionBuilder;var serverActionContentTypeStrategy={File:{run:function(e,t,n,i,o){e.download(t,n,i,o)}},Object:{run:function(e,t,n,i,o){e.request(t,n,i,o)}}};_.inherit(SelectAction,BaseAction),_.extend(SelectAction.prototype,{execute:function(e){var t=this.parentView,n=this.getProperty("linkView"),i=this,o=this.getProperty("sourceSource"),r=this.getProperty("sourceProperty"),a=this.getProperty("destinationSource"),l=this.getProperty("destinationProperty");n.createView(function(n){n.onClosed(function(s,u){var d=n.getDialogResult();if(d==DialogResult.accepted){var c=n.getContext().dataSources[o],h=t.getContext().dataSources[a],p=c.getProperty(r);h.setProperty(l,p)}i.onExecutedHandler(u),e&&e(s,u)}),n.open()})}}),window.InfinniUI.SelectAction=SelectAction,_.extend(SelectActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=t.builder,i=t.metadata,o=t.parentView,r=new SelectAction(o);this.applyBaseActionMetadata(r,t);var a=n.build(i.LinkView,{parentView:o});return r.setProperty("linkView",a),r.setProperty("sourceSource",i.SourceValue.Source),r.setProperty("sourceProperty",i.SourceValue.Property),r.setProperty("destinationSource",i.DestinationValue.Source),r.setProperty("destinationProperty",i.DestinationValue.Property),r}}),window.InfinniUI.SelectActionBuilder=SelectActionBuilder,_.inherit(RouteToAction,BaseAction),_.extend(RouteToAction.prototype,{execute:function(e){var t=InfinniUI.AppRouter,n=this.getHref();t.navigate(n,{trigger:!0})},getHref:function(){return this.href},setHref:function(e){this.href=e}}),window.InfinniUI.RouteToAction=RouteToAction,_.extend(RouteToActionBuilder.prototype,BaseActionBuilderMixin,routerServiceMixin,{build:function(e,t){var n=new RouteToAction,i=routerService.getLinkByName(t.metadata.Name,"no"),o=t.metadata.Params,r=t.metadata.Query;if(n.setHref(i),t.element=n,o)for(var a=0,l=o.length;l>a;a+=1)"string"==typeof o[a].Value?(n.getHref()!==i&&(i=n.getHref()),i=this.replaceParamsInHref(i,o[a].Name,o[a].Value),n.setHref(i)):this.bindParams(t,o[a].Name,o[a].Value,i);if(r)for(var a=0,l=r.length;l>a;a+=1)"string"==typeof r[a].Value?(n.getHref()!==i&&(i=n.getHref()),i=this.replaceParamsInQuery(i,r[a].Name,r[a].Value),n.setHref(i)):this.bindQuery(t,r[a].Name,r[a].Value,i);return n}}),window.InfinniUI.RouteToActionBuilder=RouteToActionBuilder,_.inherit(UpdateAction,BaseAction),_.extend(UpdateAction.prototype,BaseFallibleActionMixin,{execute:function(e){var t=this.getProperty("dataSource"),n=this,i=function(t,i){n.onExecutedHandler(i),n.onSuccessHandler(i),_.isFunction(e)&&e(t,i)},o=function(t,i){n.onExecutedHandler(i),n.onErrorHandler(i),_.isFunction(e)&&e(t,i)};t.updateItems(i,o)}}),window.InfinniUI.UpdateAction=UpdateAction,_.extend(UpdateActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.parentView.getContext().dataSources[t.metadata.DestinationValue.Source],i=new UpdateAction(t.parentView);return this.applyBaseActionMetadata(i,t),this.applyBaseFallibleActionMetadata(i,t),i.setProperty("dataSource",n),i}}),window.InfinniUI.UpdateActionBuilder=UpdateActionBuilder,_.extend(ApplicationBuilder.prototype,{builder:null,registerElementBuilders:function(){var e=this.builder;e.register("View",new ViewBuilder),e.register("InlineView",new InlineViewBuilder),e.register("AutoView",new MetadataViewBuilder),e.register("StackPanel",new StackPanelBuilder),e.register("GridPanel",new GridPanelBuilder),e.register("ScrollPanel",new ScrollPanelBuilder),e.register("Panel",new PanelBuilder),e.register("ScrollPanel",new ScrollPanelBuilder),e.register("ViewPanel",new ViewPanelBuilder),e.register("TabPanel",new TabPanelBuilder),e.register("TabPage",new TabPageBuilder),e.register("TablePanel",new TablePanelBuilder),e.register("Cell",new CellBuilder),e.register("Row",new RowBuilder),e.register("MenuBar",new MenuBarBuilder),e.register("DataGrid",new DataGridBuilder),e.register("DataGridColumn",new DataGridColumnBuilder),e.register("ListBox",new ListBoxBuilder),e.register("TextBox",new TextBoxBuilder),e.register("PasswordBox",new PasswordBoxBuilder),e.register("CheckBox",new CheckBoxBuilder),e.register("IndeterminateCheckBox",new IndeterminateCheckBoxBuilder),e.register("ImageBox",new ImageBoxBuilder),e.register("FileBox",new FileBoxBuilder),e.register("Label",new LabelBuilder),e.register("Link",new LinkBuilder),e.register("Form",new FormBuilder),e.register("Icon",new IconBuilder),e.register("DateTimePicker",new DateTimePickerBuilder),e.register("DatePicker",new DatePickerBuilder),e.register("TimePicker",new TimePickerBuilder),e.register("ToggleButton",new ToggleButtonBuilder),e.register("NumericBox",new NumericBoxBuilder),e.register("Button",new ButtonBuilder),e.register("ToolBar",new ToolBarBuilder),e.register("ToolBarButton",new ButtonBuilder),e.register("ComboBox",new ComboBoxBuilder),e.register("RadioGroup",new RadioGroupBuilder),e.register("ExtensionPanel",new ExtensionPanelBuilder),e.register("PopupButton",new PopupButtonBuilder),e.register("DataNavigation",new DataNavigationBuilder),e.register("TreeView",new TreeViewBuilder),e.register("Frame",new FrameBuilder),e.register("ButtonEdit",new ButtonEditBuilder),e.register("RestDataSource",new RestDataSourceBuilder),e.register("DocumentDataSource",new DocumentDataSourceBuilder),e.register("PropertyBinding",new DataBindingBuilder),e.register("ObjectDataSource",new ObjectDataSourceBuilder),e.register("Parameter",new ParameterBuilder),e.register("AcceptAction",new AcceptActionBuilder),e.register("AddAction",new AddActionBuilder),e.register("CancelAction",new CancelActionBuilder),e.register("DeleteAction",new DeleteActionBuilder),e.register("EditAction",new EditActionBuilder),e.register("OpenAction",new OpenActionBuilder),e.register("SaveAction",new SaveActionBuilder),e.register("SelectAction",new SelectActionBuilder),e.register("UpdateAction",new UpdateActionBuilder),e.register("ServerAction",new ServerActionBuilder),e.register("RouteToAction",new RouteToActionBuilder),e.register("BooleanFormat",new BooleanFormatBuilder),e.register("DateTimeFormat",new DateTimeFormatBuilder),e.register("NumberFormat",new NumberFormatBuilder),e.register("ObjectFormat",new ObjectFormatBuilder),e.register("DateTimeEditMask",new DateTimeEditMaskBuilder),e.register("NumberEditMask",new NumberEditMaskBuilder),e.register("TemplateEditMask",new TemplateEditMaskBuilder),e.register("RegexEditMask",new RegexEditMaskBuilder),e.register("Script",new ScriptBuilder),e.register("Divider",new DividerBuilder),e.register("ContextMenu",new ContextMenuBuilder);for(var t=ApplicationBuilder.registerQueue,n=0,i=t.length;i>n;n++)e.register(t[n].name,t[n].builder)},build:function(e,t){return this.builder.build(e,t)},buildType:function(e,t,n){return this.builder.buildType(e,t,n)},buildMany:function(e,t){return this.builder.buildMany(e,t)}}),ApplicationBuilder.registerQueue=[],ApplicationBuilder.addToRegisterQueue=function(e,t){ApplicationBuilder.registerQueue.push({name:e,builder:t})},window.InfinniUI.ApplicationBuilder=ApplicationBuilder,window.InfinniUI.Builder=Builder,InfinniUI.BindingModes={twoWay:"TwoWay",toSource:"ToSource",toElement:"ToElement"};var DataBinding=Backbone.Model.extend({defaults:{mode:InfinniUI.BindingModes.twoWay,converter:null,source:null,sourceProperty:null,element:null,elementProperty:null,defaultValue:null},getDefaultValue:function(){return this.get("defaultValue")},setDefaultValue:function(e){this.set("defaultValue",e)},setMode:function(e){this.set("mode",e)},getMode:function(){return this.get("mode")},setConverter:function(e){this.set("converter",e)},getConverter:function(){return this.get("converter")},bindSource:function(e,t){var n=window.InfinniUI.global.logger,i=this.getElement();if(null!=this.get("source")){var o=stringUtils.format("DataBinding. bindSource: повторная инициализация. {0} заменен на {1}",[this.get("source").getName(),e.getName()]);n.warn(o)}this.set("source",e),this.set("sourceProperty",t);var r=this;i&&this._initPropertyOnElement(),e.onPropertyChanged(t,function(e,t){r._onSourcePropertyChangedHandler(e,t)}),this._isWorkingWithSelectedItems(e)&&this._initBehaviorWithSelectedItem()},_isWorkingWithSelectedItems:function(e){return"function"==typeof e.onSelectedItemChanged},_initBehaviorWithSelectedItem:function(){var e=this.get("sourceProperty"),t=this.get("source"),n=this;this._isRelativeProperty(e)&&t.onSelectedItemChanged(function(i,o){var r={property:e,newValue:t.getProperty(e)};n._onSourcePropertyChangedHandler(i,r)})},_isRelativeProperty:function(e){return!/^\d/.test(e)&&""!=e},getSource:function(){return this.get("source")},getSourceProperty:function(){return this.get("sourceProperty")},bindElement:function(e,t){var n=this,i=window.InfinniUI.global.logger;if(null!=this.get("element")){var o=stringUtils.format("DataBinding. bindElement: повторная инициализация. {0} заменен на {1}",[this.get("element").getName(),e.getName()]);i.warn(o)}this.set("element",e),this.set("elementProperty",t),e.onPropertyChanged(t,function(e,t){n._onElementPropertyChangedHandler(e,t)}),this._initPropertyOnElement()},_initPropertyOnElement:function(){var e,t=this.get("sourceProperty"),n=this.get("source");if(this._shouldRefreshElement()&&n){if("function"==typeof n.isDataReady&&!n.isDataReady())return void("function"==typeof n.tryInitData&&(null!==this.getDefaultValue()&&this._setValueToElement(this.getDefaultValue(),!0),n.tryInitData()));e=n.getProperty(t),this._setValueToElement(e)}},getElement:function(){return this.get("element")},getElementProperty:function(){return this.get("elementProperty")},_onElementPropertyChangedHandler:function(e,t){this._shouldRefreshSource()&&this._setValueToSource(t.newValue,e)},_setValueToSource:function(e,t){var n=this.get("element"),i=this.get("source"),o=this.get("sourceProperty"),r=this.get("converter");null!=r&&r.hasOwnProperty("toSource")&&(e=r.toSource(t,{value:e,binding:this,source:n})),i.setProperty(o,e)},_onSourcePropertyChangedHandler:function(e,t){this._shouldRefreshElement()&&this._setValueToElement(t.newValue)},_setValueToElement:function(e,t){var n=this.get("source"),i=this.get("element"),o=this.get("elementProperty"),r=this.get("converter"),a=this._getContext();null==r||null==r.toElement||t||(e=r.toElement(a,{value:e,binding:this,source:n})),i.setProperty(o,e)},_getContext:function(){var e,t=this.getSource();return t.getView&&t.getView()&&(e=t.getView().getContext()),e},_shouldRefreshSource:function(){var e=this.get("mode");return e==InfinniUI.BindingModes.twoWay||e==InfinniUI.BindingModes.toSource},_shouldRefreshElement:function(){var e=this.get("mode");return e==InfinniUI.BindingModes.twoWay||e==InfinniUI.BindingModes.toElement}});window.InfinniUI.DataBinding=DataBinding;var DataBindingBuilder=function(){};window.InfinniUI.DataBindingBuilder=DataBindingBuilder,DataBindingBuilder.prototype.build=function(e,t){var n,i,o=new DataBinding,r=t.metadata,a=window.InfinniUI.global.logger,l={},s=this;if(null==r.Source)throw a.error("DataBindingBuilder: не указан источник."),new Error("DataBindingBuilder: not declared source in DataBinding metadata.");"DefaultValue"in r&&o.setDefaultValue(r.DefaultValue);var u=t.parentView.getDeferredOfMember(r.Source);return u.done(function(a){var u="undefined"==typeof r.Property||null===r.Property?"":r.Property;n=t.basePathOfProperty?t.basePathOfProperty.resolveProperty(u):u,r.Mode&&o.setMode(r.Mode),r.Converter&&(r.Converter.ToSource&&(i=r.Converter.ToSource,l.toSource=s.scriptByNameOrBody(i,e)),r.Converter.ToElement&&(i=r.Converter.ToElement,l.toElement=s.scriptByNameOrBody(i,e)),o.setConverter(l)),o.bindSource(a,n)}),o},DataBindingBuilder.prototype.isScriptBody=function(e){return e&&"{"==e.substr(0,1)},DataBindingBuilder.prototype.scriptByNameOrBody=function(e,t){if(this.isScriptBody(e)){var n=new ScriptExecutor(t.view);return n.buildScriptByBody(e)}return t.scripts[e]},window.InfinniUI.Providers.MetadataProviderREST=MetadataProviderREST,window.InfinniUI.Providers.QueryConstructorMetadata=QueryConstructorMetadata;var RequestExecutorDataStrategy=function(e){"undefined"==typeof this.strategies[e]?this.strategy=this.strategies.json:this.strategy=this.strategies[e]};window.InfinniUI.RequestExecutorDataStrategy=RequestExecutorDataStrategy,RequestExecutorDataStrategy.prototype.request=function(e,t,n){return this.strategy.apply(this,Array.prototype.slice.call(arguments))},RequestExecutorDataStrategy.prototype.strategies={json:function(e,t,n){return $.ajax({type:e.method||"post",url:e.requestUrl,xhrFields:{withCredentials:!0},beforeSend:this.onBeforeRequest(),success:this.onSuccessRequest(t),error:function(e){200===e.status?this.onSuccessRequest(t)():this.onErrorRequest(n)(e)}.bind(this),data:JSON.stringify(e.args),contentType:"application/json;charset=UTF-8"})},raw:function(e,t,n){var i=e.method||"post",o="GET"===i.toUpperCase();return $.ajax({type:i,url:e.requestUrl,xhrFields:{withCredentials:!0},beforeSend:this.onBeforeRequest(),success:this.onSuccessRequest(t),error:function(e){200===e.status?this.onSuccessRequest(t)():this.onErrorRequest(n)(e)}.bind(this),processData:o,contentType:!1,data:e.args})}},_.extend(RequestExecutorDataStrategy.prototype,ajaxRequestMixin),window.InfinniUI.providerRegister=new DataProviderRegister;var DocumentFileProvider=function(e,t,n){this.urlConstructor=e,this.successCallback=t,this.failCallback=n};window.InfinniUI.Providers.DocumentFileProvider=DocumentFileProvider,DocumentFileProvider.prototype.getFileUrl=function(e,t,n){return this.urlConstructor.getFileUrl(e,t,n)};var DocumentUploadQueryConstructor=function(e){this.host=e};window.InfinniUI.DocumentUploadQueryConstructor=DocumentUploadQueryConstructor,DocumentUploadQueryConstructor.prototype.getFileUrl=function(e,t,n){return stringUtils.format("{0}/blob/{1}",[this.host,n])};var ObjectDataProvider=function(e,t){this.items=e||[],this.idProperty=t||"_id"};_.extend(ObjectDataProvider.prototype,{setItems:function(e){this.items=e},getItems:function(e){e({data:this.items.slice()})},createItem:function(e){var t=this.createLocalItem(this.idProperty);e(t)},saveItem:function(e,t){var n=this.items,i=this._getIndexOfItem(e),o={isValid:!0};-1==i?n.push(e):n[i]=e,t(o)},deleteItem:function(e,t){var n=this.items,i=this._getIndexOfItem(e),o={isValid:!0};-1==i?(o.isValid=!1,o.message="Удаляемый элемент не найден"):n.splice(i,1),t(o)},createIdFilter:function(e){return[{Property:"_id",Value:e,CriteriaType:1}]},_getIndexOfItem:function(e){return _.indexOf(this.items,e)},createLocalItem:function(e){var t={};return t[e]=this._generateLocalId(),t},_generateLocalId:function(){return guid()}}),window.InfinniUI.Providers.ObjectDataProvider=ObjectDataProvider;var RestDataProvider=function(){this.requestParams={get:{method:"get",origin:null,path:"",data:{}},set:{method:"post",origin:null,path:"",data:{}},"delete":{method:"delete",origin:null,path:"",data:{}}}};_.extend(RestDataProvider.prototype,{getOrigin:function(e){return this.requestParams[e].origin},setOrigin:function(e,t){this.requestParams[e].origin=t},getPath:function(e){return this.requestParams[e].path},setPath:function(e,t){this.requestParams[e].path=t},getData:function(e){return this.requestParams[e].data},setData:function(e,t){this.requestParams[e].data=t},getMethod:function(e){return this.requestParams[e].method},setMethod:function(e,t){this.requestParams[e].method=t},send:function(e,t,n){var i,o=this.requestParams[e],r=o.origin+o.path,a=Math.round(1e5*Math.random()),l=this.extractFilesFromData(o.data);if(0==_.size(l.files))i={type:o.method,xhrFields:{withCredentials:!0},url:r,success:function(e){t({requestId:a,data:e})},error:function(e){return"function"!=typeof n?void InfinniUI.global.logger.error(e):void n({requestId:a,data:e})}},"get"!=o.method.toLowerCase()?(i.contentType="application/json",i.data=JSON.stringify(o.data)):_.size(o.data)>0&&(i.url=i.url+"?"+stringUtils.joinDataForQuery(o.data));else{var s=new FormData;s.append("document",JSON.stringify(l.dataWithoutFiles));for(var u in l.files)s.append(u,l.files[u]);i={type:o.method,url:r,xhrFields:{withCredentials:!0},data:s,cache:!1,contentType:!1,processData:!1,success:function(e){t({requestId:a,data:e})},error:function(e){n({requestId:a,data:e})}}}return $.ajax(i),a},getItems:function(e,t){return this.send("get",e,t)},saveItem:function(e,t,n){return this.requestParams.set.data=e,this.send("set",t,n)},deleteItem:function(e,t,n){return this.send("delete",t,n)},createItem:function(e,t){var n=this;setTimeout(function(){e(n.createLocalItem(t))},10)},createLocalItem:function(e){var t={};return t[e]=this._generateLocalId(),t},_generateLocalId:function(){return guid()},extractFilesFromData:function(e){function t(e,i){var o,r,a=Array.isArray(e)?[]:{};for(var l in e)if(e.hasOwnProperty(l))if(r=i.slice(),r.push(l),o=e[l],null!==o&&"object"==typeof o)if(o.constructor===Date)a[l]=o;else{if(o.constructor!==Object&&o.constructor!==Array){a[l]=null,n[r.join(".")]=o;continue}a[l]=t(o,r)}else a[l]=o;return a}var n=Object.create(null),i=t(e,[]);return{dataWithoutFiles:i,files:n}}}),window.InfinniUI.Providers.RestDataProvider=RestDataProvider;var ServerActionProvider=function(){};ServerActionProvider.prototype.request=function(e,t,n,i){var o=Math.round(1e5*Math.random());return $.ajax({type:e.method,url:e.requestUrl,xhrFields:{withCredentials:!0},data:e.args,contentType:e.contentType,success:function(e){var i={requestId:o,data:e};_.isFunction(t)&&t(i),_.isFunction(n)&&n(i)},error:function(e){var n={requestId:o,data:e};_.isFunction(t)&&t(n),_.isFunction(i)&&i(n)}}),o},ServerActionProvider.prototype.download=function(e,t,n,i){new DownloadExecutor(t,n,i).run(e)},window.InfinniUI.Providers.ServerActionProvider=ServerActionProvider;var DataProviderReplaceItemQueue=function(e){var t=e||[],n=[],i="__Id",o=function(e){var n=_.pick(e,t),o=_.isEmpty(e[i])?"Id":i;return n[o]=e[o],n},r=function(e){return _.findWhere(n,o(e))},a=function(e){return _.where(n,o(e))},l=function(e,t){var n=a(e);n.forEach(function(e){e.Id=t.Id,e.value.Id=t.Id})},s=function(e){var t=n.indexOf(e);-1===t&&console.error("DataProviderReplaceItemQueue: Не найден запрос в очереди"),n.splice(t,1);var i=r(e);u(i)},u=function(e){"undefined"!=typeof e&&null!==e&&e.request(e).done(l.bind(void 0,e)).always(s.bind(void 0,e))};this.append=function(e,t){var o=_.defaults(e,_.pick(e.value,["Id",i]));o.request=t;var r=a(o);if(n.push(o),0===r.length)u(e);else if(r.length>1)for(var l=1,s=r.length;s>l;l+=1){var d=n.indexOf(r[l]);n.splice(d,1)}}};window.InfinniUI.Providers.DataProviderReplaceItemQueue=DataProviderReplaceItemQueue;var ObjectDataSource=BaseDataSource.extend({initDataProvider:function(){var e=window.InfinniUI.providerRegister.build("ObjectDataSource");this.set("dataProvider",e)},setItems:function(e){this.get("dataProvider").setItems(e),this.updateItems()}});window.InfinniUI.ObjectDataSource=ObjectDataSource,_.inherit(ObjectDataSourceBuilder,BaseDataSourceBuilder),_.extend(ObjectDataSourceBuilder.prototype,{createDataSource:function(e){return new ObjectDataSource({view:e})},applyMetadata:function(e,t,n,i){if(BaseDataSourceBuilder.prototype.applyMetadata.call(this,e,t,n,i),!1 in n&&i.setIsLazy(!1),n.Items&&($.isArray(n.Items)&&i.setItems(n.Items),$.isPlainObject(n.Items))){var o=e.buildBinding(n.Items,{parentView:t});o.setMode(InfinniUI.BindingModes.toElement),o.bindElement(i,"")}}}),window.InfinniUI.ObjectDataSourceBuilder=ObjectDataSourceBuilder;var Parameter=Backbone.Model.extend({defaults:{name:null,view:null,value:void 0},initialize:function(){},onPropertyChanged:function(e,t){"function"==typeof e?(t=e,this.on("onPropertyChanged",t)):this.on("onPropertyChanged:"+e,t)},getName:function(){return this.get("name")},setName:function(e){this.set("name",e),this.name=e},getView:function(){return this.get("view")},getValue:function(){return this.getProperty("")},setValue:function(e){this.setProperty("",e)},getProperty:function(e){var t=this.get("value");return""==e?t:this._nullToUndefined(InfinniUI.ObjectUtils.getPropertyValue(t,e))},setProperty:function(e,t){var n=this.getValue(),i=this.getProperty(e);t!=i&&(""==e?this.set("value",t):InfinniUI.ObjectUtils.setPropertyValue(n,e,t),this._notifyAboutPropertyChanged(e,t,i))},_notifyAboutPropertyChanged:function(e,t,n){var i=this._getContext(),o={};o.property=e,o.newValue=t,o.oldValue=n,this.trigger("onPropertyChanged",i,o),this.trigger("onPropertyChanged:"+e,i,o)},_getContext:function(){var e=this.getView();return e?e.getContext():void 0},_nullToUndefined:function(e){return null===e?void 0:e}});window.InfinniUI.Parameter=Parameter,window.InfinniUI.ParameterBuilder=ParameterBuilder;var formatMixin={separator:", ",setOptions:function(e){this.options=_.extend({},this.options||{},e)},getOptions:function(){return this.options||{}},format:function(e,t,n){var i;if(null!==e&&"undefined"!=typeof e&&e.constructor===Array){for(var o=[],r=0,a=e.length;a>r;r+=1)o.push(this.formatValue(e[r],t,n));i=o.join(this.separator)}else i=this.formatValue.apply(this,arguments);return i},getFormat:function(){return this.getPropertyValue("formatRule",this.defaultFormat)},setFormat:function(e){this.formatRule=e},getPropertyValue:function(e,t){var n=this[e];return"undefined"==typeof n||null===n?t:n}};window.InfinniUI.FormatMixin=formatMixin,window.InfinniUI.DateTimeFormat=DateTimeFormat,_.extend(DateTimeFormat.prototype,{defaultFormat:"G",formatValue:function(e,t,n){if("undefined"==typeof e||null===e)return"";var i=this;t=t||new Culture(InfinniUI.config.lang);var o=this.createDate(e);return n=n||this.getFormat(),"undefined"!=typeof InfinniUI.localizations[t.name].patternDateFormats[n]&&(n=InfinniUI.localizations[t.name].patternDateFormats[n]),n.replace(this.rg,function(e){if('"'==e[0]||"'"==e[0]){var n=e.length;return e.substring(1,n-1)}return i.rules[e](o,t)})},createDate:function(e){var t,n=this.getOptions();return t=InfinniUI.DateUtils.createDate(e),InfinniUI.DateUtils.changeTimezoneOffset(t,n.TimeZone)},rg:new RegExp("\"[\\s\\S]*\"|'[\\s\\S]*'|yyyy|yy|%y|y|MMMM|MMM|MM|%M|M|dddd|ddd|dd|%d|d|HH|%H|H|hh|%h|h|mm|%m|m|ss|%s|s|tt|%t|t|zzz|zz|%z|z|:|/","g"),rules:{yyyy:function(e){return e.getFullYear().toString()},yy:function(e){var t=e.getFullYear().toString();return t.substring(2)},"%y":function(e){var t=e.getFullYear().toString();return t=t.substring(2),t=parseInt(t),t.toString()},y:function(e){var t=e.getFullYear().toString();return t=t.substring(2),t=parseInt(t),t.toString()},MMMM:function(e,t){var n=e.getMonth(),i=t.dateTimeFormatInfo.monthNames[n];return i},MMM:function(e,t){var n=e.getMonth(),i=t.dateTimeFormatInfo.abbreviatedMonthNames[n];return i},MM:function(e){var t=e.getMonth()+1;return 10>t?"0"+t.toString():t.toString()},"%M":function(e){var t=e.getMonth()+1;return t.toString()},M:function(e){var t=e.getMonth()+1;return t.toString()},dddd:function(e,t){var n,i=e.getDay();return i=0==i?6:i-1,n=t.dateTimeFormatInfo.dayNames[i]},ddd:function(e,t){var n,i=e.getDay();return i=0==i?6:i-1,n=t.dateTimeFormatInfo.abbreviatedDayNames[i]},dd:function(e){var t=e.getDate();return 10>t?"0"+t.toString():t.toString()},"%d":function(e){var t=e.getDate();return t.toString()},d:function(e){var t=e.getDate();return t.toString()},HH:function(e){var t=e.getHours();return 10>t?"0"+t.toString():t.toString()},"%H":function(e){var t=e.getHours();return t.toString()},H:function(e){var t=e.getHours();return t.toString()},hh:function(e){var t=e.getHours();return t>12&&(t-=12),10>t?"0"+t.toString():t.toString()},"%h":function(e){var t=e.getHours();return t>12&&(t-=12),t.toString()},h:function(e){var t=e.getHours();return t>12&&(t-=12),t.toString()},mm:function(e){var t=e.getMinutes();return 10>t?"0"+t.toString():t.toString()},"%m":function(e){var t=e.getMinutes();return t.toString()},m:function(e){var t=e.getMinutes();return t.toString()},ss:function(e){var t=e.getSeconds();return 10>t?"0"+t.toString():t.toString()},"%s":function(e){var t=e.getSeconds();return t.toString()},s:function(e){var t=e.getSeconds();return t.toString()},tt:function(e,t){var n=e.getHours();return 12>n?t.dateTimeFormatInfo.amDesignator:t.dateTimeFormatInfo.pmDesignator},"%t":function(e,t){var n=e.getHours();return 12>n?t.dateTimeFormatInfo.amDesignator.substr(0,1):t.dateTimeFormatInfo.pmDesignator.substr(0,1)},t:function(e,t){var n=e.getHours();return 12>n?t.dateTimeFormatInfo.amDesignator.substr(0,1):t.dateTimeFormatInfo.pmDesignator.substr(0,1)},zzz:function(e){var t,n,i=-e.getTimezoneOffset()/60;return t=100*(i-Math.floor(i)),i=Math.floor(i),0>i?(n="-",i=-i):n="+",t=10>t?"0"+t.toString():t.toString(),10>i?n+"0"+i.toString()+":"+t:n+i.toString()+":"+t},zz:function(e){var t,n=-e.getTimezoneOffset()/60;return n=Math.floor(n),0>n?(t="-",n=-n):t="+",10>n?t+"0"+n.toString():t+n.toString()},z:function(e,t){var n,i=-e.getTimezoneOffset()/60;return i=Math.floor(i),0>i?(n="-",i=-i):n="+",n+i.toString()},"%z":function(e,t){var n,i=-e.getTimezoneOffset()/60;return i=Math.floor(i),0>i?(n="-",i=-i):n="+",n+i.toString()},":":function(e,t){return t.dateTimeFormatInfo.timeSeparator},"/":function(e,t){return t.dateTimeFormatInfo.dateSeparator}}},formatMixin),window.InfinniUI.DateTimeFormatBuilder=DateTimeFormatBuilder;var BooleanFormat=function(){};window.InfinniUI.BooleanFormat=BooleanFormat,_.extend(BooleanFormat.prototype,{defaultTrueText:"True",defaultFalseText:"False",getFalseText:function(){return this.getPropertyValue("falseText",this.defaultFalseText)},setFalseText:function(e){this.falseText=e},getTrueText:function(){return this.getPropertyValue("trueText",this.defaultTrueText)},setTrueText:function(e){this.trueText=e},formatValue:function(e){return e===!1||null===e||"undefined"==typeof e?this.getFalseText():this.getTrueText()}},formatMixin),window.InfinniUI.BooleanFormatBuilder=BooleanFormatBuilder,window.InfinniUI.NumberFormat=NumberFormat,_.extend(NumberFormat.prototype,{defaultFormat:"n",formatValue:function(e,t,n){if("undefined"==typeof e||null===e)return"";var i=this;return t=t||new Culture(InfinniUI.config.lang),n=n||this.getFormat(),n.replace(this.rg,function(n,o,r){return r=void 0!==r&&""!=r?parseInt(r):void 0, -i.rules[o].call(i,e,r,t)})},rg:/^([pnc])(\d*)$/gi,rules:{P:function(e,t,n){t=void 0!==t?t:n.numberFormatInfo.percentDecimalDigits;var i,o=e>=0,r=this.formatNumber(Math.abs(e),t,n.numberFormatInfo.percentGroupSeparator,n.numberFormatInfo.percentDecimalSeparator);return i=o?n.numberFormatInfo.percentPositivePattern.replace("p",r):n.numberFormatInfo.percentNegativePattern.replace("p",r),i=i.replace("%",n.numberFormatInfo.percentSymbol)},p:function(e,t,n){return e*=100,this.rules.P.call(this,e,t,n)},n:function(e,t,n){t=void 0!==t?t:n.numberFormatInfo.numberDecimalDigits;var i,o=e>=0,r=this.formatNumber(Math.abs(e),t,n.numberFormatInfo.numberGroupSeparator,n.numberFormatInfo.numberDecimalSeparator);return i=o?n.numberFormatInfo.numberPositivePattern.replace("n",r):n.numberFormatInfo.numberNegativePattern.replace("n",r)},N:function(){return this.rules.n.apply(this,arguments)},c:function(e,t,n){t=void 0!==t?t:n.numberFormatInfo.currencyDecimalDigits;var i,o=e>=0,r=this.formatNumber(Math.abs(e),t,n.numberFormatInfo.currencyGroupSeparator,n.numberFormatInfo.currencyDecimalSeparator);return i=o?n.numberFormatInfo.currencyPositivePattern.replace("c",r):n.numberFormatInfo.currencyNegativePattern.replace("c",r),i=i.replace("$",n.numberFormatInfo.currencySymbol)},C:function(){return this.rules.c.apply(this,arguments)}},formatNumber:function(e,t,n,i){e=e.toFixed(t);var o=e.toString(),r=o.split("."),a=this.formatIntPath(r[0],n),l=this.formatFractPath(r[1],i,t);return a+l},formatIntPath:function(e,t){return e.replace(/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g,"$1"+t)},formatFractPath:function(e,t,n){var i,o=e?e:"";return 0==n?"":o.length>=n?t+o.substr(0,n):(i=Math.pow(10,n-o.length),i=i.toString().substr(1),t+o+i)}},formatMixin),window.InfinniUI.NumberFormatBuilder=NumberFormatBuilder,window.InfinniUI.ObjectFormat=ObjectFormat,_.extend(ObjectFormat.prototype,{formatValue:function(e,t,n){t=t||new Culture(InfinniUI.config.lang),n=n||this.getFormat();var i=/{[^}]*}/g,o="";return o=n.replace(i,this.formatIterator.bind(this,e,t))},formatIterator:function(e,t,n){var i,o,r,a,l,s=/^{|}$/g;if(i=n,o=n.replace(s,""),l=o.split(":"),a="object"==typeof e?""===l[0]?e:InfinniUI.ObjectUtils.getPropertyValue(e,l[0]):e,2===l.length){for(var u=0,d=this.formatters.length;d>u;u+=1)if(r=new this.formatters[u](l[1]),r.setOptions(this.getOptions()),o=r.format(a,t),o!==l[1]){i=o;break}}else i=a;return"undefined"==typeof i||null===i?"":i}},formatMixin),window.InfinniUI.ObjectFormatBuilder=ObjectFormatBuilder;var editMaskMixin={reset:function(e){this.value=e,this.buildTemplate(e)},buildTemplate:function(){},getValue:function(){return this.value},getData:function(){return this.getValue()},moveToPrevChar:function(e){return!1},moveToNextChar:function(e){return!1},setNextValue:function(e){return!1},setPrevValue:function(e){return!1},deleteSelectedText:function(e,t){return!1},deleteCharRight:function(e){return!1},deleteCharLeft:function(e){return!1},setCharAt:function(e,t){return!1},pasteStringToMask:function(e,t){return!1},getNextItemMask:function(e){return!1},getText:function(){var e;return null!==this.value&&"undefined"!=typeof this.value&&(e=String(this.value)),e},formatMask:function(e,t){return null===e||"undefined"==typeof e?"":e},getNextIntValue:function(e,t){e=e||{};var n=null,i=null,o="undefined"!=typeof e.step?o:1;return"undefined"!=typeof e.min&&(n=e.min),"undefined"!=typeof e.max&&(i=e.max),t=parseInt(t,10),isNaN(t)?t=null===n?0:n:(t+=o,null!==i&&t>i&&(t=i)),t},getPrevIntValue:function(e,t){e=e||{};var n=null,i="undefined"!=typeof e.step?i:1;return"undefined"!=typeof e.min&&(n=e.min),t=parseInt(t,10),isNaN(t)?t=null===n?0:n:(t-=i,null!==n&&n>t&&(t=n)),t},formatInt:function(e,t){var n="undefined"!=typeof e.width?e.width:null;t=parseInt(t,10);var i,o;return isNaN(t)&&(t=""),i=t.toString(),o=i.length,null!==n&&n>o&&(i=Array(n-o+1).join("0")+i),i},getIsComplete:function(e){return!1}};window.InfinniUI.EditMaskMixin=editMaskMixin;var DateTimeMaskPartStrategy=function(){var e=/^(?:3[0-1]|[012]?[0-9]?)$/,t=/^(?:1[0-2]|0?[1-9]?)$/,n=/^\d{1,4}$/,i=/^\d{1,2}$/,o=/^(?:[2][0-3]|[01]?[0-9]?)$/,r=/^[0-5]?[0-9]$/;return{d:{init:function(){this.width=2,this.min=1,this.max=31},match:function(t){return e.test(t)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setDate(t),e}},dd:{init:function(){this.width=2,this.min=1,this.max=31},match:function(t){return e.test(t)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setDate(t),e}},M:{init:function(){this.width=2,this.min=1,this.max=12},match:function(e){return t.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMonth(parseInt(t,10)-1),e}},MM:{init:function(){this.width=2,this.min=1,this.max=12},match:function(e){return t.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMonth(parseInt(t,10)-1),e}},y:{init:function(){this.width=2,this.min=0,this.max=99},match:function(e){return i.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){var n=parseInt(t,10);if(!isNaN(n)){n="0000"+n;var i=new Date;e.setFullYear(i.getFullYear().toString().substr(0,2)+n.slice(-2))}return e}},yy:{init:function(){this.width=2,this.min=0,this.max=99},match:function(e){return i.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){var n=parseInt(t,10);if(!isNaN(n)){n="0000"+n;var i=new Date;e.setFullYear(i.getFullYear().toString().substr(0,2)+n.slice(-2))}return e}},yyyy:{init:function(){this.width=4,this.min=0,this.max=9999},match:function(e){return n.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setFullYear(t),e}},H:{init:function(){this.width=2,this.min=0,this.max=23},match:function(e){return o.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setHours(t),e}},HH:{init:function(){this.width=2,this.min=0,this.max=23},match:function(e){return o.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setHours(t),e}},m:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMinutes(t),e}},mm:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMinutes(t),e}},s:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setSeconds(t),e}},ss:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setSeconds(t),e}},MMM:{init:function(){this.min=2,this.max=12,this.width=2},match:function(){return!1},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevMonthValue("MMM",e)},next:function(e){return this.getNextMonthValue("MMM",e)},apply:function(e,t){var n=this.getIndexMonthValue("MMM",t);return-1!==n&&e.setMonth(n),e}},MMMM:{init:function(){this.min=2,this.max=12,this.width=2},match:function(){return!1},validator:function(e){var t=this.getListForMask("MMMM");return t.indexOf(e)>-1},prev:function(e){return this.getPrevMonthValue("MMMM",e)},next:function(e){return this.getNextMonthValue("MMMM",e)},apply:function(e,t){var n=this.getIndexMonthValue("MMMM",t);return-1!==n&&e.setMonth(n),e}}}}(),DateTimeMaskPart=function(e){_.extend(this,DateTimeMaskPartStrategy[e]),this.init()};_.extend(DateTimeMaskPart.prototype,{init:function(){},match:function(e){return!0},validator:function(e){return!0},fulfilled:function(e){return this.match(e)&&this.validator(e)},prev:function(e){return e},next:function(e){return e},format:function(e){return e},applyPart:function(e,t){return e},padNumber:function(e){var t="undefined"!=typeof this.width?this.width:null;e=parseInt(e,10);var n,i;return n=isNaN(e)?n="":e.toString(),i=n.length,null!==t&&t>i&&(n=Array(t-i+1).join("0")+n),n},getNextIntValue:function(e){var t="undefined"!=typeof this.min?this.min:null,n="undefined"!=typeof this.max?this.max:null,i="undefined"!=typeof this.step?this.step:1;return e=parseInt(e,10),isNaN(e)?e=null===t?0:t:(e+=i,null!==n&&e>n&&(e=n)),e},getPrevIntValue:function(e){var t="undefined"!=typeof this.min?this.min:null,n="undefined"!=typeof this.step?this.step:1;return e=parseInt(e,10),isNaN(e)?e=null===t?0:t:(e-=n,null!==t&&t>e&&(e=t)),e},getListForMask:function(e){var t,n=new Culture(InfinniUI.config.lang),i=n.dateTimeFormatInfo;switch(e){case"MMMM":t=i.monthNames;break;case"MMM":t=i.abbreviatedMonthNames;break;case"dddd":t=i.dayNames;break;case"ddd":t=i.abbreviatedDayNames}return t},getNextListValueForMask:function(e,t){var n=this.getListForMask(e),i=n.indexOf(t);return"undefined"==typeof n?t:-1===i?n.length?n[0]:"":(i+=1,i=0?n[i]:t)},getIndexListValueForMask:function(e,t){var n=this.getListForMask(e);return"undefined"==typeof n?-1:n.indexOf(t)},getNextMonthValue:function(e,t){return this.getNextListValueForMask(e,t)},getPrevMonthValue:function(e,t){return this.getPrevListValueForMask(e,t)},getIndexMonthValue:function(e,t){return this.getIndexListValueForMask(e,t)},rangeValidator:function(e){return e=parseInt(e,10),!(isNaN(e)||ethis.max)}}),window.InfinniUI.DateTimeEditMask=DateTimeEditMask,_.extend(DateTimeEditMask.prototype,editMaskMixin),_.extend(DateTimeEditMask.prototype,{getNextItemMask:function(e){var t,n=this.getItemTemplate(e);return null!==n?(t=this.moveToNextChar(n.left+n.width),t>n.left+n.width&&(e=t)):e=this.moveToNextChar(e),e},setNextValue:function(e){var t,n,i,o=this.getItemTemplate(e);return null!==o?(t=o.item,i=this.masks[t.mask],"undefined"!=typeof i.next&&(n=i.next(t.text),"undefined"!=typeof i.format&&(n=i.format(n)),t.text=""+n,e=Math.min(o.left+t.text.length,e))):e=this.moveToNextChar(e),e},setPrevValue:function(e){var t,n,i,o=this.getItemTemplate(e);return null!==o?(t=o.item,i=this.masks[t.mask],"undefined"!=typeof i.prev&&(n=i.prev(t.text),"undefined"!=typeof i.format&&(n=i.format(n)),t.text=""+n,e=Math.min(o.left+t.text.length,e))):e=this.moveToNextChar(e),e},deleteSelectedText:function(e,t,n){var i,o,r,a,l,s=e,u=t;n=n||"";for(var d=e+n.length-1;(i=this.getItemTemplate(s))&&(l=s,o=s-i.left,r=i.item.text,a=this.masks[i.item.mask],r=r.substring(0,o)+n+r.substring(o+u),r.length&&!a.match(r)||(i.item.text=r),s=this.getNextItemMask(s),l!==s);)u=t-(s-e),n="";return this.moveToNextChar(d)},deleteCharLeft:function(e,t){var n,i,o=this.getItemTemplate(e);return t?e=this.deleteSelectedText(e,t):null!==o?o.index>0?(n=o.item,e--,i=n.text.slice(0,o.index-1)+n.text.slice(o.index),n.text=i):(o=this.getItemTemplate(o.left-1),e=o.left+o.item.text.length):e=this.moveToNextChar(e),e},deleteCharRight:function(e,t){var n,i,o=this.getItemTemplate(e);return t?e=this.deleteSelectedText(e,t):null!==o?(n=o.item,i=n.text.slice(0,o.index)+n.text.slice(o.index+1),n.text=i,0==n.text.length&&(e=this.getNextItemMask(e))):e=this.moveToNextChar(e),e},pasteStringToMask:function(e,t){function n(e){return Math.max(e.mask.length,e.text.length)}function i(n){for(var i=0,o=[],r=a;rn[r].position-i-t&&o.push(n[r]):i+=n[r].length;return o[o.length-1]}e=e.replace(/\D/gi,"");var o=e.split(""),r=this.getItemTemplate(t),a=this.template.indexOf(r.item),l=0,s=i(this.template);l=s?this.template.indexOf(s):a;for(var u=0,d=0,c=a;l+1>c;c++)if("object"==typeof this.template[c])if(c==a){d=n(this.template[c]),u=d-(t-this.template[c].position);var h=this.template[c].text.slice(0,t-this.template[c].position),p="";if(!h)for(var m=0;md&&o.splice(d,o.length),this.template[c].text=o.join("")+this.template[c].text.slice(o.length,d))},getItemTemplate:function(e){var t,n,i,o=this.template,r=0,a=null;if("undefined"==typeof o&&(this.reset(),o=this.template),!Array.isArray(o))return null;for(var l=0,s=o.length;s>l;l+=1)if(t=o[l],"string"==typeof t)r+=t.length;else{if(n=Math.max(this.masks[t.mask].width,t.text.length),r>e||e>=r&&r+n>=e){i=e-r,a={item:t,left:r,width:n,index:e-r};break}r+=n}return a},setCharAt:function(e,t){var n,i,o,r,a,l=this.getItemTemplate(t);if(null!==l)if(i=l.item,r=t-l.left,r>i.text.length&&(t=l.left),o=this.masks[i.mask],a=t-i.position,0>a&&(a=0),n=i.text.slice(a,a+1)?[i.text.slice(0,a),e,i.text.slice(a+1)].join(""):[i.text.slice(0,l.index),e,i.text.slice(l.index)].join(""),o.match(n))i.text=n,t=this.moveToNextChar(t),o.width===a+1&&(t=this.getNextItemMask(t));else{var s=this.template.indexOf(l.item)+1;this.template[s]===e&&(t=this.getNextItemMask(t))}else t=this.moveToNextChar(t);return t},moveToPrevChar:function(e){e-=1;for(var t,n,i,o=this.template,r=0,a=r,l=0,s=o.length;s>l;l+=1)if(t=o[l],"string"==typeof t)r+=t.length,"undefined"==typeof a&&(a=r);else{if(n=t.mask,i=Math.max(this.masks[n].width,t.text.length),e>=r&&r+i>e)break;if(r>e){e=a;break}r+=i,a=r}return l===s&&e>a&&(e=a),e},moveToNextChar:function(e){e+=1;for(var t,n,i,o,r=this.template,a=0,l=0,s=r.length;s>l;l+=1)if(t=r[l],"string"==typeof t)a+=t.length;else{if(i=t.mask,o=Math.max(this.masks[i].width,t.text.length),e>=a&&a+o>=e)break;if(a>e){e=a;break}a+=o,n=a}return l===s&&e>=n&&(e=n),e},getText:function(){var e,t,n=this.template,i=[];if(Array.isArray(n)){for(var o=0,r=n.length;r>o;o+=1)e=n[o],"string"==typeof e?i.push(e):(t=Array(this.masks[e.mask].width+1).join("_"),e.text.lengtht;t+=1)a=i.indexOf(o[t]),-1!==a&&(r=o[t].length,i=[i.substring(0,a),Array(r+1).join(" "),i.substring(a+r)].join(""),l.push({mask:o[t],position:a}));l.sort(function(e,t){return e.position-t.position});var s,u=[],d=0;for(t=0,n=l.length;n>t;t+=1)s=l[t],do;o+=1)if(e=n[o],"string"!=typeof e&&(t=this.masks[e.mask],!t.validator(e.text))){i=!1;break}return i},masks:{d:new DateTimeMaskPart("d"),dd:new DateTimeMaskPart("dd"),M:new DateTimeMaskPart("M"),MM:new DateTimeMaskPart("MM"),y:new DateTimeMaskPart("y"),yy:new DateTimeMaskPart("yy"),yyyy:new DateTimeMaskPart("yyyy"),H:new DateTimeMaskPart("H"),HH:new DateTimeMaskPart("HH"),m:new DateTimeMaskPart("m"),mm:new DateTimeMaskPart("mm"),s:new DateTimeMaskPart("s"),ss:new DateTimeMaskPart("ss"),MMM:new DateTimeMaskPart("MMM"),MMMM:new DateTimeMaskPart("MMMM")}}),window.InfinniUI.DateTimeEditMaskBuilder=DateTimeEditMaskBuilder;var TemplateMaskPartStrategy=function(){function e(e){return"undefined"==typeof e||""===e||null===e}var t=/^[a-zA-Zа-яА-ЯёЁ]$/,n=/^\d$/,i=/^[-+]$/;return{c:{required:!1,width:1,validator:function(e){return!0},regexp:".?"},C:{required:!0,width:1,validator:function(t){return!e(t)},regexp:"."},l:{required:!1,width:1,validator:function(n){return e(n)||t.test(n)},regexp:"[a-zA-Zа-яА-ЯёЁ]?"},L:{required:!0,width:1,validator:function(n){return!e(n)&&t.test(n)},regexp:"[a-zA-Zа-яА-ЯёЁ]"},a:{required:!1,width:1,validator:function(i){return e(i)||t.test(i)||n.test(i)},regexp:"[a-zA-Zа-яА-ЯёЁ0-9]?"},A:{required:!0,width:1,validator:function(i){return!e(i)&&(t.test(i)||n.test(i))},regexp:"[a-zA-Zа-яА-ЯёЁ0-9]?"},"#":{required:!1,width:1,validator:function(t){return e(t)||i.test(t)},regexp:"[-+]?"},9:{required:!1,width:1,validator:function(t){return e(t)||n.test(t)},regexp:"[0-9]?"},0:{required:!0,width:1,validator:function(t){return!e(t)&&n.test(t)},regexp:"[0-9]"}}}(),TemplateMaskPart=function(e){_.extend(this,TemplateMaskPartStrategy[e])};_.extend(TemplateMaskPart.prototype,{validate:function(e){return this.validator(e)},getIsComplete:function(e){return!this.required||""!==e&&"undefined"!=typeof e&&null!==e}}),window.InfinniUI.TemplateEditMask=TemplateEditMask,_.extend(TemplateEditMask.prototype,editMaskMixin),_.extend(TemplateEditMask.prototype,{buildTemplate:function(e){var t,n=[],i=this.mask,o=0;for(i.length;on;)e=this.mask.substr(n,1),"undefined"!=typeof this.masks[e]?l(this.masks[e].regexp):"\\"===e?(t=this.mask.substr(n+1,1),"undefined"!=typeof this.masks[t]?this.maskSaveLiteral&&(l(t,!0),n+=1):this.maskSaveLiteral&&l("\\\\",!0)):this.maskSaveLiteral&&l(a.test(e)?e.replace(a,"\\$1"):e,!0),n+=1;return new RegExp("^"+o.join("")+"$")},setValue:function(e){null!==e&&"undefined"!=typeof e||(e=""),e+="";var t,n,i,o,r,a=this.getRegExpForMask();for(t=a.test(e)?e.match(a).slice(1):[],i=0,o=this.template.length;o>i;i+=1)r=this.template[i],"string"!=typeof r&&(n=t.shift(),r.text="undefined"==typeof n?"":n[0])},getValue:function(){var e,t=this.template,n=[];if(Array.isArray(t)){for(var i=0,o=t.length;o>i;i+=1)"string"==typeof t[i]&&this.maskSaveLiteral?n.push(t[i]):(e=t[i].text,null!==e&&""!==e&&"undefined"!=typeof e&&n.push(e));return n.join("")}},moveToNextChar:function(e){e=Math.max(e,0);var t,n,i=this.template,o=i.slice(e),r=null,a=!1;for(t=0,n=o.length;n>t;t+=1){if("string"!=typeof o[t]){r=o[t].position-(a?1:0);break}a=!0}if(null===r)for(o=i.slice(0,e),t=o.length-1;t>=0;t-=1)if("string"!=typeof o[t]){r=o[t].position;break}return null===r?0:r+1},moveToPrevChar:function(e){e=Math.max(e,0);var t,n,i=this.template,o=i.slice(0,e),r=null,a=!1;for(t=o.length-1;t>=0;t-=1){if("string"!=typeof o[t]){r=o[t].position+(a?1:0);break}a=!0}if(null===r)for(o=i.slice(e),t=0,n=o.length;n>t;t+=1)if("string"!=typeof o[t]){r=o[t].position;break}return null===r?0:r},getItemTemplate:function(e){var t,n,i,o=this.template,r=0,a=null;if("undefined"==typeof o&&(this.reset(),o=this.template),!Array.isArray(o))return null;for(var l=0,s=o.length;s>l;l+=1)if(t=o[l],"string"==typeof t)r+=t.length;else{if(n=Math.max(this.masks[t.mask].width,t.text.length),r>e||e>=r&&r+n>=e){i=e-r,a={item:t,left:r,width:n,index:e-r};break}r+=n}return a},deleteCharRight:function(e,t){var n,i,o;if(t>0)return this.deleteSelectedText(e,t);for(i=0,o=this.template.length;o>i;i+=1)if(n=this.template[i],!("string"==typeof n||n.position0)return this.deleteSelectedText(e,t);for(i=this.template.length-1;i>=0;i-=1)if(n=this.template[i],!("string"==typeof n||n.position>=e)){e=n.position,n.text="";break}return e},pasteStringToMask:function(e,t){function n(e){return Math.max(e.mask.length,e.text.length)}function i(n){for(var i=0,o=[],r=a;rn[r].position-i-t&&o.push(n[r]):i+=n[r].length;return o[o.length-1]}e=e.replace(/\D/gi,"");var o=e.split(""),r=this.getItemTemplate(t),a=this.template.indexOf(r.item),l=0,s=i(this.template);l=s?this.template.indexOf(s):a;for(var u=0,d=0,c=a;l+1>c;c++)if("object"==typeof this.template[c])if(c==a){d=n(this.template[c]),u=d-(t-this.template[c].position);var h=this.template[c].text.slice(0,t-this.template[c].position);this.template[c].text=h+e.slice(0,u),o.splice(0,u)}else c!=l?(d=n(this.template[c]),this.template[c].text=o.join("").slice(0,d),o.splice(0,d)):(d=n(this.template[c]),o.length>d&&o.splice(d,o.length),this.template[c].text=o.join("")+this.template[c].text.slice(o.length,d))},clearText:function(e,t){for(var n,i,o=0,r=this.template.length;r>o;o+=1)n=this.template[o],"string"!=typeof n&&n.position>=e&&n.position0&&this.clearText(t,n);for(var a=0,l=r.length;l>a;a+=1){var s=r[a];if("string"!=typeof s){if(s.position===t){i=this.masks[s.mask],o=e.substr(0,1),i.validate(o)&&(s.text=o,t=this.getNextItemMask(t));break}if(s.position>t)break}}return t},deleteSelectedText:function(e,t,n){var i=this.clearText(e,t);return"undefined"!=typeof n&&(i=this.setCharAt(n,e)),i},getNextItemMask:function(e){var t,n,i;for(n=this.template.length-1;n>=0;n-=1)if(t=this.template[n],"string"!=typeof t){if(t.position<=e){e="undefined"==typeof i?this.moveToNextChar(e):i;break}i=t.position}return e},getText:function(){for(var e,t=this.template,n=[],i=0,o=t.length;o>i;i+=1)"string"==typeof t[i]?n.push(this.parseSpecialChars(t[i])):(e=t[i].text,"undefined"==typeof e||""===e||null===e?n.push(this.maskPlaceHolder):n.push(e));return n.join("")},getIsComplete:function(){var e,t,n,i,o=!0;for(e=0,t=this.template.length;t>e&&(n=this.template[e],"string"==typeof n||(i=this.masks[n.mask],o=i.getIsComplete(n.text),o));e+=1);return o},reset:function(e){this.value=null,"undefined"!=typeof e&&null!==e&&(this.value=e),this.buildTemplate(e)},parseSpecialChars:function(e){var t,n,i=InfinniUI.localizations[InfinniUI.config.lang],o={"/":i.dateTimeFormatInfo.dateSeparator,":":i.dateTimeFormatInfo.timeSeparator,"%":i.numberFormatInfo.percentSymbol,$:i.numberFormatInfo.currencySymbol},r=[];for(var a in o)if(o.hasOwnProperty(a)){for(r=e.split(""),t=0,n=r.length;n>t;t+=1)r[t]===a&&(r[t]=o[a]);e=r.join("")}return e},masks:{c:new TemplateMaskPart("c"),C:new TemplateMaskPart("C"),l:new TemplateMaskPart("l"),L:new TemplateMaskPart("L"),a:new TemplateMaskPart("a"),A:new TemplateMaskPart("A"),"#":new TemplateMaskPart("#"),9:new TemplateMaskPart("9"),0:new TemplateMaskPart("0")}}),window.InfinniUI.TemplateEditMaskBuilder=TemplateEditMaskBuilder,window.InfinniUI.NumberEditMask=NumberEditMask,_.extend(NumberEditMask.prototype,editMaskMixin),_.extend(NumberEditMask.prototype,{placeholder:"_",getDecimalSeparator:function(){var e,t=this.getItemTemplate(),n=t.item,i=/^[npc]/i,o=n.mask.match(i);if(o&&o.length>0)switch(o[0]){case"n":case"N":e=this.culture.numberFormatInfo.numberDecimalSeparator;break;case"p":case"P":e=this.culture.numberFormatInfo.percentDecimalSeparator;break;case"c":case"C":e=this.culture.numberFormatInfo.currencyDecimalSeparator}return e},getDecimalDigits:function(){var e=this.getItemTemplate(),t=e.item,n=/^([npc])(\d*)$/i,i=t.mask.match(n),o=0;if(i&&i.length>0)if(""!==i[2])o=+i[2];else switch(i[0]){case"n":case"N":o=this.culture.numberFormatInfo.numberDecimalDigits;break;case"p":case"P":o=this.culture.numberFormatInfo.percentDecimalDigits;break;case"c":case"C":o=this.culture.numberFormatInfo.currencyDecimalDigits}return o},reset:function(e){this.value=null,"undefined"!=typeof e&&null!==e&&""!==e&&(e=+e,isNaN(e)&&(e=null),this.value=e),this.template=this.buildTemplate(e)},buildTemplate:function(e){var t=/([npc])(\d*)/i,n=this.mask,i=[],o=this;return n.replace(t,function(t,n,r,a,l){i.push(l.slice(0,a)),i.push({mask:t,text:null===e?"":o.formatMask(e,t),value:e}),i.push(l.substring(a+t.length))}),this.template=i},getText:function(){var e,t=[];if(Array.isArray(this.template)){for(var n=0,i=this.template.length;i>n;n+=1)e=this.template[n],"string"==typeof e?t.push(e):"undefined"==typeof e.value||null===e.value?t.push(this.formatMask(0,e.mask).replace(/0/g,this.placeholder)):t.push(this.formatMask(e.value,e.mask));return t.join("")}},formatMask:function(e,t){return null===e||"undefined"==typeof e?"":this.format.format(e,void 0,t)},moveToPrevChar:function(e){e=e>0?e-1:0;var t,n,i=this.getItemTemplate(),o=i.item,r=o.text;if(ee?0:e+1;for(var t,n,i=this.getItemTemplate(),o=i.item,r=o.text+" ",a=Math.max(0,e-i.left),l=/\d/,s=0,u=0,d=r.length;d>u;u+=1)if(l.test(r[u])!==!1||(n=r[u-1],"undefined"==typeof n||l.test(n))){if(!(a>u)){t=u;break}s=u}return"undefined"==typeof t&&(t=s),e=i.left+t},setCharAt:function(e,t){var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text,l=this.getDecimalSeparator();if("-"===e&&null!==r.value)r.value=-r.value,r.text=this.formatMask(r.value,r.mask),t+=r.text.length-a.length;else if(t>=i.left&&t<=i.left+a.length)if(n=t-o,e==l)null===r.value&&(r.value=0,r.text=this.formatMask(r.value,r.mask)),-1!==r.text.indexOf(l)&&(t=o+r.text.indexOf(l)+l.length);else if(/\d/.test(e)){var s;s=a.indexOf(l)>-1&&n>a.indexOf(l),r.value=this.parseText([a.slice(0,n),e,a.slice(n)].join(""),r.value),r.text=this.formatMask(r.value,r.mask),""===a?t=this.moveToNextChar(o):(t=s?t+1:t+r.text.length-a.length,t=Math.min(t,o+this.getIndexOfEndDigit(r.text)))}return t},updateDigitValue:function(e,t){var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text;if(ei.left+a.length)return this.moveToNextChar(e);if(n=e-o,n>0){var l=a.substr(n-1,1);/\d/.test(l)&&(l=parseInt(l,10)+t,l>9&&(l=9),0>l&&(l=0),r.value=this.parseText([a.slice(0,n-1),l,a.slice(n)].join(""),r.value),r.text=this.formatMask(r.value,r.mask))}return e},setNextValue:function(e){return this.updateDigitValue(e,1)},setPrevValue:function(e){return this.updateDigitValue(e,-1)},deleteSelectedText:function(e,t,n){function i(e,t){return e.slice(0,t).split(" ").length-1}var o=this.getItemTemplate(),r=o.item,a=r.text,l=r.value.toString(),s=t+e;n||(n="");var u=a.slice(0,e),d=a.slice(0,s),c=u.split(" ").length-1,h=d.split(" ").length-1;e-=c,s-=h;var p=l.slice(0,e)+n+l.slice(s,l.length),m=this.formatMask(p,r.mask);return n?(e+=n.length+c,e+=i(m,e)):e+=i(m,e),_.isEmpty(p)&&(p=null),this.reset(p),p?e:0},deleteCharRight:function(e,t){if(t>0)return this.deleteSelectedText(e,t);var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text,l=this.getDecimalSeparator();if(ei.left+a.length)return this.moveToNextChar(0);if(a.length===t)return this.clearValue(r);n=e-o;var s=a.indexOf(l),u=a.substr(n).search(/\d/);if(0===r.value)r.value=null,r.text=this.formatMask(r.value,r.mask),e=o;else if(u>-1){u+=n;var d=a.split(l);n===d[0].length?r.value=this.parseText(d[0],r.value):r.value=this.parseText([a.substr(0,u),a.substr(u+1)].join(""),r.value),r.text=this.formatMask(r.value,r.mask),s>u&&(e=o+Math.min(u-(a.length-1-r.text.length),r.text.indexOf(l)))}return e},clearValue:function(e){return e.value=null,e.text=this.formatMask(e.value,e.mask),0},deleteCharLeft:function(e,t){var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text,l=this.getDecimalSeparator(),s=a.indexOf(l);if(ei.left+a.length)return this.moveToNextChar(0);var u=this.getDecimalDigits();if(n=e-o,a.length===t)return this.clearValue(r);var d=!1;if(0>=n)return e;s>-1&&(d=n>s,n===a.length-u&&(n-=l.length,e-=l.length));var c=a.slice(0,n),h=/\d/.test(c)?c.length-c.split("").reverse().join("").search(/\d/)-1:0;return r.value=this.parseText(a.slice(0,h)+a.slice(h+1),r.value),r.text=this.formatMask(r.value,r.mask),e=d?e-1:e+r.text.length-a.length,0===r.value&&1>=e&&(r.value=null,r.text=this.formatMask(r.value,r.mask),e=o),e},getValue:function(){var e,t=this.getItemTemplate();return t&&(e=t.item.value),e},getIndexOfEndDigit:function(e){var t=e.split("").reverse().join("").search(/\d/);return-1===t?t:e.length-t},parseText:function(e,t){var n,i=this.getItemTemplate(),o=i.item,r=o.mask,a=this.getDecimalSeparator(),l=this.getDecimalDigits(),s=e.split(a);return s=s.map(function(e,t){var n=e.replace(/[^\d]/g,"");return 1===t?n.substr(0,l):n}),e=s.join("."),""===e?n=null:(n=+e,0>t&&(n=-n),/^p/.test(r)&&(n/=100)),n},getItemTemplate:function(){var e,t=this.template,n=0,i=null;if("undefined"==typeof t&&(this.reset(),t=this.template),!Array.isArray(t))return null;for(var o=0,r=t.length;r>o;o+=1){if(e=t[o],"string"!=typeof e){i={item:e,left:n};break}n+=e.length}return i},getIsComplete:function(){return!0}}),window.InfinniUI.NumberEditMaskBuilder=NumberEditMaskBuilder,window.InfinniUI.RegexEditMask=RegexEditMask,_.extend(RegexEditMask.prototype,editMaskMixin),_.extend(RegexEditMask.prototype,{getIsComplete:function(e){var t;return this.value=e,null!==this.mask?(t=new RegExp(this.mask),t.test(e)):!1}}),window.InfinniUI.RegexEditMaskBuilder=RegexEditMaskBuilder;var openModeAutoFocusMixin={applyAutoFocus:function(){function e(){clearInterval(i); -}var t=this.view,n=t&&t.getFocusOnControl();if(n){var i=setInterval(function(){var i=t.findAllChildrenByName(n);if(Array.isArray(i)&&i.length>0){var o=i[0];if(!jQuery.contains(document,o.control.controlView.el))return;o.setFocus&&o.setFocus(),e()}},1e3/3);setTimeout(e,3e3)}}};_.extend(LinkViewBuilderBase.prototype,{build:function(e,t){var n=t.metadata,i=this.getParentViewByOpenMode(t,n.OpenMode),o=new LinkView(i),r=this.getViewTemplate(t,i);return o.setViewTemplate(r),"OpenMode"in n&&o.setOpenMode(n.OpenMode),"Container"in n&&o.setContainer(n.Container),"DialogWidth"in n&&o.setDialogWidth(n.DialogWidth),o},getViewTemplate:function(){throw"LinkViewBuilderBase.getViewTemplate: В потомке LinkViewBuilderBase не переопределен метод getViewTemplate."},buildViewByMetadata:function(e,t,n,i){var o=e.builder,r=this.buildParameters(e);if(null!=t){var a=o.buildType("View",t,{parentView:n,parent:n,params:r,suspended:e.suspended});i(a)}else window.InfinniUI.global.logger.error("LinkViewBuilderBase.buildViewByMetadata: view metadata for "+e.metadata+" not found.")},buildParameters:function(e){var t,n=e.metadata.Parameters,i=e.builder,o=e.parentView,r={};if("undefined"!=typeof n&&null!==n)for(var a=0;a'),e.find(".lastfocuselementinmodal").on("focusin",function(){e.find(".firstfocuselementinmodal").focus()}),e.keydown(function(t){$(document.activeElement).hasClass("lastfocuselementinmodal")&&9==(t.which||t.keyCode)&&(t.preventDefault(),e.find(".firstfocuselementinmodal").focus()),$(document.activeElement).hasClass("firstfocuselementinmodal")&&9==(t.which||t.keyCode)&&t.shiftKey&&(t.preventDefault(),e.find(".lastfocuselementinmodal").focus())})},close:function(){this.$modal&&this.$modal.modal("hide")},cleanup:function(){this.view.remove(),this.$modal.remove(),InfinniUI.ModalWindowService.modalWasClosed(this.$modal)}}),window.InfinniUI.AutoHeightService={windowHeight:0,clientHeight:0,exchange:null,times:[],setOuterHeight:function(e,t,n){var i=0;"border-top-width,border-bottom-width,padding-top,padding-bottom,margin-top,margin-bottom".split(",").forEach(function(t){i+=parseInt(e.css(t))});var o=t-i;return n&&(o+=n),e.height(o),o},getModalSelector:function(){return".modal-scrollable"},getSelector:function(){return".verticalAlignmentStretch:not(:hidden)"},buildTree:function(e,t,n,i,o){var e=_.where(o,{parent:t}),r=this;return{isElement:-1!==_.indexOf(i,t),element:t,$element:n,child:_.map(e,function(t){return r.buildTree(e,t.element,t.$element,i,o)})}},formTree:function(e,t,n){for(var i,o,r,a=[],l=0,s=e.length;s>l;l+=1){r=e[l],o=$(r);do{i=o.parent();var u=_.findWhere(a,{element:r});if("undefined"!=typeof u)break;a.push({element:r,$element:o,parent:i.get(0),$parent:i}),o=i,r=i.get(0)}while(r!==t)}return this.buildTree(a,t,n,e,a)},setHeight:function(e,t){var n=e.$element.attr("data-height-original");return""===n&&e.$element.attr("data-height-original",e.element.style.height),this.setOuterHeight(e.$element,t)},defineWay:function(e,t){var n=this.setHeight(e,t),i=this;e.$element.hasClass("pl-scroll-panel")||e.$element.hasClass("modal-scrollable")||(e.$element.hasClass("tab-content")?_.each(e.child,function(e){i.defineWay(e,n)}):e.child.length>0&&this.goThroughTree(e,n))},goThroughTree:function(e,t){var n=this;e.$element.parentsUntil(".modal").length&&e.$element.attr("data-height-original",e.element.style.height);var i=e.$element.children(":not(:hidden):not(.modal-scrollable):not(.modal-backdrop):not(.pl-dropdown-container)"),o=_.chain(i).filter(function(e){var t=$(e).css("position");return-1===["absolute","fixed"].indexOf(t)}).groupBy("offsetTop").value(),r=[];_.each(o,function(t,n){var i=[];_.each(t,function(t){var n=_.find(e.child,function(e){return e.element===t});n&&i.push(n)}),r.push(i.length?0:_.reduce(t,function(e,t){return Math.max(e,$(t).outerHeight(!0))},0)),o[n]=i},this);var a=_.reduce(r,function(e,t){return e+t},0),l=_.reduce(o,function(e,t){return t.length?e+1:e},0),s=Math.floor((t-a)/l);_.each(o,function(e){0!==e.length&&_.each(e,function(e){n.defineWay(e,s)},this)},this)},resize:function(e,t){var n=Date.now(),i=$(e),o=(this.setOuterHeight(i,t),i.find(this.getSelector()));if(0!==o.length){var r=this.formTree(o,e,i);this.defineWay(r,t);var a=Date.now();this.timeWatcher(a-n)}},timeWatcher:function(e){e>=20&&this.times.push(e)},getTimes:function(){return this.times},resizeView:function(e,t){var n=$("#page-content",e),i=this.setOuterHeight(n,t);this.resize(n.get(0),i)},resizeDialog:function(){var e=this;$(this.getModalSelector()).each(function(t,n){e._resizeDialog($(n)),e.resetDialogHeight($(n))})},resetDialogHeight:function(e){if(e.children()){var t=e.children(),n=$(".modal-header",t),i=$(".modal-body",t),o=$(this.getSelector(),e);o.parentsUntil(".modal").css("height","auto"),t.css("top",(this.windowHeight-n.outerHeight(!0)-i.outerHeight(!0))/2),e.children(".modal:not(.messagebox)").height(i.outerHeight(!0)+n.outerHeight(!0))}},_resizeDialog:function(e){var t=10,n=e.children();n.css("margin-top",0);var i=$(".modal-header",n),o=$(".modal-body",n),r=i.outerHeight(!0);o.css("max-height",this.windowHeight-r),n.css("margin-top",0);var a=$(this.getSelector(),e);if(0!==a.length){var l=this.setOuterHeight(e,this.windowHeight-2*t),s=this.setOuterHeight(n,l)-i.outerHeight();this.resize(o[0],s)}},recalculation:function(e){return window.InfinniUI.config.disableAutoHeightServicer===!0?!1:(e=e||document,$("#page-content").addClass("page-content-overflow-hidden"),this.windowHeight=$(window).height(),this.onChangeLayout(e),void(null===this.exchange&&(this.exchange=window.InfinniUI.global.messageBus,this.exchange.subscribe("OnChangeLayout",_.debounce(this.onChangeLayout.bind(this),42)))))},slidingRecalculation:function(e){for(var t=this,n=3;n>=0;n--)setTimeout(function(){t.recalculation(e)},500+300*n)},onChangeLayout:function(e){_.isEmpty(e)&&(e=document);var t=this.windowHeight-$("#page-top:not(:hidden)",e).outerHeight()-$("#page-bottom:not(:hidden)",e).outerHeight()-$("#menu-area:not(:hidden)",e).outerHeight();this.resizeView(e,t),this.resizeDialog()}},window.InfinniUI.openHomePage=function(e){var t=new ApplicationBuilder,n=new SpecialApplicationView;n.open(e),InfinniUI.AutoHeightService.slidingRecalculation(),subscribeRecalculationOnWindowResize(),getHomePageLinkViewPromise().done(function(e){var i=t.buildType("OpenAction",e,{parentView:n});i.execute()})},null!=InfinniUI.config.configName&&(document.title=InfinniUI.config.configName),moment.locale(InfinniUI.config.lang&&InfinniUI.config.lang.substr(0,2)),InfinniUI.providerRegister.register("ObjectDataSource",InfinniUI.Providers.ObjectDataProvider),InfinniUI.providerRegister.register("MetadataDataSource",function(e){return InfinniUI.AutoHeightService.slidingRecalculation(),new InfinniUI.Providers.MetadataProviderREST(new InfinniUI.Providers.QueryConstructorMetadata(InfinniUI.config.serverUrl,e))}),InfinniUI.providerRegister.register("DocumentDataSource",InfinniUI.Providers.RestDataProvider),InfinniUI.providerRegister.register("RestDataSource",InfinniUI.Providers.RestDataProvider),InfinniUI.providerRegister.register("ServerActionProvider",function(){return new InfinniUI.Providers.ServerActionProvider}),InfinniUI.ModalWindowService=function(){function e(){var e=window.InfinniUI.global.messageBus;e.send("OnChangeLayout",{})}var t=[];return{modalWasOpened:function(e){if(0!=t.length){var n=t[t.length-1];n.modal.hide(),n.background.hide()}t.push(e)},modalWasClosed:function(n){for(var i=0,o=t.length;o>i;i++)if(t[i].modal==n){if(i==o-1&&0!=i){var r=t[i-1];r.modal.show(),r.background.show(),e()}t.splice(i,1);break}}}}();var notificationSubscription=function(){var e,t,n,i,o,r={},a=!1,l=function(a,l,s){i=l||i,o=s||o,t=a||t,n=$.hubConnection(window.InfinniUI.config.serverUrl),e=n.createHubProxy(t),_.size(r)>0&&(u("on"),h())},s=function(t,n,i){r[t]||(r[t]=[],e&&e.on(t,c(t))),r[t].push({context:i,callback:n}),!a&&e&&h()},u=function(t){for(var n in r)"on"===t?e.on(n,c(n)):e.off(n)},d=function(t,n){if(n){for(var i=r[t],o=0,a=i.lenght;a>o;o+=1)i[o].context==n&&i.splice(o,1);if(0!==i.length)return}r[t]&&(delete r[t],e&&e.off(t)),f()},c=function(e){return function(t){var n=r[e];if(n)for(var i=0,o=n.length;o>i;i+=1)n[i].callback(n[i].context,{message:t})}},h=function(){a=!0,n.start().done(function(){console.log("signalR: connection is started"),"function"==typeof i&&i()}).fail(function(){console.log("signalR: connection fail"),a=!1,"function"==typeof o&&o()})},p=function(){e&&(a=!1,u("off"),e=null,n.stop())},m=function(){n&&e&&p(),l()},f=function(){0===_.size(r)&&p()},g=function(e,t){n||console.error("Необходимо сначала установить соединение с сервером"),n[e]&&n[e](t)},y=function(){return $.connection.isDisconnecting(n)};return{startConnection:l,reconnection:m,subscribe:s,unsubscribe:d,stopConnection:p,on:g,isDisconnected:y}}();InfinniUI.global.notificationSubscription=notificationSubscription,InfinniUI.NotifyService=function(){var e=window.InfinniUI.global.messageBus;e.subscribe(messageTypes.onNotifyUser,function(e,t){var n,i=t.value.messageText,o=t.value.messageType||"info";switch(o){case"success":case"error":case"warning":case"info":n=o;break;default:n="info"}"undefined"!=typeof toastr&&toastr[n](i)})}(),window.InfinniUI.ScriptBuilder=ScriptBuilder,ScriptBuilder.prototype.build=function(e,t){var n=t.metadata,i=n.Name,o=n.Body,r=new Function("context","args",o);return function(e,t){var n;try{n=r.call(void 0,e,t)}catch(a){console.groupCollapsed("%2$s: %1$c%3$s","color: #ff0000",i,a.message),console.error(o),console.groupEnd()}return n}},window.InfinniUI.ScriptExecutor=ScriptExecutor,ScriptExecutor.prototype.executeScript=function(e,t){var n,i,o,r=this.parent,a=r.getContext();return"{"==e.substr(0,1)?(i=e.substr(1,e.length-2),o=this.buildScriptByBody(i)):(o=r.getScripts().getById(e),o&&(o=o.func)),a&&o&&(n=o.call(void 0,a,t)),n},ScriptExecutor.prototype.buildScriptByBody=function(e){var t=this.parent.getContext(),n={metadata:{Body:e,Name:"InlineScript"}},i=new ScriptBuilder;return i.build(t,n)};var AjaxLoaderIndicator=function(e,t){var n={delay:50},i=_.defaults({},t,n),o=new AjaxLoaderIndicatorModel({},i),r=new AjaxLoaderIndicatorView({model:o}),a=r.render().$el;e.append(a)},AjaxLoaderIndicatorModel=Backbone.Model.extend({defaults:{requests:0,progress:!1},initialize:function(e,t){var n=window.InfinniUI.global.messageBus;n.subscribe(messageTypes.onDataLoaded,this.onDataLoaded.bind(this)),n.subscribe(messageTypes.onDataLoading,this.onDataLoading.bind(this));var i=t.delay>0?_.debounce(this.onRequestsChanged.bind(this),50):this.onRequestsChanged.bind(this);this.on("change:requests",i)},onDataLoading:function(){var e=this.get("requests");this.set("requests",e+1)},onDataLoaded:function(){var e=this.get("requests");this.set("requests",e-1)},onRequestsChanged:function(e,t){this.set("progress",t>0)}}),AjaxLoaderIndicatorView=Backbone.View.extend({className:"pl-ajaxloader",template:InfinniUI.Template["services/ajaxLoaderIndicator/template/template.tpl.html"],hiddenClassName:"hidden",initialize:function(){this.listenTo(this.model,"change:progress",this.updateProgress)},render:function(){return this.$el.html(this.template()),this.updateProgress(),this},updateProgress:function(){var e=this.model.get("progress");this.$el.toggleClass(this.hiddenClassName,!e)}});InfinniUI.ContextMenuService=function(){function e(e){return e.control.controlView.$el}function t(e,t){e.on("contextmenu",function(e){e.preventDefault(),n.send(messageTypes.onOpenContextMenu.name,{x:e.pageX,y:e.pageY})})}var n=window.InfinniUI.global.messageBus;n.subscribe(messageTypes.onContextMenu.name,function(n,i){var o=i.value;t(e(o.source),o.content)})}();var MessageBox=Backbone.View.extend({tagName:"div",className:"modal fade messagebox",UI:{firstfocuselementinmodal:".firstfocuselementinmodal",lastfocuselementinmodal:".lastfocuselementinmodal"},events:{"click .btn":"onClickButtonHandler","focusin .lastfocuselementinmodal":"onFocusinLastElement",keydown:"onKeydownHandler"},template:InfinniUI.Template["services/messageBox/template/default.tpl.html"],initialize:function(e){this.setOptions(e),$(document.activeElement).blur(),this.render(),this.bindUIElements(),this.$el.modal({show:!0})},setOptions:function(e){this.options=this.applyDefaultOptions(e)},onFocusinLastElement:function(){this.ui.firstfocuselementinmodal.focus()},onKeydownHandler:function(e){document.activeElement===this.ui.lastfocuselementinmodal[0]&&9==(e.which||e.keyCode)&&(e.preventDefault(),this.ui.firstfocuselementinmodal.focus()),document.activeElement===this.ui.firstfocuselementinmodal[0]&&9==(e.which||e.keyCode)&&e.shiftKey&&(e.preventDefault(),this.ui.lastfocuselementinmodal.focus())},render:function(){var e=this.options.$parent||$("body"),t=this.template(this.options);return this.$el.html(t),this.subscribeToDialog(),e.append(this.$el),this},subscribeToDialog:function(){var e=this;this.$el.on("shown.bs.modal",function(t){e.ui.firstfocuselementinmodal.focus()}),this.$el.on("hidden.bs.modal",function(){e.remove()})},onClickButtonHandler:function(e){e.preventDefault();var t=$(e.target),n=parseInt(t.data("index"),10),i=this.options.buttons[n].onClick;i&&i.apply(null),this.close()},close:function(){"function"==typeof this.options.onClose&&this.options.onClose.call(null),this.$el.modal("hide")},applyDefaultOptions:function(e){var t=_.defaults({},e,{type:"default",buttons:[]});return this.applyDefaultButtonsOptions(t),t},applyDefaultButtonsOptions:function(e){return e.buttons.filter(function(e){return"undefined"==typeof e.type}).forEach(function(e){e.type="default"}),e}});_.extend(MessageBox.prototype,bindUIElementsMixin),InfinniUI.MessageBox=MessageBox;var routerService=function(e){if(!e)return null;var t=function(e){var t={};t.routes={};for(var n=0,o=e.length;o>n;n+=1){if(e[n].originalPath=e[n].Path,-1!==e[n].Path.search("<%"))for(var r,a,l=/\<\%[\sa-zA-Z0-9]+\%\>/g;r=l.exec(e[n].Path);)a=r[0].replace(/\s+/g,"").slice(2,-2),e[n].Path=e[n].Path.slice(0,r.index)+":"+a+e[n].Path.slice(r.index+r[0].length),l.lastIndex=r.index+a.length;t.routes[e[n].Path.slice(1)]=e[n].Name,t[e[n].Name]=i(e[n].Name,e[n].Action)}return t},n=function(t,n){for(var i=n||"yes",o=0,r=e.length;r>o;o+=1)if(e[o].Name===t)return"yes"===i?e[o].originalPath:e[o].Path},i=function(e,t){return function(){var n=_.extend(Array.prototype.slice.call(arguments),{routeParams:u._params});new ScriptExecutor({getContext:function(){return u._context||"No context"}}).executeScript(t,{name:e,params:n})}},o=t(e),r=function(){if(InfinniUI.AppRouter)console.log("Попытка повторно запустить routerService");else{var e=Backbone.Router.extend(o);InfinniUI.AppRouter=new e,Backbone.history=Backbone.history||new Backbone.History({}),Backbone.history.start(InfinniUI.config.HistoryAPI)}},a=function(e){this._context=e},l=function(e){this._params=e},s=function(e){this._params=_.extend(this._params||{},e)},u={getLinkByName:n,startRouter:r,setContext:a,setParams:l,addParams:s};return u}(InfinniUI.config.Routes);window.InfinniUI.RouterService=routerService,InfinniUI.ToolTipService=function(){function e(e){return e.control.controlView.$el}function t(e,t){e.tooltip({html:!0,title:t,placement:"auto top",container:"body"}).tooltip("show")}var n=window.InfinniUI.global.messageBus;n.subscribe(messageTypes.onToolTip.name,function(n,i){var o=i.value;t(e(o.source),o.content)})}();})(); \ No newline at end of file +;(function(){"use strict";function Culture(e){this.name=e,this.caption=InfinniUI.localizations[e].caption,this.dateTimeFormatInfo=InfinniUI.localizations[e].dateTimeFormatInfo,this.numberFormatInfo=InfinniUI.localizations[e].numberFormatInfo}function Collection(e,t,n){function i(e,t){return t>e?-1:e>t?1:0}Array.isArray(e)||(e=[]),this._items=e.map(function(e,t){return this.createCollectionItem(e,t)},this),this._idProperty=t,this._comparator=n||i,this.events=new CollectionEventManager}function CollectionEventManager(){}function BasePathOfProperty(e,t,n){this.isRelativeProperty(e)?this.basePathOfProperty=n.basePathOfProperty+this.excludeFirstChar(e):this.basePathOfProperty=e,n?(this.indexesInParentLists=n.indexesInParentLists?n.indexesInParentLists.slice():[],this.indexesInParentLists.push(t),this.parentBasePath=n):void 0!==t&&null!==t&&(this.indexesInParentLists=[t],this.basePathOfProperty+=t)}function EventsManager(){this.handlers={}}function HashMap(){this._keys=[],this._values=[]}function hiddenScreen(){this.middleElement=$("
").css({position:"absolute",top:"-10000px"})}function Logger(e){this.messages=[],this.setLevel(e||LOG_LEVEL.debug),this.showMessages=!0}function guid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,n="x"==e?t:3&t|8;return n.toString(16)})}function MessageBus(e){function t(e){return"object"==typeof e&&"undefined"!=typeof e.name&&(e=e.name),e}var n={};this.send=function(i,o){if(i=t(i),n[i]){var r;e&&e.getContext&&(r=e.getContext()),_.each(n[i],function(e){e(r,{value:o})})}},this.subscribe=function(e,i){e=t(e),n[e]||(n[e]=[]),n[e].push(i)},this.unsubscribeByType=function(e){e=t(e),n[e]&&delete n[e]},this.getView=function(){return e}}function ContainerControl(e){_.superClass(ContainerControl,this,e)}function ListEditorBaseControl(e){_.superClass(ListEditorBaseControl,this,e),this.initialize_editorBaseControl()}function TextEditorBaseControl(e){_.superClass(TextEditorBaseControl,this,e),this.initialize_editorBaseControl()}function EventManager(){this.handlers={}}function TextEditorModelBaseModeStrategy(){}function TextEditorModelDisplayModeStrategy(){TextEditorModelBaseModeStrategy.call(this)}function TextEditorModelEditModeStrategy(){TextEditorModelBaseModeStrategy.call(this)}function TextBoxControl(e){_.superClass(TextBoxControl,this,e)}function DateTimePickerControl(e){_.superClass(DateTimePickerControl,this,e)}function DatePickerControl(e){_.superClass(DatePickerControl,this,e)}function TimePickerControl(e){_.superClass(TimePickerControl,this,e)}function AuthenticationProvider(e){this.baseAddress=e}function getUserInfo(e){var t=new AuthenticationProvider(InfinniUI.config.serverUrl);t.getCurrentUser(function(t){e.model.set("result",t)},function(e){showObject("#signInInternalResult",e)})}function refreshUserInfo(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.getCurrentUser(function(e){InfinniUI.user.onReadyDeferred.resolve(e)},function(e){InfinniUI.user.onReadyDeferred.resolve(null)})}function changePassword(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.changePassword($("#oldPassword").val(),$("#newPassword").val(),function(e){refreshUserInfo()},function(e){showObject("#changePasswordResult",e)})}function changeProfile(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.changeProfile($("#displayName").val(),$("#description").val(),function(e){refreshUserInfo()},function(e){showObject("#changeProfileResult",e)})}function changeActiveRole(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.changeActiveRole($("#activeRole").val(),function(e){refreshUserInfo()},function(e){showObject("#сhangeActiveRoleResult",e)})}function getLinkExternalLoginForm(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.getLinkExternalLoginForm(getAbsoluteUri("/Home/SignInSuccess"),getAbsoluteUri("/Home/SignInFailure"),function(e){$("#linkExternalLoginForm").append(e)},function(e){showObject("#linkExternalLoginResult",e)})}function unlinkExternalLogin(e,t){var n=new AuthenticationProvider(InfinniUI.config.serverUrl);n.unlinkExternalLogin(e,t,function(e){refreshUserInfo()},function(e){showObject("#unlinkExternalLoginResult",e)})}function signOut(e){var t=new AuthenticationProvider(InfinniUI.config.serverUrl);onSuccessSignOut(getHomePageContext()),t.signOut(function(t){window.getCurrentUserName=function(){return null},e.model.set("result",null),location.reload()},function(e){showObject("#getCurrentUserResult",e.responseJSON)})}function setUserInfo(e){if(null!==e.Logins&&void 0!==e.Logins)for(var t=$("#externalLogins"),n=0;n-1&&toastr.error("Неверный логин или пароль","Ошибка!"),showObject("#signInInternalResult",e)})}function getSignInExternalForm(){var e=new AuthenticationProvider(InfinniUI.config.serverUrl);e.getSignInExternalForm(getAbsoluteUri("/Home/SignInSuccess"),getAbsoluteUri("/Home/SignInFailure"),function(e){$("#signInExternalForm").append(e)},function(e){showObject("#signInExternalResult",e)})}function getAbsoluteUri(e){return location.protocol+"//"+location.host+e}function showObject(e,t){var n=formatObject(t);$(e).text(n)}function formatObject(e){return JSON.stringify(e,null,4)}function ButtonControl(e){_.superClass(ButtonControl,this,e)}function ButtonEditControl(e){_.superClass(ButtonEditControl,this,e)}function ComboBoxBaseViewStrategy(e){this.dropdownView=e}function ComboBoxGroupViewStrategy(e){ComboBoxBaseViewStrategy.call(this,e)}function ComboBoxPlainViewStrategy(e){ComboBoxBaseViewStrategy.call(this,e)}function DataGridControl(){_.superClass(DataGridControl,this)}function DataGridRowControl(){_.superClass(DataGridRowControl,this)}function DataNavigationButtonFactory(e){this._dataNavigation=e}function DataNavigationControl(e){_.superClass(DataNavigationControl,this,e)}function ListBoxViewGroupStrategy(e){this.listbox=e}function ListBoxViewPlainStrategy(e){this.listbox=e}function ListBoxControl(e){_.superClass(ListBoxControl,this,e)}function PopupButtonControl(e){_.superClass(PopupButtonControl,this,e)}function StackPanelControl(e){_.superClass(StackPanelControl,this,e)}function StackPanelViewGroupStrategy(e){this.stackPanel=e}function StackPanelViewPlainStrategy(e){this.stackPanel=e}function TablePanelControl(e){_.superClass(TablePanelControl,this,e)}function CellControl(e){_.superClass(CellControl,this,e)}function RowControl(e){_.superClass(RowControl,this,e)}function TabPanelControl(e){_.superClass(TabPanelControl,this,e)}function TabPageControl(e){_.superClass(TabPageControl,this,e)}function TreeViewControl(){_.superClass(TreeViewControl,this)}function CheckBoxControl(e){_.superClass(CheckBoxControl,this,e),this.initialize_editorBaseControl()}function ComboBoxControl(e){_.superClass(ListBoxControl,this,e)}function ContextMenuControl(){_.superClass(ContextMenuControl,this)}function FileBoxControl(e){_.superClass(FileBoxControl,this,e),this.initialize_editorBaseControl()}function FormControl(e){_.superClass(FormControl,this,e)}function DividerControl(e){_.superClass(DividerControl,this,e)}function GridPanelControl(e){_.superClass(GridPanelControl,this,e)}function ImageBoxControl(e){_.superClass(ImageBoxControl,this,e),this.initialize_editorBaseControl()}function IndeterminateCheckBoxControl(e){_.superClass(IndeterminateCheckBoxControl,this,e),this.initialize_editorBaseControl()}function IconControl(){_.superClass(IconControl,this)}function MenuBarControl(e){_.superClass(MenuBarControl,this,e)}function LinkElementControl(){_.superClass(LinkElementControl,this)}function NumericBoxControl(e){_.superClass(NumericBoxControl,this,e)}function PanelControl(e){_.superClass(PanelControl,this,e)}function ScrollPanelControl(e){_.superClass(ScrollPanelControl,this,e)}function ToggleButtonControl(e){_.superClass(ToggleButtonControl,this,e),this.initialize_editorBaseControl()}function ToolBarControl(e){_.superClass(ToolBarControl,this,e)}function ViewControl(e){_.superClass(ViewControl,this,e)}function Container(e,t){_.superClass(Container,this,e,t)}function ContainerBuilder(){_.superClass(ContainerBuilder,this)}function ListEditorBase(e,t){_.superClass(ListEditorBase,this,e,t),this.initialize_editorBase()}function ListEditorBaseBuilder(){_.superClass(ListEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function TextEditorBase(e){_.superClass(TextEditorBase,this,e),this.initialize_editorBase()}function TextEditorBaseBuilder(){_.superClass(TextEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function ListBox(e,t){_.superClass(ListBox,this,e,t)}function ListBoxBuilder(){_.superClass(ListBoxBuilder,this)}function TextBox(e){_.superClass(TextBox,this,e)}function TextBoxBuilder(){_.superClass(TextBoxBuilder,this)}function DateTimePicker(e){_.superClass(DateTimePicker,this,e)}function DateTimePickerBuilder(){_.superClass(DateTimePickerBuilder,this)}function DatePicker(e){_.superClass(DatePicker,this,e),this.setMode("DatePicker"),this.setTimeZone()}function DatePickerBuilder(){_.superClass(DatePickerBuilder,this)}function TimePicker(e){_.superClass(TimePicker,this,e),this.setMode("TimePicker"),this.setTimeZone()}function TimePickerBuilder(){_.superClass(TimePickerBuilder,this)}function StackPanel(e,t){_.superClass(StackPanel,this,e,t)}function StackPanelBuilder(){_.superClass(StackPanelBuilder,this)}function Button(e,t){_.superClass(Button,this,e,t),this.buttonInit()}function ButtonBuilder(){_.superClass(ButtonBuilder,this)}function ButtonEdit(e){_.superClass(ButtonEdit,this,e)}function ButtonEditBuilder(){_.superClass(ButtonEditBuilder,this)}function CheckBox(e){_.superClass(CheckBox,this,e),this.initialize_editorBase()}function CheckBoxBuilder(){_.superClass(CheckBoxBuilder,this),this.initialize_editorBaseBuilder()}function ComboBox(e){_.superClass(ComboBox,this,e)}function ComboBoxBuilder(){_.superClass(ComboBoxBuilder,this)}function DataGrid(e){_.superClass(DataGrid,this,e)}function DataGridBuilder(){_.superClass(DataGridBuilder,this),this.columnBuilder=new DataGridColumnBuilder}function DataGridColumn(){this._values=Object.create(null)}function DataGridColumnBuilder(){}function ContextMenu(e){_.superClass(ContextMenu,this,e)}function ContextMenuBuilder(){_.superClass(ContextMenuBuilder,this)}function DataNavigation(e){_.superClass(DataNavigation,this,e)}function DataNavigationBuilder(){_.superClass(DataNavigationBuilder,this)}function ExtensionPanel(e){_.superClass(ExtensionPanel,this,e)}function ExtensionPanelBuilder(){}function Divider(e){_.superClass(Divider,this,e)}function DividerBuilder(){_.superClass(DividerBuilder,this)}function FileBox(e){_.superClass(FileBox,this,e),this.initialize_editorBase()}function FileBoxBuilder(){_.superClass(FileBoxBuilder,this),this.initialize_editorBaseBuilder()}function FileBoxValueConverter(e){this._element=e}function Frame(){_.superClass(Frame,this),this.initialize_editorBase()}function FrameBuilder(){_.superClass(TextEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function ImageBox(e){_.superClass(ImageBox,this,e),this.initialize_editorBase()}function ImageBoxBuilder(){_.superClass(ImageBoxBuilder,this),this.initialize_editorBaseBuilder()}function ImageBoxValueConverter(e){this._element=e}function GridPanel(e){_.superClass(GridPanel,this,e)}function GridPanelBuilder(){_.superClass(GridPanelBuilder,this)}function Icon(e){_.superClass(Icon,this,e)}function IconBuilder(){_.superClass(ButtonBuilder,this)}function IndeterminateCheckBox(e){_.superClass(IndeterminateCheckBox,this,e),this.initialize_editorBase()}function IndeterminateCheckBoxBuilder(){_.superClass(IndeterminateCheckBoxBuilder,this),this.initialize_editorBaseBuilder()}function Label(e,t){_.superClass(Label,this,e,t),this.initialize_editorBase()}function LabelBuilder(){_.superClass(TextEditorBaseBuilder,this),this.initialize_editorBaseBuilder()}function Link(e){_.superClass(Link,this,e)}function LinkBuilder(){_.superClass(LinkBuilder,this)}function Form(e){_.superClass(Form,this,e)}function FormBuilder(){_.superClass(FormBuilder,this)}function MenuBar(e){_.superClass(MenuBar,this,e)}function MenuBarBuilder(){_.superClass(MenuBarBuilder,this)}function NumericBox(e){_.superClass(NumericBox,this,e)}function NumericBoxBuilder(){_.superClass(NumericBoxBuilder,this)}function Panel(e){_.superClass(Panel,this,e)}function PanelBuilder(){_.superClass(PanelBuilder,this)}function PopupButton(e,t){_.superClass(PopupButton,this,e,t),this.buttonInit()}function PopupButtonBuilder(){_.superClass(PopupButtonBuilder,this)}function PasswordBox(e){_.superClass(PasswordBox,this,e),this.initialize_editorBase()}function PasswordBoxBuilder(){_.superClass(PasswordBoxBuilder,this),this.initialize_editorBaseBuilder()}function RadioGroupBuilder(){_.superClass(RadioGroupBuilder,this)}function ScrollPanel(e){_.superClass(ScrollPanel,this,e)}function ScrollPanelBuilder(){_.superClass(ScrollPanelBuilder,this)}function TablePanel(e){_.superClass(TablePanel,this,e)}function TablePanelBuilder(){_.superClass(TablePanelBuilder,this)}function TabPanel(e){_.superClass(TabPanel,this,e)}function TabPanelBuilder(){_.superClass(TabPanelBuilder,this)}function ToggleButton(e){_.superClass(ToggleButton,this,e),this.initialize_editorBase()}function ToggleButtonBuilder(){_.superClass(ToggleButtonBuilder,this),this.initialize_editorBaseBuilder()}function ToolBarBuilder(){_.superClass(ToolBarBuilder,this)}function TreeView(e){_.superClass(TreeView,this,e)}function TreeViewBuilder(){_.superClass(TreeViewBuilder,this)}function View(e){_.superClass(View,this,e);var t=this;this.eventManager=new EventManager,this.openStrategy=new OpenModeDefaultStrategy,this.openStrategy.setView(this),this.members={},this.membersDeferreds={},this.handlers={onBeforeLoaded:$.Deferred(),onLoaded:$.Deferred(),onSelectedElementChange:null},this._initContext();var n=this.getView();n&&(n.onClosing&&n.onClosing(function(e,n){return t.isRemoved?void 0:t.eventManager.trigger("onClosing",t.getContext(),t._getScriptArgs())}),n.onClosed&&n.onClosed(function(e,n){t.close(null,null,!0)})),this.control.get("dataSources").onChange(function(){t._initDataSourceHandlers()})}function ViewBuilder(){_.superClass(ViewBuilder,this)}function ViewPanel(e){_.superClass(ViewPanel,this,e)}function ViewPanelBuilder(){}function DataGridRow(){_.superClass(DataGridRow,this),this._transformRowProperties({rowBackground:"background",rowForeground:"foreground",rowTextStyle:"textStyle",rowStyle:"style"})}function Row(e){_.superClass(Row,this,e)}function RowBuilder(){_.superClass(RowBuilder,this)}function Cell(e){_.superClass(Cell,this,e)}function CellBuilder(){_.superClass(CellBuilder,this)}function TabPage(e){_.superClass(TabPage,this,e),this.events=new EventsManager;var t=this;this.control.on("close",function(){t.close()})}function TabPageBuilder(){_.superClass(TabPageBuilder,this)}function BaseAction(e){this.parentView=e,this._properties=Object.create(null),_.defaults(this._properties,this.defaults),this.initDefaultValues()}function BaseEditAction(e){_.superClass(BaseEditAction,this,e)}function AddAction(e){_.superClass(AddAction,this,e)}function AddActionBuilder(){}function AcceptAction(e){_.superClass(AcceptAction,this,e)}function AcceptActionBuilder(){}function CancelAction(e){_.superClass(CancelAction,this,e)}function CancelActionBuilder(){}function DeleteAction(e){_.superClass(DeleteAction,this,e)}function DeleteActionBuilder(){}function EditAction(e){_.superClass(EditAction,this,e)}function EditActionBuilder(){}function OpenAction(e){_.superClass(OpenAction,this,e)}function OpenActionBuilder(){}function RouteToAction(){_.superClass(RouteToAction,this),this.href=""}function RouteToActionBuilder(){}function SaveAction(e){_.superClass(SaveAction,this,e)}function SaveActionBuilder(){}function DownloadExecutor(e,t,n){this.guid=guid(),this.options={timeout:6e4,poll:100},this.resultCallback=e,this.successCallback=t,this.failCallback=n}function ServerAction(e){_.superClass(ServerAction,this,e),this.provider=window.InfinniUI.providerRegister.build("ServerActionProvider"),this.updateContentTypeStrategy(),this.on("change:contentType",this.updateContentTypeStrategy)}function ServerActionBuilder(){}function SelectAction(e){_.superClass(SelectAction,this,e)}function SelectActionBuilder(){}function UpdateAction(e){_.superClass(UpdateAction,this,e)}function UpdateActionBuilder(){}function ApplicationBuilder(){this.builder||(this.builder=new Builder,this.registerElementBuilders()),window.InfinniUI.global.factory=this}function Builder(){var e=[];this.appView=null,this.register=function(t,n){e[t]=n},this.buildType=function(t,n,i){if(i=i||{},void 0===e[t])return null;var o=_.extend({builder:this,metadata:n},i),r=i.parentView?i.parentView.getContext():{};return e[t].build(r,o)},this.build=function(e,t){var n,i,o=null;t=t||{};for(var r in e){n=r;break}return"undefined"==typeof n||null===n?console.error("Builder: Не переданы метаданные"):(i=e[n],o=this.buildType(n,i,t)),o},this.buildMany=function(e,t){var n=[];if(e)for(var i=0;i0;return e.forEach(function(e){var n=this.createCollectionItem(e,t.length);t.push(n)},this),n&&this.events.onAdd(e),n},Collection.prototype.insert=function(e,t){var n=this.createCollectionItem(t,e);return this._items.splice(e,0,n),this.events.onAdd([t],e),!0},Collection.prototype.insertAll=function(e,t){if(!Array.isArray(t))return!1;var n=this._items,i=t.length>0;return t.forEach(function(t,i){var o=e+i,r=this.createCollectionItem(t,o);n.splice(o,0,r)},this),i&&this.events.onAdd(t,e),i},Collection.prototype.reset=function(e){var t,n;return Array.isArray(e)?(t=this._items.length!==e.length,n=e.map(function(e,n){return t||(t=!this.isEqual(e,this.getCollectionItemValue(n))),this.createCollectionItem(e,n)},this),this._items.length=0,Array.prototype.push.apply(this._items,n),t&&this.events.onReset(),t):!1},Collection.prototype.set=function(e,t){var n=this._items;if(!Array.isArray(e))return!1;var i=n.length!==e.length,o=e.slice();return o.forEach(function(e,t){t=this._items.length)return!1;var t=this.getCollectionItemValue(e);return this._items.splice(e,1), +this.events.onRemove([t],e),!0},Collection.prototype.removeAll=function(e){if(!Array.isArray(e))return!1;var t,n=this._items,i=[];if(e.forEach(function(e){i=n.filter(function(t){return this.isEqual(e,this.getItemValue(t))},this),i.forEach(function(e){var t=n.indexOf(e);n.splice(t,1)})},this),t=i.length>0){var o=i.map(function(e){return this.getItemValue(e)},this);this.events.onRemove(o)}return t},Collection.prototype.removeRange=function(e,t){var n,i=this._items;if(e>=i.length)return!1;"undefined"==typeof t&&(t=i.length-e);var o=i.splice(e,t);if(n=o.length>0){var r=o.map(function(e){return this.getItemValue(e)},this);this.events.onRemove(r,e)}return n},Collection.prototype.removeEvery=function(e,t){if("function"!=typeof e)return!1;var n,i=this._items,o=i.filter(function(n,i){var o=this.getItemValue(n);return e.call(t,o,i,this)},this);if(o.forEach(function(e){var t=i.indexOf(e);i.splice(t,1)}),n=o.length>0){var r=o.map(function(e){return this.getItemValue(e)},this);this.events.onRemove(r)}return n},Collection.prototype.clear=function(){var e=this._items,t=e.length>0,n=e.map(function(e){return this.getItemValue(e)},this);return e.length=0,t&&this.events.onRemove(n,0),t},Collection.prototype.getById=function(e){if(!this.hasIdProperty)return!1;for(var t,n,i=this._items,o=0;o=n.length)return-1;for(var o=t;o>0;o-=1){var r=this.getItemValue(n[o]);if(this.isEqual(e,r)){i=o;break}}return i},Collection.prototype.findIndex=function(e,t){if("function"!=typeof e)return!1;var n=this._items,i=-1,o=n.some(function(n,o){var r=this.getItemValue(n);return i=o,e.call(t,r,o,this)},this);return o?i:-1},Collection.prototype.contains=function(e,t){t=t||0;for(var n=!1,i=this._items,o=t;oe||e>=i.length||e===t)return!1;n=i.splice(e,1).pop(),e>t?i.splice(t,0,n):i.splice(t-1,0,n);var o=i[e]!==n;if(o){var r=this.getItemValue(n);this.events.onMove([r],[r],e,t)}return o},Collection.prototype.sort=function(e){"function"!=typeof e&&(e=this._comparator);var t=this._items,n=this,i=t.slice(),o=!1;t.sort(function(t,i){return e(n.getItemValue(t),n.getItemValue(i))});for(var r=0;rn;n+=1)if(t===e[n].view){e.splice(n,1);break}},this.getLastView=function(){return 0!==e.length?e[e.length-1]:void 0},this.getList=function(){return e}};window.InfinniUI.views=new OpenedViewCollection,window.InfinniUI.DateUtils=function(){function e(e){return null===e||"undefined"==typeof e?e:moment(e).toDate()}function t(e){return e instanceof Date?new Date(e.getTime()):e}function n(e,t,n){var i,o=moment(t||null),r=moment(n||null),a=moment(e);return i=o.isValid()&&a.isBefore(o)?o.toDate():r.isValid()&&a.isAfter(r)?r.toDate():e}function i(e,t,n,i){var o=!0,r=moment(t||null),a=moment(n||null),l=moment(e);return r.isValid()&&a.isValid()?o=l.isSameOrBefore(a,i)&&l.isSameOrAfter(r,i):r.isValid()?o=l.isSameOrAfter(r,i):a.isValid()&&(o=l.isSameOrBefore(a,i)),o}function o(e){var t,n=["HH:mm","HH:mm:ss","HH:mm:ss.SSS","HHmm","HHmmss","HHmmss.SSS"],i=moment(e,n);return i.isValid()&&(t=new Date(0),t.setHours(i.hours(),i.minute(),i.second(),i.millisecond())),t}function r(e){var t=moment(e),n=null;return t.isValid()&&(n=t.toDate()),n}function a(e,t){var n=e;if("undefined"!=typeof t&&e instanceof Date){var i=e.getTimezoneOffset();t!==i&&(n=new Date(e.getTime()+60*(i-t)*1e3))}return n}function l(e,t){var n=e;if("undefined"!=typeof t&&e instanceof Date){var i=e.getTimezoneOffset();t!==i&&(n=new Date(e.getTime()-60*(i-t)*1e3))}return n}function s(e,t){var n=t||{};if("undefined"==typeof e||null===e)return null;if(e.constructor!==Date)return null;var i=a(e,n.timezoneOffset),o=[p(i.getFullYear(),4),p(i.getMonth()+1,2),p(i.getDate(),2)].join("-"),r=[p(i.getHours(),2),p(i.getMinutes(),2),p(i.getSeconds(),2)].join(":"),l=p(i.getMilliseconds(),3)+"0",s=n.timezoneOffset;"undefined"!=typeof s&&null!==s||(s=e.getTimezoneOffset());var u=Math.abs(s),d=Math.sign(s)>0?"-":"+",c=[p(Math.floor(u/60),2),p(u%60,2)].join(":");return o+"T"+r+"."+l+d+c}function u(e){var t,n=null;return e&&e.constructor===String?t=new Date(e):e&&e.constructor===Date&&(t=e),t&&(t.setUTCHours(0,0,0,0),n=t.getTime()/1e3),n}function d(e){var t,n,i=null;return e&&e.constructor===String?t=new Date(e):e&&e.constructor===Date&&(t=e),t&&(n=new Date(0),n.setUTCHours(t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()),i=n.getTime()/1e3),i}function c(e){var t;return t=typeof e===Date?new Date(e.getTime()):"number"==typeof e?new Date(1e3*e):"undefined"==typeof e||null===e?null:r(e)}function h(){return f}function p(e,t){var n=""+e,i="";return n.lengthe?-1:1:0})}m();var f;return{toISO8601:s,dateToTimestamp:u,dateToTimestampTime:d,changeTimezoneOffset:a,restoreTimezoneOffset:l,toDate:r,createDate:c,parseTimeISO8601toDate:o,parseISO8601toDate:e,checkRangeDate:i,getNearestDate:n,cloneDate:t,getDefaultTimeZone:h}}();var domHelper={whenReady:function(e,t,n){var i=this;void 0===n&&(n=100),e()?t():n>0&&setTimeout(function(){i.whenReady(e,t,n-1)},510)}};window.InfinniUI.ObjectUtils=function(){function e(e,t){if(null!==e&&void 0!==e&&null!==t&&void 0!==t){for(var n=e,r=t.length,l=0;r>l;++l){if(null===n||void 0===n)return null;var s=t[l],u=i(s);n=u>=0?o(n,u):a(n,s)}return n}return e}function t(e,t,n){for(var s=e,u=t.length-1,d=t[0],c=i(d),h=0;u>h;++h){var p=c>=0?o(s,c):a(s,d),m=t[h+1],f=i(m);f>=0?($.isArray(p)||(p=[]),r(s,c,p)):($.isPlainObject(p)||(p={}),l(s,d,p)),s=p,d=m,c=f}c>=0?r(s,c,n):l(s,d,n)}function n(e){return _.isEmpty(e)?null:e.split(".")}function i(e){var t=-1;if("$"===e)t=0;else{var n=parseInt(e);isNaN(n)||(t=n)}return t}function o(e,t){return null!==e&&void 0!==e&&"[object Array]"===Object.prototype.toString.call(e)&&t>=0&&t=0&&tt;t+=1)"'"===e[t].slice(-1)&&(e[t]=e[t].slice(1,-1)),e[t]=i(e[t]),e[t]=n(e[t])}return e}function r(e,t){return"match"===t.functionName&&(e=t.children[0].valueName),e}function a(e,t,l){var u,d=[];l=r(l,e);for(var c=0,h=e.children.length;h>c;c+=1)"function"===e.children[c].type&&(u=e.children[c],e.children[c].valueName=a(u,t,l),e.children[c].newType="value"),"value"!==e.children[c].type&&"value"!==e.children[c].newType||("value"===e.children[c].type&&(e.children[c].valueName=n(e.children[c].valueName),e.children[c].valueName=i(e.children[c].valueName),e.children[c].valueName=o(e.children[c].valueName)),d.push(e.children[c].valueName));return s[e.functionName](d,t,l)}if(!t)return e;var l=JSON.parse(JSON.stringify(e)),s=filterItems.filterMethods,u=filterItems.filterTreeBuilder.buildUpFilterTree(t);return a(u,l)}}(filterItems);window.InfinniUI.FilterItems=filterItems,filterItems.filterTreeBuilder=function(){var e={},t=function(e){for(var t,n,i,o,r,a=/date\(\'[0-9a-zA-Z\:\-\+\.\s]+\'\)/g,l=/\,[a-zA-Z0-9\'\,\_\.]+\)/g,s=/\[[a-zA-Z0-9\'\_\.]+\]/g,u=/[a-zA-Z]+[(]|\[[a-zA-Z0-9\S]+\]|[-\']{0,1}[a-zA-Z0-9_\.]+[\']{0,1}[,)$]/g,d=/[)]/g,c=/\'([a-zA-Z0-9\S\W\D]+\s*)+\'/g,h=/\s+/g,p=/\'([a-zA-Z0-9\s]+\s*)+\'/g,m=[];t=a.exec(e);)n=Date.parse(t[0].slice(6,-2))/1e3+"",e=e.slice(0,t.index)+n+e.slice(t.index+t[0].length),a.lastIndex=t.index+n.length;for(;t=c.exec(e);){if(n=t[0],-1!==n.search(h)||-1!==n.search(p))for(;i=p.exec(n);)o=i[0].replace(h,"_"),n=n.slice(0,i.index)+o+n.slice(i.index+i[0].length);else r=n.slice(1,-1),n="tmpRE";e=e.slice(0,t.index)+n+e.slice(t.index+t[0].length),c.lastIndex=t.index+n.length}for(e=e.replace(/\s+/g,"");t=l.exec(e);)n="["+t[0].slice(1,-1)+"])",e=e.slice(0,t.index+1)+n+e.slice(t.index+t[0].length),l.lastIndex=t.index+n.length;for(;t=s.exec(e);)n=t[0].slice(1,-1),e=e.slice(0,t.index)+n+e.slice(t.index+t[0].length),s.lastIndex=t.index+n.length;for(;t=u.exec(e);)t[0].length>1&&(","===t[0].slice(-1)||")"===t[0].slice(-1))&&(t[0]=t[0].slice(0,-1)),t[0].length>1&&"'"===t[0].slice(0,1)&&(t[0]=t[0].slice(1,-1)),-1!==t[0].search(/tmpRE/)&&(t[0]=t[0].slice(1,-1).split(","),t[0][0]=r),m.push(t);for(;t=d.exec(e);)m.push(t);return m.sort(function(e,t){return e.index-t.index}),m},n=function(e){for(var t,n,i,o,r=[],a=[],l=[],s=0,u=0,d=e.length;d>u;u+=1)n="string"==typeof e[u][0]?e[u][0].slice(-1):"]","("===n?(t={},t.type="function",t.functionName=e[u][0].slice(0,-1),t.index=e[u].index,r.push(t)):")"===n?(l[s]=[],o=r.pop(),o.range=[],o.range.push(o.index),o.children=[],o.range.push(e[u].index),l[s]=o,s+=1):(i={},i.type="value",i.valueName=e[u][0],i.index=e[u].index,a.push(i));return[l,a]},i=function(e,t){for(var n=0,i=t.length;i>n;n+=1)for(var o=0,r=e.length;r>o;o+=1)null!==t[n]&&t[n].index>e[o].range[0]&&t[n].indexe[n].range[0]&&e[t].range[1]e[t].range[0]){e[n].children.unshift(e[t]),e.splice(t,1),t-=1;break}e[n].children.push(e[t]),e.splice(t,1),t-=1;break}return e[0]};return e.buildUpFilterTree=function(e){var r;return r=t(e),r=n(r),r=i(r[0],r[1]),o(r)},e}(),filterItems.filterMethods=function(){var e={};return e.eq=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])===e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])===e[1]&&r.push(t[l]);return r},e.and=function(e,t,n){return _.intersection.apply(_,e)},e.or=function(e,t,n){return _.union.apply(_,e)},e.not=function(e,t,n){var i=t.slice();return _.difference(i,e[0])},e.notEq=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])!==e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])!==e[1]&&r.push(t[l]);return r},e.gt=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])>e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])>e[1]&&r.push(t[l]);return r},e.gte=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])>=e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])>=e[1]&&r.push(t[l]);return r},e.lt=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)a.getPropertyValue(t[l][n][u],e[0])<=e[1]&&i.push(t[l]);o===i.length&&r.push(t[l])}else a.getPropertyValue(t[l],e[0])<=e[1]&&r.push(t[l]);return r},e["in"]=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)-1!==_.indexOf(e[1],a.getPropertyValue(t[l][n][u],e[0]))&&i.push(t[l]);o===i.length&&r.push(t[l])}else-1!==_.indexOf(e[1],a.getPropertyValue(t[l],e[0]))&&r.push(t[l]);return r},e.notIn=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1)if(n){i=[],o=void 0===t[l][n]?-1:t[l][n].length;for(var u=0,d=o;d>u;u+=1)-1===_.indexOf(e[1],a.getPropertyValue(t[l][n][u],e[0]))&&i.push(t[l]);o===i.length&&r.push(t[l])}else-1===_.indexOf(e[1],a.getPropertyValue(t[l],e[0]))&&r.push(t[l]);return r},e.exists=function(e,t,n){var i,o=[],r=InfinniUI.ObjectUtils;void 0===e[1]&&(e[1]=!0);for(var a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),e[1]===!0?_.isUndefined(i)||_.isNull(i)||o.push(t[a]):(_.isUndefined(i)||_.isNull(i))&&o.push(t[a]);return o},e.match=function(e,t,n){for(var i=[],o=InfinniUI.ObjectUtils,r=0,a=e[1].length;a>r;r+=1)void 0!==o.getPropertyValue(e[1][r],e[0])&&i.push(e[1][r]);return i},e.all=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1){o=a.getPropertyValue(t[l],e[0]),i=0;for(var u=0,d=o.length;d>u;u+=1)-1!==_.indexOf(e[1],o[u])&&(i+=1);d===i&&r.push(t[l])}return r},e.anyIn=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(-1!==_.indexOf(e[1],i[s])){o.push(t[a]);break}}return o},e.anyNotIn=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l=0,s=t.length;s>l;l+=1){o=a.getPropertyValue(t[l],e[0]),i=0;for(var u=0,d=o.length;d>u;u+=1)-1!==_.indexOf(e[1],o[u])&&(i+=1);0===i&&r.push(t[l])}return r},e.anyEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),-1!==_.indexOf(i,e[1])&&o.push(t[a]);return o},e.anyNotEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]!==e[1]){o.push(t[a]);break}}return o},e.anyGt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]>e[1]){o.push(t[a]);break}}return o},e.anyGte=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]>=e[1]){o.push(t[a]);break}}return o},e.anyLt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]a;a+=1){i=r.getPropertyValue(t[a],e[0]);for(var s=0,u=i.length;u>s;s+=1)if(i[s]<=e[1]){o.push(t[a]);break}}return o},e.sizeEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length===e[1]&&o.push(t[a]);return o},e.sizeNotEq=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length!==e[1]&&o.push(t[a]);return o},e.sizeGt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length>e[1]&&o.push(t[a]);return o},e.sizeGte=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length>=e[1]&&o.push(t[a]);return o},e.sizeLt=function(e,t,n){for(var i,o=[],r=InfinniUI.ObjectUtils,a=0,l=t.length;l>a;a+=1)i=r.getPropertyValue(t[a],e[0]),i.lengtha;a+=1)i=r.getPropertyValue(t[a],e[0]),i.length<=e[1]&&o.push(t[a]);return o},e.regexp=function(e,t,n){for(var i,o,r=[],a=InfinniUI.ObjectUtils,l="",s=1,u=e[1].length;u>s;s+=1)l+=e[1][s];o=new RegExp(e[1][0],l);for(var d=0,c=t.length;c>d;d+=1)i=a.getPropertyValue(t[d],e[0]),-1!==i.search(o)&&r.push(t[d]);return r},e.text=function(e,t,n){for(var i,o=[],r=e[0].replace("_"," ").toLowerCase(),a=0,l=t.length;l>a;a+=1)i=JSON.stringify(t[a]).toLowerCase(),-1!==i.indexOf(r)&&o.push(t[a]);return o},e.startsWith=function(e,t,n){var i=e[0],o=_.isArray(e[1])?e[1][0]:e[1],r=_.isArray(e[1])?e[1][1]!==!1:!0,a="^{expectedStartValue}".replace("{expectedStartValue}",o),l=r?"i":"",s=_.filter(t,function(e){return new RegExp(a,l).test(e[i])});return s},e.endsWith=function(e,t,n){var i=e[0],o=_.isArray(e[1])?e[1][0]:e[1],r=_.isArray(e[1])?e[1][1]!==!1:!0,a="{expectedEndValue}$".replace("{expectedEndValue}",o),l=r?"i":"",s=_.filter(t,function(e){return new RegExp(a,l).test(e[i])});return s},e.contains=function(e,t,n){var i=e[0],o=_.isArray(e[1])?e[1][0]:e[1],r=_.isArray(e[1])?e[1][1]!==!1:!0,a=r?"i":"",l=_.filter(t,function(e){return new RegExp(o,a).test(e[i])});return l},e}(),window.InfinniUI.HashMap=HashMap,Object.defineProperties(HashMap.prototype,{length:{get:function(){return this._keys.length}},keys:{get:function(){return this._keys}},values:{get:function(){return this._values}}}),HashMap.prototype.add=function(e,t){var n=this._getIndexOfKey(e);-1===n?(this._keys.push(e),this._values.push(t)):this._values[n]=t},HashMap.prototype.remove=function(e){var t=this._getIndexOfKey(e);-1!==t&&(this._keys.splice(t,1),this._values.splice(t,1))},HashMap.prototype.getKeyByValue=function(e){var t,n=this._getIndexOfValue(e);return-1!==n&&(t=this._keys[n]),t},HashMap.prototype.findIndex=function(e,t){for(var n,i,o=-1,r=0;re)t=null;else{if(e>=this.KeyCode.NUMPAD_0&&e<=this.KeyCode.NUMPAD_9)n=e-48;else switch(e){case 110:n=this.KeyCode.DELETE;break;case 107:n=this.KeyCode.PLUS;break;case 109:n=this.KeyCode.MINUS;break;case 106:n=this.KeyCode.ASTERISK;break;case 111:n=this.KeyCode.SLASH;break;case 188:n=44;break;case 173:n=45;break;case 190:n=46;break;case 191:n=47;break;case 192:n=96;break;case 219:n=91;break;case 220:n=92;break;case 221:n=93;break;case 222:n=39;break;default:n=e}t=String.fromCharCode(n)}return t}};var LOG_LEVEL={debug:1,info:2,warn:3,error:4,trace:5};_.extend(Logger.prototype,{getLevel:function(){return this.level},setLevel:function(e){this.level=e},addMessage:function(e,t){this.messages.push({type:e,message:t})},debug:function(e){this.level>LOG_LEVEL.debug||(this.showMessages&&console.debug(e.message||e),this.addMessage(LOG_LEVEL.debug,e))},info:function(e){this.level>LOG_LEVEL.info||(this.showMessages&&console.info(e.message||e),this.addMessage(LOG_LEVEL.info,e))},warn:function(e){this.level>LOG_LEVEL.warn||(this.showMessages&&console.warn(e.message||e),this.addMessage(LOG_LEVEL.warn,e))},error:function(e){this.level>LOG_LEVEL.error||(this.showMessages&&console.error(e.message||e),this.addMessage(LOG_LEVEL.error,e))},trace:function(e){this.level>LOG_LEVEL.trace||(this.showMessages&&console.error(e.message||e),this.addMessage(LOG_LEVEL.trace,e))}}),window.InfinniUI.global.logger=new Logger,InfinniUI.Metadata=InfinniUI.Metadata||{},InfinniUI.Metadata.isValidValue=function(e,t){var n=!1;for(var i in t)if(t[i]===e){n=!0;break}return n},InfinniUI.Metadata.isBindingMetadata=function(e){return $.isPlainObject(e)&&"Source"in e},Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},String.prototype.includes||(String.prototype.includes=function(){return-1!==String.prototype.indexOf.apply(this,arguments)});var stringUtils={format:function(e,t){return e.replace(/{(\d+)}/g,function(e,n){return"undefined"!=typeof t[n]?t[n]:e})},formatProperty:function(e,t){if(!t||0==t.length||""==e)return e;for(var n=e.split("."),i=t.length-1,o=n.length-1;o>=0;o--)"#"==n[o]&&i>=0?(n[o]=t[i],i--):("$"==n[o]||stringUtils.isNumeric(n[o]))&&i--;return n.join(".")},padLeft:function(e,t,n){"undefined"!=typeof n&&null!==n||(n=" ");var i=String(e);return i.lengtho;o++)if(i[n[o]])i=i[n[o]];else{if(!t)return{};i[n[o]]={},i=i[n[o]]}return i},_notifyAboutPropertyChanged:function(e,t){var n=this._getHandlersSubTree(e),i=null!=this.mirroringTo&&null!=this.mirroringFrom&&0==e.indexOf(this.mirroringTo),o=e.replace(this.mirroringTo,this.mirroringFrom);this._notifyAboutPropertyChanged_bubblingAction(e,t,n),this._notifyAboutPropertyChanged_capturingAction(e,t,n),i&&(n=this._getHandlersSubTree(o),this._notifyAboutPropertyChanged_capturingAction(o,t,n))},_notifyAboutPropertyChanged_capturingAction:function(e,t,n){var i,o,r;for(var a in n)$.isFunction(n[a])&&(r=n[a],this._isOwnerAlive(r)?this._callHandlerAboutPropertyChanged(r,e,t):delete n[a]);for(var a in n)$.isPlainObject(n[a])&&"*"!=a&&(i=$.isPlainObject(t)?t[a]:void 0,o=""==e?a:e+"."+a,this._notifyAboutPropertyChanged_capturingAction(o,i,n[a]))},_notifyAboutPropertyChanged_bubblingAction:function(e,t,n){function i(n){var i;if("*"in n)for(var o in n["*"])i=n["*"][o],l._isOwnerAlive(i)?l._callHandlerAboutPropertyChanged(i,e,t):delete n["*"][o]}var o,r=e.split("."),a=this.handlersTree,l=this;if(i(a),""!=e)for(var s=0,u=r.length;u>s&&(o=r[s],a[o]);s++)a=a[o],i(a)},_isOwnerAlive:function(e){return e._owner&&"isRemoved"in e._owner?"function"==typeof e._owner.isRemoved?e._owner.isRemoved():!e._owner.isRemoved:!0},_callHandlerAboutPropertyChanged:function(e,t,n){var i={property:t,newValue:this.getProperty(t),oldValue:n,source:this.source};e(this.context,i)},setMirroring:function(e,t){this.mirroringFrom=e,this.mirroringTo=t}});var urlManager={getParams:function(){var e,t,n=location.search,i={};if(0==n.length)return i;n=n.substr(1),e=n.split("&");for(var o=0,r=e.length;r>o;o++)t=e[o].split("="),i[t[0]]=t[1];return i},clearUrlSearchPath:function(){var e,t,n=location.search;n.length>0&&(e=location.href.indexOf(n),e>0&&(t=location.href.substr(0,e))),t&&history.pushState(null,null,t)},setParameter:function(e,t){var n=location.search,i=_.isEmpty(n)?stringUtils.format("?{0}={1}",[e,t]):stringUtils.format("{0}&{1}={2}",[n,e,t]),o=stringUtils.format("{0}//{1}{2}{3}{4}",[location.protocol,location.host,location.pathname,i,location.hash]);history.pushState(null,null,o)},deleteParameter:function(e){function t(e){var t=[];return _.mapObject(e,function(e,n){var i=stringUtils.format("{0}={1}",[n,e]);t.push(i)}),_.isEmpty(t)?"":"?"+t.join("&")}var n=urlManager.getParams();delete n[e];var i=t(n),o=stringUtils.format("{0}//{1}{2}{3}{4}",[location.protocol,location.host,location.pathname,i,location.hash]);history.pushState(null,null,o)}};window.InfinniUI.UrlManager=urlManager,window.InfinniUI.global.messageBus=new MessageBus,window.messageTypes={onViewBuildError:{name:"onViewBuildError"},onViewCreated:{name:"onViewCreated"},onChangeLayout:{name:"OnChangeLayout"},onNotifyUser:{name:"onNotifyUser"},onToolTip:{name:"onToolTip"},onContextMenu:{name:"onContextMenu"},onOpenContextMenu:{name:"onOpenContextMenu"},onDataLoading:{name:"onDataLoading"},onDataLoaded:{name:"onDataLoaded"}};var ajaxRequestMixin=function(e){function t(e,t){var n;return"function"==typeof e&&(n=e.apply(null,Array.prototype.slice.call(t))),n}return{onBeforeRequest:function(n){return function(){return e.send(messageTypes.onDataLoading,{}),t(n,arguments)}},onSuccessRequest:function(n){return function(){return e.send(messageTypes.onDataLoaded,{success:!0}),t(n,arguments)}},onErrorRequest:function(n){return function(){return e.send(messageTypes.onDataLoaded,{success:!1}),t(n,arguments)}}}}(window.InfinniUI.global.messageBus),bindUIElementsMixin={bindUIElements:function(){if(this.ui={},"undefined"!=typeof this.UI)for(var e in this.UI)this.UI.hasOwnProperty(e)&&(this.ui[e]=this.$(this.UI[e]))}},eventHandlerMixin={addEventHandler:function(e,t){if(this.initEventHandlerMixin(),null===e||"undefined"==typeof e)return!1;if(null===t||"undefined"==typeof t)return!1;"undefined"==typeof this.eventHandlers[e]&&(this.eventHandlers[e]=[]);var n=this.eventHandlers[e];-1===n.indexOf(t)&&n.push(t)},callEventHandler:function(e){if("undefined"!=typeof this.eventHandlers&&null!==e&&"undefined"!=typeof e){var t=this.eventHandlers[e];if("undefined"!=typeof t){var n,i=Array.prototype.slice.call(arguments,1),o=i.pop();"function"==typeof o&&(n=o),o=i.pop(),_.each(t,function(e){var t=e.apply(void 0,o);"undefined"!=typeof n&&n(t)})}}},initEventHandlerMixin:function(){"undefined"==typeof this.eventHandlers&&(this.eventHandlers={})}},Control=function(e){this.controlModel=this.createControlModel(),this.controlView=this.createControlView(this.controlModel,e),this.initHandlers()};_.extend(Control.prototype,{createControlModel:function(){throw"Не перегружен абстрактный метод Control.createControlModel()"},createControlView:function(e,t){throw"Не перегружен абстрактный метод Control.createControlView()"},initHandlers:function(){this.controlView.on("onLoaded",function(){this.controlModel.set("isLoaded",!0)},this)},set:function(e,t){this.controlModel.set(e,t)},get:function(e){return this.controlModel.get(e)},on:function(e,t){return this.controlModel.on(e,t)},render:function(){return this.controlView.render().$el},getChildElements:function(){return[]},onLoaded:function(e){this.controlModel.on("change:isLoaded",function(t){t&&e()})},isLoaded:function(){return this.controlModel.get("isLoaded")},onBeforeClick:function(e){this.controlView.on("beforeClick",e)},onClick:function(e){this.controlView.$el.on("click",e)},onDoubleClick:function(e){this.controlView.$el.on("dblclick",e)},onMouseDown:function(e){this.controlView.$el.on("mousedown",e)},onMouseUp:function(e){this.controlView.$el.on("mouseup",e)},onMouseEnter:function(e){this.controlView.$el.on("mouseenter",e)},onMouseLeave:function(e){this.controlView.$el.on("mouseleave",e)},onMouseMove:function(e){this.controlView.$el.on("mousemove",e)},onMouseWheel:function(e){this.controlView.$el.on("mousewheel DOMMouseScroll",e)},onKeyDown:function(e){this.controlView.$el.on("keydown",e)},onKeyUp:function(e){this.controlView.$el.on("keyup",e)},remove:function(){this.controlView.remove()},setFocus:function(){this.controlView.setFocus()}}),InfinniUI.Control=Control;var ControlModel=Backbone.Model.extend({defaults:{text:null,name:null,enabled:!0,parentEnabled:!0,visible:!0,textHorizontalAlignment:InfinniUI.TextHorizontalAlignment.left,horizontalAlignment:"Stretch",verticalAlignment:"Top",textStyle:null,background:null,foreground:null,isLoaded:!1,validationState:"success",validationMessage:"",focusable:!0,focused:!1},initialize:function(){this.set("guid",guid(),{silent:!0}),this.on("change:focused",function(e,t){this.trigger(t?"OnGotFocus":"OnLostFocus")})},set:function(e,t,n){var i,o=this.defaults;if(null==e)return this;"object"==typeof e?(i=e,n=t):(i={})[e]=t;for(var r in i)"undefined"!=typeof i[r]&&null!==i[r]||r in o&&(i[r]=o[r]);return Backbone.Model.prototype.set.call(this,i,n)}});InfinniUI.ControlModel=ControlModel;var ControlView=Backbone.View.extend({initialize:function(){this.wasRendered=!1,this.once("render",this.initHandlersForProperties,this),this._initDomHandlers()},classNameFocused:"pl-focused",_initDomHandlers:function(){var e=this,t=this.$el;t[0].addEventListener("click",function(t){e.trigger("beforeClick",null,{value:t})},!0)},initHandlersForProperties:function(){this.listenTo(this.model,"change:visible",this.updateVisible),this.listenTo(this.model,"change:horizontalAlignment",this.updateHorizontalAlignment),this.listenTo(this.model,"change:textHorizontalAlignment",this.updateTextHorizontalAlignment),this.listenTo(this.model,"change:verticalAlignment",this.updateVerticalAlignment),this.listenTo(this.model,"change:enabled",this.updateEnabled),this.listenTo(this.model,"change:name",this.updateName),this.listenTo(this.model,"change:style",this.updateStyle),this.listenTo(this.model,"change:text",this.updateText),this.listenTo(this.model,"change:textStyle",this.updateTextStyle),this.listenTo(this.model,"change:background",this.updateBackground),this.listenTo(this.model,"change:foreground",this.updateForeground),this.listenTo(this.model,"change:validationState",this.updateValidationState),this.listenTo(this.model,"change:focusable",this.updateFocusable),this.listenTo(this.model,"change:focused",this.updateFocused),this.initFocusHandlers()},initFocusHandlers:function(){function e(e){o.set("focused",!0)}function t(e){i.isControlElement(e.relatedTarget)?o.set("focused",!0):o.set("focused",!1)}var n=this.$el,i=(this.el,this),o=this.model;n.on("focusin",e).on("focusout",t)},isControlElement:function(e){return this.el===e||$.contains(this.el,e)},updateProperties:function(){this.updateVisible(),this.updateTextHorizontalAlignment(),this.updateHorizontalAlignment(),this.updateVerticalAlignment(),this.updateEnabled(),this.updateName(),this.updateText(),this.updateStyle(),this.updateTextStyle(),this.updateBackground(),this.updateForeground(),this.updateValidationState(),this.updateFocusable(),this.updateFocused(),this.updateViewMode()},updateFocusable:function(){},getElementForFocus:function(){return this.$el},updateFocused:function(){var e=this.model.get("focused");if(e){var t=this.getElementForFocus();t&&t.length}this.$el.toggleClass(this.classNameFocused,e)},onFocusHandler:function(e){},updateVisible:function(){var e=this.model.get("visible");this.$el.toggleClass("hidden",!e),this.onUpdateVisible()},onUpdateVisible:function(){this.updateLayout()},updateLayout:function(){var e=window.InfinniUI.global.messageBus;e.send("OnChangeLayout",{})},updateEnabled:function(){var e=this.model.get("enabled");this.$el.toggleClass("pl-disabled",!e)},updateVerticalAlignment:function(){this.switchClass("verticalAlignment",this.model.get("verticalAlignment"),this.$el,!1)},updateTextHorizontalAlignment:function(){this.switchClass("pl-text-horizontal",this.model.get("textHorizontalAlignment"))},updateHorizontalAlignment:function(){this.switchClass("pl-horizontal",this.model.get("horizontalAlignment"))},updateName:function(){var e=this.model.get("name"),t=this.$el.attr("data-pl-name");e!=t&&"string"==typeof e&&this.$el.attr("data-pl-name",e)},updateText:function(){},updateTextStyle:function(){var e=this.model.get("textStyle");this.currentTextStyle&&this.$el.removeClass(this.valueToTextClassName(this.currentTextStyle)),e&&this.$el.addClass(this.valueToTextClassName(e)),this.currentTextStyle=e},updateBackground:function(){var e=this.model.get("background");this.currentBackground&&this.$el.removeClass(this.valueToBackgroundClassName(this.currentBackground)),e&&this.$el.addClass(this.valueToBackgroundClassName(e)),this.currentBackground=e},updateForeground:function(){var e=this.model.get("foreground");this.currentForeground&&this.$el.removeClass(this.valueToForegroundClassName(this.currentForeground)),e&&this.$el.addClass(this.valueToForegroundClassName(e)),this.currentForeground=e},updateStyle:function(){var e=this.model.get("style");this.currentStyle&&this.$el.removeClass(this.currentStyle),e&&this.$el.addClass(e),this.currentStyle=e},updateViewMode:function(){"FormGroup"==this.viewMode&&this.$el.addClass("pl-form-group")},updateValidationState:function(){var e=this.model.get("validationState"),t=this.model.get("validationMessage");switch(e){case"success":this.$el.removeClass("has-warning has-error"),this.hideErrorMessage();break;case"warning":this.$el.removeClass("has-error").addClass("has-warning"),this.showErrorMessage(t);break;case"error":this.$el.removeClass("has-warning").addClass("has-error"),this.showErrorMessage(t)}},showErrorMessage:function(e){var t=$(_.template('')({message:e}));this.hideErrorMessage(),this.$el.find(".form-control:first").before(t),t.tooltip({container:"body"})},hideErrorMessage:function(){this.$el.find(".error-icn").remove()},rerender:function(){this.wasRendered&&this.render()},prerenderingActions:function(){this.wasRendered=!0},postrenderingActions:function(e){this.delegateEvents(),e=void 0===e?!0:e,e&&this.trigger("onLoaded")},switchClass:function(e,t,n,i){"undefined"==typeof i?i="-":i===!1&&(i="");var o=e+i,r=new RegExp("(^|\\s)"+o+"\\S+","ig"),a=n||this.$el;a.removeClass(function(e,t){return(t.match(r)||[]).join(" ")}).addClass(o+t)},valueToBackgroundClassName:function(e){return"pl-"+e.toLowerCase()+"-bg"},valueToForegroundClassName:function(e){return"pl-"+e.toLowerCase()+"-fg"},valueToTextClassName:function(e){return"pl-"+e.toLowerCase()},renderTemplate:function(e){var t=this.getData();this.$el.html(e(t)),this.bindUIElements()},getData:function(){var e=this.model;return{name:e.get("name"),text:e.get("text"),focusable:e.get("focusable"),focused:e.get("focused"),enabled:e.get("enabled"),visible:e.get("visible"),horizontalAlignment:e.get("horizontalAlignment"),verticalAlignment:e.get("verticalAlignment"),textHorizontalAlignment:e.get("textHorizontalAlignment"),textVerticalAlignment:e.get("textVerticalAlignment"),textStyle:e.get("textStyle"),foreground:e.get("foreground"),background:e.get("background")}},setFocus:function(){this.$el.focus()}});_.extend(ControlView.prototype,bindUIElementsMixin,eventHandlerMixin),InfinniUI.ControlView=ControlView;var buttonControlMixin={click:function(){this.controlView.$el.click()}};_.inherit(ContainerControl,Control),_.extend(ContainerControl.prototype,{});var ContainerModel=ControlModel.extend({defaults:_.defaults({itemTemplate:null},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.set("items",new Collection)}}),ContainerView=ControlView.extend({initialize:function(e){ControlView.prototype.initialize.call(this,e),this.childElements=[],this.listenTo(this.model,"change:groupValueSelector",this.updateGrouping),this.updateGrouping()},updateGrouping:function(){throw"ContainerView.updateGrouping В потомке ContainerView не реализовано обновление группировок."},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this);var e=this;this.model.get("items").onChange(function(t){switch(t.action){case"replace":break;default:e.rerender()}})},removeChildElements:function(){for(var e=0,t=this.childElements.length;t>e;e++)this.childElements[e].remove();this.childElements=[]},addChildElement:function(e){this.childElements.push(e)}}),editorBaseControlMixin={initialize_editorBaseControl:function(){},setValue:function(e){this.controlModel.set("value",e)},getValue:function(){return this.controlModel.get("value")},onValueChanging:function(e){this.controlModel.onValueChanging(e)},onValueChanged:function(e){this.controlModel.onValueChanged(e)}},editorBaseModelMixin={defaults_editorBaseModel:{value:null,hintText:null,errorText:null,warningText:null,labelFloating:!1},initialize_editorBaseModel:function(){this.eventManager=new EventManager,this.isInited=!0},transformValue:function(e){return e},_applyDefaultValue:function(e){var t=_.result(this,"defaults");return"undefined"==typeof e?t.value:e},_setValue:function(e,t){e=this.transformValue(e),e=this._applyDefaultValue(e);var n=this.get("value"),i={oldValue:n,newValue:e};e!==n&&(this.isInited?this.eventManager.trigger("onValueChanging",i)&&(ContainerModel.prototype.set.call(this,"value",e,t||{}),this.trigger("onValueChanged",i)):ContainerModel.prototype.set.call(this,"value",e,t||{}))},set:function(e,t,n){var i,n;if(null===e)return this;"object"==typeof e?(i=e,n=t):(i={})[e]=t,n=n||{},"value"in i&&(this._setValue(i.value,n),delete i.value);var o=!1;for(var r in i){o=!0;break}return o?ContainerModel.prototype.set.call(this,i,n):!1},getValue:function(){return this.get("value")},isSetValue:function(e){return null!==e&&"undefined"!=typeof e&&""!==e},onValueChanging:function(e){this.eventManager.on("onValueChanging",e)},onValueChanged:function(e){this.on("onValueChanged",e)}},editorBaseViewMixin={UI:{hintText:".pl-control-hint-text",warningText:".pl-control-warning-text",errorText:".pl-control-error-text"},getData:function(){var e=this.model;return{guid:e.get("guid")}},initHandlersForProperties:function(){this.listenTo(this.model,"onValueChanged",this.updateValue),this.listenTo(this.model,"change:hintText",this.updateHintText),this.listenTo(this.model,"change:errorText",this.updateErrorText),this.listenTo(this.model,"change:warningText",this.updateWarningText)},updateProperties:function(){this.updateValue(),this.updateLabelFloating(),this.updateHintText(),this.updateErrorText(),this.updateWarningText()},updateValue:function(){throw"editorBaseViewMixin.updateValue В потомке editorBaseViewMixin не реализовано обновление данных."},updateValueState:function(){var e=this.model.get("value"),t=_.isEmpty(e)&&!_.isNumber(e);this.$el.toggleClass("pl-empty-text-editor",t)},updateLabelFloating:function(){var e=this.model.get("labelFloating");this.$el.toggleClass("pl-label-floating",e===!0)},updateHintText:function(){var e=this.model.get("hintText");e?this.ui.hintText.text(e).removeClass("hidden"):this.ui.hintText.text("").addClass("hidden")},updateErrorText:function(){var e=this.model.get("errorText");e?this.ui.errorText.text(e).removeClass("hidden"):this.ui.errorText.text("").addClass("hidden")},updateWarningText:function(){var e=this.model.get("warningText");e?this.ui.warningText.text(e).removeClass("hidden"):this.ui.warningText.text("").addClass("hidden")},updateEnabled:function(){if(ControlView.prototype.updateEnabled.call(this),this.ui.control){var e=this.model.get("enabled");this.ui.control.prop("disabled",!e)}},onInvalidHandler:function(e,t){}};_.inherit(ListEditorBaseControl,ContainerControl),_.extend(ListEditorBaseControl.prototype,{onSelectedItemChanged:function(e){this.controlModel.onSelectedItemChanged(e)}},editorBaseControlMixin);var ListEditorBaseModel=ContainerModel.extend(_.extend({defaults:_.defaults({multiSelect:!1,disabledItemCondition:null},ContainerModel.prototype.defaults),initialize:function(){var e=this;this.hashValueByItem=new HashMap,ContainerModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel(),this.bindSelectedItemsWithValue(),this.get("items").onChange(function(){e.hashValueByItem.clear()})},onSelectedItemChanged:function(e){this.on("change:selectedItem",function(t,n){e({value:n})})},toggleValue:function(e,t){var n=this.get("value"),i=this.get("multiSelect");if(i){n=Array.isArray(n)?n:[];var o=JSON.stringify(e),r=n.filter(function(e){return JSON.stringify(e)!==o});"undefined"!=typeof t&&t!==!0||r.length===n.length&&r.push(e),this.set("value",r)}else e!=n&&this.set("value",e)},bindSelectedItemsWithValue:function(){},valueByItem:function(e){var t=this.get("valueSelector");return t?t(void 0,{value:e}):e},itemInfoByValue:function(e){0===this.hashValueByItem.length&&this.updateHashValueByItem();var t,n,i=this.hashValueByItem.getKeyByValue(e);if("undefined"!=typeof i)t={item:i,index:this.hashValueByItem.keys.indexOf(i)};else{var o=JSON.stringify(e);n=this.hashValueByItem.findIndex(function(e,t){return JSON.stringify(t)===o}),-1!==n&&(t={index:n,item:this.hashValueByItem.keys[n]})}return t},itemByValue:function(e){var t=this.itemInfoByValue(e);return t?t.item:void 0},itemIndexByValue:function(e){var t=this.itemInfoByValue(e);return t?t.index:-1},itemIndexByItem:function(e){var t=this.valueByItem(e);return this.itemIndexByValue(t)},isDisabledItem:function(e){var t=this.get("disabledItemCondition");return null!=t&&t(void 0,{value:e})},updateHashValueByItem:function(){var e,t=this.get("items");this.hashValueByItem.clear(),t.forEach(function(t){e=this.valueByItem(t),this.hashValueByItem.add(t,e)},this)}},editorBaseModelMixin)),ListEditorBaseView=ContainerView.extend(_.extend({},editorBaseViewMixin,{initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:selectedItem",this.updateSelectedItem),this.listenTo(this.model,"change:multiSelect",this.updateMultiSelect),this.listenTo(this.model,"change:disabledItemCondition",this.updateDisabledItem)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateSelectedItem(),this.updateMultiSelect(),this.updateDisabledItem()},updateMultiSelect:function(){}}));_.inherit(TextEditorBaseControl,Control),_.extend(TextEditorBaseControl.prototype,editorBaseControlMixin);var TextEditorBaseModel=ControlModel.extend({defaults:_.defaults({labelText:null,displayFormat:null,editMask:null},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}});_.extend(TextEditorBaseModel.prototype,editorBaseModelMixin);var TextEditorBaseView=ControlView.extend(_.extend({},editorBaseViewMixin,{UI:_.extend({},editorBaseViewMixin.UI,{control:".pl-control",editor:".pl-editor",label:".pl-control-label",textbox:".pl-text-box-input"}),events:{},initialize:function(){ControlView.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:labelText",this.updateLabelText),this.listenTo(this.model,"change:labelFloating",this.updateLabelFloating),this.listenTo(this.model,"change:displayFormat",this.updateDisplayFormat),this.listenTo(this.model,"change:editMask",this.updateEditMask),this.listenTo(this.model,"change:inputType",this.updateInputType)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateLabelText(),this.updateInputType()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.editor.removeAttr("tabindex"):this.ui.editor.attr("tabindex",-1)},updateInputType:function(){var e=this.model.get("inputType"),t=this.ui.editor,n=t.prop("tagName");e&&"input"===n.toLowerCase()&&t.attr("type",e)},updateEditMask:function(){this.updateValue()},setFocus:function(){this.ui.editor.focus()},updateValue:function(){editorBaseViewMixin.updateValueState.call(this),this.ui.control.val(this.getDisplayValue())},updateLabelText:function(){var e=this.model.get("labelText");e?this.ui.label.text(e).removeClass("hidden"):this.ui.label.text("").addClass("hidden")},updateDisplayFormat:function(){this.updateValue()},renderControlEditor:function(){var e=this.model,t=e.get("editor");t&&t.render(this.ui.editor)},getData:function(){var e=this.model;return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{labelText:e.get("labelText"),labelFloating:e.get("labelFloating"),value:this.getDisplayValue()})},getDisplayValue:function(){var e=this.model,t=e.get("value"),n=e.get("displayFormat");return n?n(null,{value:t}):t}}));EventManager.prototype.on=function(e,t){return"undefined"==typeof this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this},EventManager.prototype.trigger=function(e,t,n){var i=this.handlers[e],o=!0;return Array.isArray(i)&&(o=i.map(function(e){return e.call(n,t)}).every(function(e){return e!==!1})),o};var highlightMixin={attributeName:"_highlight",highlightClassName:"active",control:{setHighlight:function(e){this.controlModel.set(highlightMixin.attributeName,e)},getHighlight:function(){return this.controlModel.get(highlightMixin.attributeName)}},controlView:{initHighlightMixin:function(){this.listenTo(this.model,"change:"+highlightMixin.attributeName,function(){var e=this.model;this.$el.toggleClass(highlightMixin.highlightClassName,e.get(highlightMixin.attributeName)),this.$el.parent().toggleClass(highlightMixin.highlightClassName,e.get(highlightMixin.attributeName))})}}},TextEditorModel=Backbone.Model.extend({Mode:{Edit:"edit",Display:"display"},initialize:function(){this.initEditMode(),this.on("change:originalValue",this.onChangeOriginalValueHandler),this.on("change:value",this.onChangeValueHandler),this.on("change:mode",this.onChangeModeHandler),this.on("change:text",this.onChangeTextHandler)},onChangeTextHandler:function(e,t,n){var i=this.get("modeStrategy");i.onChangeTextHandler(e,t,n)},convertValue:function(e){var t=this.get("valueConverter"),n=t.call(null);return"function"==typeof n?n.call(this,e):e},initEditMode:function(){this.modeStrategies={},this.modeStrategies[this.Mode.Edit]=new TextEditorModelEditModeStrategy,this.modeStrategies[this.Mode.Display]=new TextEditorModelDisplayModeStrategy,this.updateEditModeStrategy()},defaults:function(){return{mode:this.Mode.Display}},updateEditModeStrategy:function(){var e=this.get("mode");this.set("modeStrategy",this.modeStrategies[e])},onChangeModeHandler:function(e,t,n){var i=this.previous("mode");n.cancel?this.cancelChanges():t===this.Mode.Display&&i===this.Mode.Edit&&this.applyChanges(),this.updateEditModeStrategy(),this.updateText()},setDisplayMode:function(e,t){e=!!e,t="undefined"==typeof t?!0:!!t,this.set("mode",this.Mode.Display,{cancel:e,validate:t})},applyChanges:function(){this.set("originalValue",this.get("value"))},cancelChanges:function(){this.set("value",this.get("originalValue"))},setText:function(e,t){var n=this.get("modeStrategy");n.setText(this,e,t)},getEditMask:function(){return this.get("editMask")},getValue:function(){return this.get("value")},getDisplayFormat:function(){return this.get("displayFormat")},setEditMode:function(){this.set("mode",this.Mode.Edit)},validate:function(e,t){var n=this.get("validateValue"),i=this.getValue();return _.isFunction(n)?n.call(null,i):void 0},updateText:function(){var e=this.get("modeStrategy");e.updateText(this)},onChangeValueHandler:function(e,t,n){n.ui||this.updateText()},onChangeOriginalValueHandler:function(e,t){e.set("value",t,{originalValue:!0})}}),TextEditorView=Backbone.View.extend({classNameError:"has-error",events:{focusin:"onFocusinHandler",focusout:"onFocusoutHandler",keydown:"onKeydownHandler",change:"onChangeHandler",input:"onInputHandler",keyup:"onKeyupHandler",click:"onClickHandler",drop:"onDropHandler",dragstart:"OnDragstartHandler",dragend:"OnDragendHandler",dragover:"OnDragoverHandler",dragleave:"OnDragleaveHandler",dragenter:"OnDragenterHandler",paste:"onPasteHandler"},updateModelTextFromEditor:function(){var e=this.model,t=e.getEditMask();t||e.setText(this.$el.val(),!0)},onChangeHandler:function(){this.updateModelTextFromEditor()},onInputHandler:function(){var e=this.model.getEditMask();e||this.updateModelTextFromEditor()},onKeydownHandler:function(e){if(!e.ctrlKey&&!e.altKey){if(e.which===InfinniUI.Keyboard.KeyCode.ESCAPE)return this.model.setDisplayMode(!0,!1),void this.$el.blur();var t=this.model.getEditMask();if(t){var n,i=this.model;switch(e.which){case InfinniUI.Keyboard.KeyCode.TAB:break;case InfinniUI.Keyboard.KeyCode.HOME:e.shiftKey||(n=t.moveToPrevChar(0),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.LEFT_ARROW:e.shiftKey||(n=t.moveToPrevChar(this.getCaretPosition()),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.RIGHT_ARROW:e.shiftKey||(n=t.moveToNextChar(this.getCaretPosition()),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.END:e.shiftKey||(n=t.moveToNextChar(this.$el.val().length),n!==!1&&(e.preventDefault(),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.UP_ARROW:e.shiftKey||(n=t.setNextValue(this.getCaretPosition()),n!==!1&&(e.preventDefault(),i.setText(t.getText()),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.DOWN_ARROW:e.shiftKey||(n=t.setPrevValue(this.getCaretPosition()),n!==!1&&(e.preventDefault(),this.model.setText(t.getText()),this.setCaretPosition(n)));break;case InfinniUI.Keyboard.KeyCode.DELETE:e.preventDefault(),n=t.deleteCharRight(this.getCaretPosition(),this.getSelectionLength()),this.model.setText(t.getText()),n!==!1&&this.setCaretPosition(n);break;case InfinniUI.Keyboard.KeyCode.BACKSPACE:e.preventDefault(),n=t.deleteCharLeft(this.getCaretPosition(),this.getSelectionLength()),this.model.setText(t.getText()),n!==!1&&this.setCaretPosition(n);break;case InfinniUI.Keyboard.KeyCode.SPACE:t.value instanceof Date&&(e.preventDefault(),n=t.getNextItemMask(this.getCaretPosition()),n!==!1&&this.setCaretPosition(n));break;default:var o=InfinniUI.Keyboard.getCharByKeyCode(e.keyCode);e.preventDefault(),n=this.getSelectionLength()>0?t.deleteSelectedText(this.getCaretPosition(),this.getSelectionLength(),o):t.setCharAt(o,this.getCaretPosition(),this.getSelectionLength()),this.model.setText(t.getText()),n!==!1&&this.setCaretPosition(n)}}}},onKeyupHandler:function(e){this.trigger("onKeyDown",{keyCode:e.which,value:this.model.getValue()})},onClickHandler:function(e){this.checkCurrentPosition(),e.preventDefault()},onPasteHandler:function(e){var t=e.originalEvent,n=t.clipboardData.getData("text/plain"),i=this.model.getEditMask();i&&(e.preventDefault(),this.textTyping(n))},OnDragstartHandler:function(e){var t=e.originalEvent;t.dataTransfer.effectAllowed="copy",this.$el.attr("data-dragged",!0)},OnDragendHandler:function(){this.$el.removeAttr("data-dragged",!1)},OnDragoverHandler:function(e){e.preventDefault()},OnDragenterHandler:function(e){var t=this.$el.attr("data-dragged");!t&&this.getCanChange()&&this.model.setEditMode()},OnDragleaveHandler:function(e){var t=this.$el.attr("data-dragged");t||this.model.setDisplayMode()},onDropHandler:function(e){e.preventDefault(),e.stopPropagation();var t=this.$el.attr("data-dragged");if(!t&&this.getCanChange()){var n=e.originalEvent,i=n.dataTransfer.getData("text/plain");this.textTyping(i,0),this.$el.focus()}},getCanChange:function(){var e=this.$el.prop("disabled");return e===!1},textTyping:function(e,t){var n=this.model.getEditMask(),i=e;n&&(e.split("").reduce(function(e,t){return n.setCharAt(t,e)},_.isNumber(t)?t:this.getCaretPosition()),i=n.getText()),this.model.setText(i)},checkCurrentPosition:function(e){if(this.canCaretPosition()){var t=this.model.getEditMask();if(t){"undefined"==typeof e&&(e=this.getCaretPosition());var n=0===e?t.moveToPrevChar(0):t.moveToNextChar(e-1);n!==e&&this.setCaretPosition(n)}}},getSelectionLength:function(){var e=this.el,t=0;if(this.canCaretPosition()){var n=parseInt(e.selectionStart,10),i=parseInt(e.selectionEnd,10);isNaN(n)||isNaN(i)||(t=i-n)}return t},canCaretPosition:function(){return/text|password|search|tel|url/.test(this.el.type)},setCaretPosition:function(e){if(_.isNumber(e)&&this.canCaretPosition()){var t=this.el;"undefined"!=typeof t.selectionStart&&t.setSelectionRange(e,e)}},getCaretPosition:function(){var e=this.el,t=0;return this.canCaretPosition()&&(t=e.selectionStart),t},initialize:function(){this.applyAutocomplete(),this.listenTo(this.model,"change:mode",this.onChangeModeHandler),this.listenTo(this.model,"change:text",this.onChangeTextHandler),this.listenTo(this.model,"invalid",this.onInvalidHandler)},applyAutocomplete:function(){var e=this.model.getEditMask();e&&this.$el.attr("autocomplete","off")},onInvalidHandler:function(e,t){this.$el.toggleClass(this.classNameError,!0)},onFocusinHandler:function(){this.model.setEditMode(),setTimeout(this.setCaretPosition.bind(this,0),4)},onFocusoutHandler:function(){this.model.setDisplayMode()},onChangeModeHandler:function(e,t){this.checkCurrentPosition()},onChangeTextHandler:function(e,t){var n=this.$el,i=this.getCaretPosition();n.toggleClass(this.classNameError,!1),n.val()!==t&&n.val(t);var o=this.model.getEditMask();o&&n.is(":focus")&&this.checkCurrentPosition(i)}});TextEditorModelBaseModeStrategy.prototype.updateText=function(e){},TextEditorModelBaseModeStrategy.prototype.setText=function(e,t,n){}, +TextEditorModelBaseModeStrategy.prototype.onChangeTextHandler=function(e,t,n){},TextEditorModelDisplayModeStrategy.prototype=Object.create(TextEditorModelBaseModeStrategy.prototype),TextEditorModelDisplayModeStrategy.prototype.constructor=TextEditorModelDisplayModeStrategy,TextEditorModelDisplayModeStrategy.prototype.updateText=function(e){var t,n=e.getDisplayFormat(),i=e.get("value");t=_.isFunction(n)?n.call(null,null,{value:i}):i,e.set("text",t)},TextEditorModelDisplayModeStrategy.prototype.setText=function(e,t,n){n&&e.set("text",t,{ui:n})},TextEditorModelDisplayModeStrategy.prototype.onChangeTextHandler=function(e,t,n){if(n.ui){var i=e.convertValue(t);e.set("value",i,{ui:n.ui})}e.applyChanges()},TextEditorModelEditModeStrategy.prototype=Object.create(TextEditorModelBaseModeStrategy.prototype),TextEditorModelEditModeStrategy.prototype.constructor=TextEditorModelBaseModeStrategy,TextEditorModelEditModeStrategy.prototype.updateText=function(e){var t,n=e.getEditMask(),i=e.get("value");n?(n.reset(i),t=n.getText()):t=i,"undefined"==typeof t||null===t?e.set("text",""):e.set("text",t.toString())},TextEditorModelEditModeStrategy.prototype.setText=function(e,t,n){e.set("text",t,{ui:n})},TextEditorModelEditModeStrategy.prototype.onChangeTextHandler=function(e,t,n){var i=e.getEditMask(),o=i?i.getData():t;e.set("value",e.convertValue(o),{silent:!!i,ui:n.ui})},_.inherit(TextBoxControl,TextEditorBaseControl),_.extend(TextBoxControl.prototype,{createControlModel:function(){return new TextBoxModel},createControlView:function(e){return new TextBoxView({model:e})}});var TextBoxModel=TextEditorBaseModel.extend({defaults:_.extend({},TextEditorBaseModel.prototype.defaults,{multiline:!1,inputType:"text"}),initialize:function(){TextEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),TextBoxView=TextEditorBaseView.extend({template:{oneline:InfinniUI.Template["controls/textBox/template/oneline.tpl.html"],multiline:InfinniUI.Template["controls/textBox/template/multiline.tpl.html"]},className:"pl-textbox form-group",UI:_.extend({},TextEditorBaseView.prototype.UI),events:_.extend({},TextEditorBaseView.prototype.events,{}),initHandlersForProperties:function(){TextEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:multiline",this.updateMultiline),this.listenTo(this.model,"change:lineCount",this.updateLineCount)},updateProperties:function(){TextEditorBaseView.prototype.updateProperties.call(this),this.updateLineCount()},updateMultiline:function(){this.rerender()},updateLineCount:function(){var e=this.model.get("lineCount");this.ui.editor.attr("rows",e)},render:function(){this.prerenderingActions();var e=this.model,t=e.get("multiline")?this.template.multiline:this.template.oneline;return this.renderTemplate(t),this.renderTextBoxEditor(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=TextEditorBaseView.prototype.getData.call(this),t=this.model;return _.extend(e,{multiline:t.get("multiline"),lineCount:t.get("lineCount")})},renderTextBoxEditor:function(){this.renderControlEditor()}}),dateTimePickerModeDate={getTemplate:function(){return InfinniUI.Template["controls/dateTimePicker/template/date.tpl.html"]},onClickDropdownHandler:function(e){var t=this.model,n=new SelectDate({model:t});n.render(),$("body").append(n.$el),n.updatePosition(this.el),this.listenTo(n,"date",function(e){t.set("value",this.convertValue(e))})},convertValue:function(e){return InfinniUI.DateUtils.toISO8601(e,{timezoneOffset:this.model.get("timeZone")})}},dateTimePickerModeDateTime={getTemplate:function(){return InfinniUI.Template["controls/dateTimePicker/template/dateTime.tpl.html"]},onClickDropdownHandler:function(e){var t=this.model,n=new SelectDateTime({model:t});n.render(),$("body").append(n.$el),n.updatePosition(this.el),this.listenTo(n,"date",function(e){t.set("value",this.convertValue(e))})},convertValue:function(e){return InfinniUI.DateUtils.toISO8601(e,{timezoneOffset:this.model.get("timeZone")})}},dateTimePickerModeTime={getTemplate:function(){return InfinniUI.Template["controls/dateTimePicker/template/time.tpl.html"]},onClickDropdownHandler:function(e){var t=this.model,n=new SelectTime({model:t});n.render(),$("body").append(n.$el),n.updatePosition(this.el),this.listenTo(n,"date",function(e){t.set("value",this.convertValue(e))})},convertValue:function(e){return InfinniUI.DateUtils.toISO8601(e,{timezoneOffset:this.model.get("timeZone")})}},SelectComponent=Backbone.View.extend({modelClass:Backbone.Model,initialize:function(e){var t=this.modelClass;return this.model=new t({today:e.today||new Date,value:e.value,date:e.value||e.today,max:e.max,min:e.min}),this.render(),this},show:function(){this.$el.css("display","block")},hide:function(){this.$el.css("display","none")},setDate:function(e){this.model.setDate(e)}});_.extend(SelectComponent.prototype,bindUIElementsMixin);var SelectComponentModel=Backbone.Model.extend({defaults:function(){var e=new Date;return{today:e,todayMonth:e.getMonth(),todayDay:e.getDate(),todayYear:e.getFullYear(),hour:e.getHours(),minute:e.getMinutes(),second:e.getSeconds(),millisecond:e.getMilliseconds()}},initialize:function(){this.updateDateParts(),this.on("change:date",this.onChangeDateHandler,this)},updateDateParts:function(){var e=this.get("date");e instanceof Date?this.set({year:e.getFullYear(),month:e.getMonth(),day:e.getDate(),hour:e.getHours(),minute:e.getMinutes(),second:e.getSeconds(),millisecond:e.getMilliseconds()}):this.set({year:null,month:null,day:null,hour:null,minute:null,second:null,millisecond:null})},onChangeDateHandler:function(e,t){"undefined"!=typeof t&&null!==t?e.set({year:moment(t).year(),month:moment(t).month(),day:moment(t).date(),hour:moment(t).hour(),minute:moment(t).minute(),second:moment(t).second(),millisecond:moment(t).millisecond()}):e.set({year:null,month:null,day:null,hour:null,minute:null,second:null,millisecond:null})},updateDatePart:function(e,t,n){var i=this.get("date"),o=InfinniUI.DateUtils.createDate(i)||this.get("today"),r=this.toJSON();switch(e){case"hour":case"minute":case"second":o.setHours(r.hour,r.minute,r.second);break;case"year":case"month":case"day":o.setFullYear(r.year,r.month,r.day)}this.set("date",o)},checkRange:function(e,t){var n=this.get("min"),i=this.get("max");return InfinniUI.DateUtils.checkRangeDate(e,n,i,t)},keepDateInRange:function(){if(!this.isValid()){var e=InfinniUI.DateUtils.getNearestDate(this.get("date"),this.get("min"),this.get("max"));this.set("date",e)}},setDate:function(e){if("undefined"==typeof e||null===e){var t=this.get("value"),n=this.get("date");e=t||n}e instanceof Date&&(e=new Date(e.getTime())),this.set("date",e)}}),SelectDaysModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:year",this.updateDatePart.bind(this,"year")),this.on("change:month",this.updateDatePart.bind(this,"month")),this.on("change:day",this.updateDatePart.bind(this,"day"))},today:function(){this.set({year:this.get("todayYear"),month:this.get("todayMonth")})},nextMonth:function(){var e=this.get("month"),t=this.get("year");this.set({month:11===e?0:e+1,year:11===e?t+1:t}),this.keepDateInRange()},prevMonth:function(){var e=this.get("month"),t=this.get("year");this.set({month:0===e?11:e-1,year:0===e?t-1:t}),this.keepDateInRange()}}),SelectDays=SelectComponent.extend({modelClass:SelectDaysModel,template:InfinniUI.Template["controls/dateTimePicker/template/date/days.tpl.html"],UI:{headerDays:".weekdays-head .day",calendarDays:".day-calendar",year:".years-year",month:".years-month"},events:{"click .years":"onYearsClickHandler","click .btn-month-prev":"prevMonth","click .btn-month-next":"nextMonth","click .today-date":"showToday",'click .day-calendar:not(".day-unavailable")':"useDay","click .time":"showTime"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillLegend(),this.fillCalendar(),this.renderMonth(),this.renderYear(),this.initOnChangeHandlers()},initOnChangeHandlers:function(){this.listenTo(this.model,"change:month",this.onChangeMonthHandler),this.listenTo(this.model,"change:year",this.onChangeYearHandler),this.listenTo(this.model,"change:day",this.onChangeDayHandler)},renderMonth:function(){var e=this.model.get("month"),t=localized.dateTimeFormatInfo;this.ui.month.text(t.monthNames[e])},renderYear:function(){var e=this.model.get("year");this.ui.year.text(e)},onChangeMonthHandler:function(e,t){this.renderMonth(),this.fillCalendar()},onChangeYearHandler:function(e,t){this.renderYear(),this.fillCalendar()},fillLegend:function(){function e(e,t){e.toggleClass("day-weekend",0===t||6===t)}var t=localized.dateTimeFormatInfo,n=t.firstDayOfWeek,i=t.abbreviatedDayNames.map(function(e,t){return t});n>0&&(i=i.splice(n).concat(i)),this.ui.headerDays.each(function(n,o){var r=$(o),a=i[n];r.text(t.abbreviatedDayNames[a]),e(r,a)}),this.ui.calendarDays.each(function(t,n){var o=$(n),r=i[t%7];e(o,r)})},fillCalendar:function(){function e(e,t){e.toggleClass("day-inactive",!t)}function t(e,t){var n=t.getMonth()===o.get("todayMonth")&&t.getFullYear()===o.get("todayYear")&&t.getDate()===o.get("todayDay");e.toggleClass("day-today",n)}function n(e,t){var n=!1;r&&(n=moment(r).isSame(t,"day")),e.toggleClass("day-selected",n)}function i(e,t){e.toggleClass("day-unavailable",!o.checkRange(t,"day"))}var o=this.model,r=o.get("value"),a=o.get("month"),l=o.get("year"),s=(o.get("day"),o.get("min"),o.get("max"),new Date(l,a)),u=s.getDay(),d=localized.dateTimeFormatInfo,c=d.firstDayOfWeek,h=[0,1,2,3,4,5,6];Array.prototype.push.apply(h,h.splice(0,c));var p=new Date(l,a,1-h.indexOf(u)),m=p.getFullYear(),f=p.getMonth(),g=p.getDate();this.ui.calendarDays.each(function(o,r){var l=$(r),s=new Date(m,f,g+o);l.text(s.getDate()),l.attr("data-date",s),e(l,s.getMonth()===a),t(l,s),n(l,s),i(l,s)})},onYearsClickHandler:function(e){var t=this.model.get("date");this.trigger("year",t)},prevMonth:function(){this.model.prevMonth()},nextMonth:function(){this.model.nextMonth()},showToday:function(){this.today()},today:function(){this.model.today()},showTime:function(){this.trigger("time",this.model.get("date"))},useDay:function(e){var t=$(e.target),n=new Date(t.attr("data-date"));this.model.set({year:n.getFullYear(),month:n.getMonth(),day:n.getDate()}),this.trigger("date",this.model.get("date"))}}),SelectHoursModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:hour",this.updateDatePart.bind(this,"hour"))}}),SelectHours=SelectComponent.extend({modelClass:SelectHoursModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/hours.tpl.html"],events:{"click .hour:not('.hour-unavailable')":"useHour"},UI:{hour:".hour"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillHoursTable(),this.initOnChangeHandlers()},fillHoursTable:function(){function e(e,t){e.toggleClass("hour-selected",o.getHours()===t)}function t(e,t){var n=moment(r).isSame(t,"hour");e.toggleClass("hour-today",n)}function n(e,t){var n=moment(i.get("date")).hour(t);e.toggleClass("hour-unavailable",!i.checkRange(n,"hour"))}var i=this.model,o=i.get("date")||i.get("today"),r=new Date;this.ui.hour.each(function(i,o){var r=$(o),a=stringUtils.padLeft(i,2,"0");r.attr("data-hour",i),r.text(a),t(r,i),e(r,i),n(r,i)})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:date",this.fillHoursTable)},useHour:function(e){var t=$(e.target),n=this.model,i=n.get("date"),o=parseInt(t.attr("data-hour"),10),r=InfinniUI.DateUtils.cloneDate(i);r.setHours(o),n.set("date",r),this.trigger("hour",r)}}),SelectMinutesModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:minute",this.updateDatePart.bind(this,"minute"))}}),SelectMinutes=SelectComponent.extend({modelClass:SelectMinutesModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/minutes.tpl.html"],events:{"click .minute:not('.minute-unavailable')":"useMinute"},UI:{minute:".minute"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillMinutesTable(),this.initOnChangeHandlers()},fillMinutesTable:function(){function e(e,t){e.toggleClass("minute-selected",t===i)}function t(e,t){var i=moment(n.get("date")).minute(t);e.toggleClass("minute-unavailable",!n.checkRange(i,"minute"))}var n=this.model,i=n.get("minute");this.ui.minute.each(function(n,i){var o=$(i),r=o.attr("data-minute");e(o,parseInt(r,10)),t(o,parseInt(r,10))})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:date",this.fillMinutesTable)},useMinute:function(e){var t=$(e.target),n=this.model,i=n.get("date"),o=parseInt(t.attr("data-minute"),10),r=InfinniUI.DateUtils.cloneDate(i);r.setMinutes(o),this.trigger("minute",r)}}),SelectMonthsModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:month",this.updateDatePart.bind(this,"month")),this.on("change:year",this.updateDatePart.bind(this,"year"))},nextYear:function(){var e=this.get("year");this.set("year",e+1),this.keepDateInRange()},prevYear:function(){var e=this.get("year");this.set("year",e-1),this.keepDateInRange()},today:function(){this.set({month:this.get("todayMonth"),year:this.get("todayYear")})}}),SelectMonths=SelectComponent.extend({modelClass:SelectMonthsModel,template:InfinniUI.Template["controls/dateTimePicker/template/date/months.tpl.html"],events:{"click .btn-year-prev":"prevYear","click .btn-year-next":"nextYear","click .month:not('.month-unavailable')":"useMonth","click .year":"selectYear","click .today-month":"showToday"},UI:{month:".month",year:".year"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillMonthsTable(),this.initOnChangeHandlers()},fillMonthsTable:function(){function e(e,t){var n=moment([i.get("year"),t]),o=i.get("today");e.toggleClass("month-today",moment(n).isSame(o,"month"))}function t(e,t){var n=moment([i.get("year"),t]),o=i.get("value");e.toggleClass("month-selected",moment(n).isSame(o,"month"))}function n(e,t){var n=moment([i.get("year"),t]);e.toggleClass("month-unavailable",!i.checkRange(n,"month"))}this.ui.year.text(this.model.get("year"));var i=this.model,o=localized.dateTimeFormatInfo;i.get("todayMonth"),i.get("month");this.ui.month.each(function(i,r){var a=$(r);a.text(o.abbreviatedMonthNames[i]),a.attr("data-month",i),e(a,i),t(a,i),n(a,i)})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:year",this.fillMonthsTable)},prevYear:function(){this.model.prevYear()},nextYear:function(){this.model.nextYear()},useMonth:function(e){var t=$(e.target),n=this.model;n.set({year:parseInt(n.get("year"),10),month:parseInt(t.attr("data-month"),10)}),this.trigger("month",n.get("date"))},selectYear:function(){var e=this.model;this.trigger("year",e.get("data"))},showToday:function(){this.today()},today:function(){this.model.today()}}),SelectSecondsModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:second",this.updateDatePart.bind(this,"second"))}}),SelectSeconds=SelectComponent.extend({modelClass:SelectSecondsModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/seconds.tpl.html"],events:{"click .second:not('.second-unavailable')":"useSecond"},UI:{second:".second"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillSecondsTable(),this.initOnChangeHandlers()},fillSecondsTable:function(){function e(e,t){e.toggleClass("second-selected",t===i)}function t(e,t){var i=moment(n.get("date")).seconds(t);e.toggleClass("second-unavailable",!n.checkRange(i))}var n=this.model,i=n.get("second");this.ui.second.each(function(n,i){var o=$(i),r=o.attr("data-second");e(o,parseInt(r,10)),t(o,parseInt(r,10))})},initOnChangeHandlers:function(){this.listenTo(this.model,"change:date",this.fillSecondsTable)},useSecond:function(e){var t=$(e.target),n=this.model,i=n.get("date"),o=parseInt(t.attr("data-second"),10),r=InfinniUI.DateUtils.cloneDate(i);r.setSeconds(o),this.trigger("second",r)}}),SelectTimesModel=SelectComponentModel.extend({initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:hour",this.updateDatePart.bind(this,"hour")),this.on("change:minute",this.updateDatePart.bind(this,"minute")),this.on("change:second",this.updateDatePart.bind(this,"second")),this.on("change:millisecond",this.updateDatePart.bind(this,"millisecond"))},nextHour:function(){var e=this.get("hour");e+=1,e>23||(this.set("hour",e),this.keepDateInRange())},prevHour:function(){var e=this.get("hour");e-=1,0>e||(this.set("hour",e),this.keepDateInRange())},nextMinute:function(){var e=this.get("minute");e+=1,e>=60||(this.set("minute",e),this.keepDateInRange())},prevMinute:function(){var e=this.get("minute");e-=1,0>e||(this.set("minute",e),this.keepDateInRange())},nextSecond:function(){var e=this.get("second");e+=1,e>=60||(this.set("second",e),this.keepDateInRange())},prevSecond:function(){var e=this.get("second");e-=1,0>e||(this.set("second",e),this.keepDateInRange())},validate:function(e,t){var n=InfinniUI.DateUtils.cloneDate(e.date);return n.setHours(e.hour,e.minute,e.second,e.millisecond),this.checkRange(n)?void 0:"Out of range"}}),SelectTimes=SelectComponent.extend({modelClass:SelectTimesModel,template:InfinniUI.Template["controls/dateTimePicker/template/time/time.tpl.html"],events:{"click .time-spin-down.time-spin-hour":"prevHour","click .time-spin-up.time-spin-hour":"nextHour","click .time-spin-down.time-spin-minute":"prevMinute","click .time-spin-up.time-spin-minute":"nextMinute","click .time-spin-down.time-spin-second":"prevSecond","click .time-spin-up.time-spin-second":"nextSecond","click .time-segment-hour":"selectHour","click .time-segment-minute":"selectMinute","click .time-segment-second":"selectSecond","click .days":"selectDay"},UI:{month:".month",year:".year",hour:".time-segment-hour",minute:".time-segment-minute",second:".time-segment-second"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.updateHour(),this.updateMinute(),this.updateSecond(),this.initOnChangeHandlers()},selectHour:function(){var e=this.model,t=e.get("date"),n=e.get("hour"),i=e.get("minute"),o=e.get("second");t.setHours(n,i,o),this.trigger("hour",t)},selectMinute:function(){var e=this.model,t=e.get("date"),n=e.get("hour"),i=e.get("minute"),o=e.get("second");t.setHours(n,i,o),this.trigger("minute",t)},selectSecond:function(){var e=this.model,t=e.get("date"),n=e.get("hour"),i=e.get("minute"),o=e.get("second");t.setHours(n,i,o),this.trigger("second",t)},initOnChangeHandlers:function(){this.listenTo(this.model,"change:hour",this.updateHour),this.listenTo(this.model,"change:minute",this.updateMinute),this.listenTo(this.model,"change:second",this.updateSecond),this.listenTo(this.model,"change:date",this.useTime)},updateHour:function(){var e=this.model.get("hour");this.ui.hour.text(stringUtils.padLeft(e,2,"0"))},updateMinute:function(){var e=this.model.get("minute");this.ui.minute.text(stringUtils.padLeft(e,2,"0"))},updateSecond:function(){var e=this.model.get("second");this.ui.second.text(stringUtils.padLeft(e,2,"0"))},prevHour:function(){this.model.prevHour()},nextHour:function(){this.model.nextHour()},prevMinute:function(){this.model.prevMinute()},nextMinute:function(){this.model.nextMinute()},prevSecond:function(){this.model.prevSecond()},nextSecond:function(){this.model.nextSecond()},useTime:function(){var e=this.model.get("date");this.trigger("date",e)},selectDay:function(){var e=this.model.get("date");this.trigger("day",e)}}),SelectYearsModel=SelectComponentModel.extend({defaults:function(){var e=SelectComponentModel.prototype.defaults.call(this);return _.defaults({pageSize:20,page:0},e)},initialize:function(){SelectComponentModel.prototype.initialize.call(this),this.on("change:year",this.updateDatePart.bind(this,"year")),this.on("change:year",this.onChangeYearHandler)},prevPage:function(){var e=this.get("page");this.set("page",e-1)},nextPage:function(){var e=this.get("page");this.set("page",e+1)},resetPage:function(){this.set("page",0)},onChangeYearHandler:function(e,t){this.keepDateInRange(),e.set("page",0)}}),SelectYears=SelectComponent.extend({modelClass:SelectYearsModel,template:InfinniUI.Template["controls/dateTimePicker/template/date/years.tpl.html"],events:{"click .btn-year-prev":"prevPage","click .btn-year-next":"nextPage","click .today-year":"showTodayYear",'click .year:not(".year-unavailable")':"useYear"},UI:{years:".year",yearBegin:".year-begin",yearEnd:".year-end"},initOnChangeHandlers:function(){this.listenTo(this.model,"change:page",this.fillYearsTable),this.listenTo(this.model,"change:year",this.fillYearsTable)},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.fillYearsTable(),this.initOnChangeHandlers()},fillYearsTable:function(){function e(e,t){e.toggleClass("year-today",t===l)}function t(e,t){e.toggleClass("year-selected",t===a)}function n(e,t){var n=moment([t]);e.toggleClass("year-unavailable",!i.checkRange(n,"year"))}var i=this.model,o=i.get("page"),r=i.get("pageSize"),a=i.get("year"),l=i.get("todayYear"),s=Math.ceil(a-r/2)+o*r;this.ui.years.each(function(i,o){var r=$(o),a=s+i;r.text(a),r.attr("data-year",a),e(r,a),t(r,a),n(r,a)}),this.ui.yearBegin.text(s),this.ui.yearEnd.text(s+r-1)},prevPage:function(){this.model.prevPage()},nextPage:function(){this.model.nextPage()},showTodayYear:function(){this.today()},today:function(){this.model.resetPage()},useYear:function(e){var t=$(e.target),n=this.model;n.set({year:parseInt(t.attr("data-year"),10)}),this.trigger("year",n.get("date"))}});window.InfinniUI.DateTimePickerControl=DateTimePickerControl,_.inherit(DateTimePickerControl,TextEditorBaseControl),_.extend(DateTimePickerControl.prototype,{createControlModel:function(){return new DateTimePickerModel},createControlView:function(e){return new DateTimePickerView({model:e})}});var DateTimePickerModel=TextEditorBaseModel.extend({defaults:_.extend({},TextEditorBaseModel.prototype.defaults,{mode:"Date"}),initialize:function(){TextEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.set("today",new Date),this.set("timeZone",InfinniUI.DateUtils.getDefaultTimeZone())},validate:function(e,t){e.minValue,e.maxValue;return InfinniUI.DateUtils.checkRangeDate(e.value,e.minValue,e.maxValue)}}),dateTimePickerStrategy=function(){return{Date:dateTimePickerModeDate,DateTime:dateTimePickerModeDateTime,Time:dateTimePickerModeTime}}(),DateTimePickerView=TextEditorBaseView.extend({className:"pl-datepicker form-group",template:InfinniUI.Template["controls/dateTimePicker/template/date.tpl.html"],UI:_.extend({},TextEditorBaseView.prototype.UI,{dropdownButton:".pl-datepicker-calendar",controlWrap:".control-wrap",editorWrap:".editor-wrap"}),events:_.extend({},TextEditorBaseView.prototype.events,{"click .pl-datepicker-calendar":"onClickDropdownHandler"}),initialize:function(){TextEditorBaseView.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.updateMode(),this.listenTo(this.model,"change:mode",this.updateMode)},initHandlersForProperties:function(){TextEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:minValue",this.updateMinValue),this.listenTo(this.model,"change:maxValue",this.updateMaxValue)},updateProperties:function(){TextEditorBaseView.prototype.updateProperties.call(this)},updateMode:function(){var e=this.model.get("mode");_.extend(this,dateTimePickerStrategy[e]),this.rerender()},updateMinValue:function(){var e=this.model.get("mode");_.extend(this,dateTimePickerStrategy[e]),this.rerender()},updateMaxValue:function(){var e=this.model.get("mode");_.extend(this,dateTimePickerStrategy[e]),this.rerender()},updateEnabled:function(){TextEditorBaseView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.dropdownButton.prop("disabled",!e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.updateProperties(),this.renderDateTimePickerEditor(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=this.model;return _.extend({},TextEditorBaseView.prototype.getData.call(this),{minValue:e.get("minValue"),maxValue:e.get("maxValue"),mode:e.get("mode")})},renderDateTimePickerEditor:function(){this.model;return this.renderControlEditor(),this},getTemplate:function(){throw new Error("Не перекрыт getTemplate")},onClickDropdownHandler:function(e){}}),SelectDate=Backbone.View.extend({className:"pl-datepicker-dropdown pl-dropdown-container",template:InfinniUI.Template["controls/dateTimePicker/template/select.date.tpl.html"],UI:{days:".days",months:".months",years:".years"},events:{"click .backdrop":"onClickBackdropHandler","click .datepicker-clear":"onClickClearValueHandler","click .today-date":"onClickTodayHandler"},render:function(){var e=this.template();this.$el.html(e),this.bindUIElements(),this.renderComponents()},renderComponents:function(){var e=this.model,t=InfinniUI.DateUtils.createDate(e.get("value")),n=InfinniUI.DateUtils.createDate(e.get("today")),i=e.get("timeZone"),o=moment(t);t=o.isValid()?o.toDate():null,t=InfinniUI.DateUtils.changeTimezoneOffset(t,i);var r={value:t,today:n||new Date,max:e.get("maxValue"),min:e.get("minValue")};r.el=this.ui.months;var a=new SelectMonths(r);r.el=this.ui.years;var l=new SelectYears(r);r.el=this.ui.days;var s=new SelectDays(r);this.months=a,this.years=l,this.days=s,this.workflow(s,a,l,t)(t)},onClickBackdropHandler:function(e){this.remove()},onClickClearValueHandler:function(){this.clearValue()},clearValue:function(){this.useValue(null)},useValue:function(e){var t=this.model,n=t.get("timeZone"),i=t.get("minValue"),o=t.get("maxValue");InfinniUI.DateUtils.checkRangeDate(e,i,o)||(e=InfinniUI.DateUtils.getNearestDate(e,i,o)),this.trigger("date",InfinniUI.DateUtils.restoreTimezoneOffset(e,n)),this.remove()},workflow:function(e,t,n){function i(i){e.setDate(i),n.hide(),t.hide(),e.show()}function o(i){t.setDate(i),e.hide(),n.hide(),t.show()}function r(i){n.setDate(i),e.hide(),t.hide(),n.show()}return this.listenTo(e,"date",this.useValue).listenTo(e,"year",function(e){r(e)}).listenTo(n,"year",function(e){o(e)}).listenTo(t,"year",function(e){r(e)}).listenTo(t,"month",function(e){i(e)}),i},onClickTodayHandler:function(){this.useValue(new Date)},updatePosition:function(e){var t=this.getDropdownDirection(e);this.setPositionFor(e,t)},setPositionFor:function(e,t){clearInterval(this._intervalId),this.applyStyle(e,t),this._intervalId=setInterval(this.applyStyle.bind(this,e,t),100)},remove:function(){return clearInterval(this._intervalId),Backbone.View.prototype.remove.apply(this,arguments)},getDropdownDirection:function(e){var t=$(window).height(),n=e.getBoundingClientRect(),i=this.$el.height(),o="bottom";return n.bottom+i+30>t&&n.bottom>t/2&&n.top>i&&(o="top"),o},applyStyle:function(e,t){var n=e.getBoundingClientRect(),i=this.el.getBoundingClientRect(),o={position:"absolute",left:window.pageXOffset+n.right-Math.round(i.width)};"bottom"===t?o.top=window.pageYOffset+n.bottom:o.top=window.pageYOffset+n.top-this.$el.height(),this.$el.css(o)}});_.extend(SelectDate.prototype,bindUIElementsMixin);var SelectDateTime=SelectDate.extend({className:"pl-datepicker-dropdown pl-dropdown-container",template:InfinniUI.Template["controls/dateTimePicker/template/select.dateTime.tpl.html"],UI:{days:".days",months:".months",years:".years",times:".times",hours:".hours",minutes:".minutes"},onClickToggleDateHandler:function(){this.trigger("days")},onClickToggleTimeHandler:function(){this.trigger("time")},renderComponents:function(){var e=this.model,t=InfinniUI.DateUtils.createDate(e.get("value")),n=InfinniUI.DateUtils.createDate(e.get("today")),i=e.get("timeZone"),o=moment(t);t=o.isValid()?o.toDate():null,t=InfinniUI.DateUtils.changeTimezoneOffset(t,i);var r={value:t,today:n||new Date,max:e.get("maxValue"),min:e.get("minValue")};r.el=this.ui.months;var a=new SelectMonths(r);r.el=this.ui.years;var l=new SelectYears(r);r.el=this.ui.days;var s=new SelectDays(r);r.el=this.ui.times;var u=new SelectTimes(r);r.el=this.ui.hours;var d=new SelectHours(r);r.el=this.ui.minutes;var c=new SelectMinutes(r);this.workflow(s,a,l,u,d,c)(t)},useTime:function(e){var t=this.model,n=t.get("timeZone"),i=t.get("minValue"),o=t.get("maxValue");return InfinniUI.DateUtils.checkRangeDate(e,i,o)||(e=InfinniUI.DateUtils.getNearestDate(e,i,o)),this.trigger("date",InfinniUI.DateUtils.restoreTimezoneOffset(e,n)),e},workflow:function(e,t,n,i,o,r){function a(e){m.forEach(function(t){t!==e&&t.hide()}),e.show()}function l(t){e.setDate(t),a(e)}function s(e){t.setDate(e),a(t)}function u(e){n.setDate(e),a(n)}function d(e){o.setDate(e),a(o)}function c(e){r.setDate(e),a(r)}function h(e){i.setDate(e),a(i)}var p=this.useTime.bind(this),m=Array.prototype.slice.call(arguments);return this.listenTo(e,"date",this.useValue).listenTo(e,"year",function(e){u(e)}).listenTo(e,"time",function(e){h(e)}).listenTo(n,"year",function(e){s(e)}).listenTo(t,"year",function(e){u(e)}).listenTo(t,"month",function(e){l(e)}),this.listenTo(i,"hour",function(e){d(e)}).listenTo(i,"minute",function(e){c(e)}).listenTo(i,"day",function(e){l(e)}).listenTo(i,"date",function(e){p(e)}).listenTo(o,"hour",function(e){var t=p(e);h(t)}).listenTo(r,"minute",function(e){var t=p(e);h(t)}),this.on("days",function(e){l(e)}).on("time",function(e){h(e)}),l}}),SelectTime=SelectDate.extend({className:"pl-timepicker-dropdown pl-dropdown-container",template:InfinniUI.Template["controls/dateTimePicker/template/select.time.tpl.html"],UI:{times:".times",hours:".hours",minutes:".minutes",seconds:".seconds"},renderComponents:function(){var e=this.model,t=InfinniUI.DateUtils.createDate(e.get("value")),n=InfinniUI.DateUtils.createDate(e.get("today")),i=e.get("timeZone"),o=moment(t);t=o.isValid()?o.toDate():null,t=InfinniUI.DateUtils.changeTimezoneOffset(t,i);var r={value:t,today:n,max:e.get("maxValue"),min:e.get("minValue")};r.el=this.ui.times;var a=new SelectTimes(r);r.el=this.ui.hours;var l=new SelectHours(r);r.el=this.ui.minutes;var s=new SelectMinutes(r);r.el=this.ui.seconds;var u=new SelectSeconds(r);this.workflow(a,l,s,u)(t)},useTime:function(e){var t=this.model,n=t.get("timeZone"),i=t.get("minValue"),o=t.get("maxValue");return InfinniUI.DateUtils.checkRangeDate(e,i,o)||(e=InfinniUI.DateUtils.getNearestDate(e,i,o)),this.trigger("date",InfinniUI.DateUtils.restoreTimezoneOffset(e,n)),e},workflow:function(e,t,n,i){function o(e){d.forEach(function(t){t!==e&&t.hide()}),e.show()}function r(e){t.setDate(e),o(t)}function a(e){n.setDate(e),o(n)}function l(e){i.setDate(e),o(i)}function s(t){e.setDate(t),o(e)}var u=this.useTime.bind(this),d=Array.prototype.slice.call(arguments);return this.listenTo(e,"hour",function(e){r(e)}).listenTo(e,"minute",function(e){a(e)}).listenTo(e,"second",function(e){l(e)}).listenTo(e,"date",function(e){u(e)}).listenTo(t,"hour",function(e){var t=u(e);s(t)}).listenTo(n,"minute",function(e){var t=u(e);s(t)}).listenTo(i,"second",function(e){var t=u(e);s(t)}),s}});_.inherit(DatePickerControl,DateTimePickerControl),_.extend(DatePickerControl.prototype,{createControlModel:function(){return new DatePickerModel},createControlView:function(e){return new DatePickerView({model:e})}});var DatePickerModel=DateTimePickerModel.extend({initialize:function(){DateTimePickerModel.prototype.initialize.apply(this,arguments)}}),DatePickerView=DateTimePickerView.extend({});console.assert(dateTimePickerModeDate,"dateTimePickerModeDate is undefined");var dateTimePickerModeDatePicker=_.extend({},dateTimePickerModeDate,{convertValue:function(e){var t=null;return e&&e.constructor===Date&&(t=InfinniUI.DateUtils.dateToTimestamp(e)),t}});dateTimePickerStrategy.DatePicker=dateTimePickerModeDatePicker,console.assert(dateTimePickerModeTime,"dateTimePickerModeTime is undefined"); +var dateTimePickerModeTimePicker=_.extend({},dateTimePickerModeTime,{convertValue:function(e){var t=null;return e&&e.constructor===Date&&(t=InfinniUI.DateUtils.dateToTimestampTime(e)),t}});dateTimePickerStrategy.TimePicker=dateTimePickerModeTimePicker,_.inherit(TimePickerControl,DateTimePickerControl),_.extend(TimePickerControl.prototype,{createControlModel:function(){return new TimePickerModel},createControlView:function(e){return new TimePickerView({model:e})}});var TimePickerModel=DateTimePickerModel.extend({initialize:function(){DateTimePickerModel.prototype.initialize.apply(this,arguments);var e=new Date;e.setFullYear(1970,0,1),this.set("today",e)}}),TimePickerView=DateTimePickerView.extend({className:"pl-datepicker pl-timepicker form-group"}),StatusBarControl=function(){_.superClass(StatusBarControl,this)};_.inherit(StatusBarControl,Control),_.extend(StatusBarControl.prototype,{createControlModel:function(){return new StatusBarModel},createControlView:function(e){return new StatusBarView({model:e})}});var StatusBarModel=ControlModel.extend({defaults:_.defaults({},ControlModel.prototype.defaults,{time:"",date:"",result:null})}),StatusBarView=ControlView.extend({className:"pl-status-bar",events:{"click .signIn":"signInHandler","click .signOut":"signOutHandler","click .status-bar-menu":"openMenuHandler"},template:InfinniUI.Template["controls/application/statusBar/template.tpl.html"],loginTemplate:InfinniUI.Template["controls/application/statusBar/authentication/loginTemplate.tpl.html"],enterTemplate:InfinniUI.Template["controls/application/statusBar/authentication/enterTemplate.tpl.html"],successTemplate:InfinniUI.Template["controls/application/statusBar/authentication/successTemplate.tpl.html"],initialize:function(){var e=this;e.model.set("time",moment().format("HH:mm")),e.model.set("date",moment().format("D MMMM")),window.setInterval(function(){e.model.set("time",moment().format("HH:mm")),e.model.set("date",moment().format("D MMMM")),e.dateRender()},1e4),getUserInfo(this),this.listenTo(this.model,"change:result",this.render)},dateRender:function(){this.$el.find(".time").text(this.model.get("time")),this.$el.find(".date").text(this.model.get("date"))},signInHandler:function(){var e=this;this.$modal||(this.$modal=$(this.loginTemplate({})),this.$modal.appendTo("body")),this.$modal.modal("show"),this.$modal.on("hidden.bs.modal",function(){$(this).find("#password, #userName").val(""),$(this).find("#remember").attr("checked",!1)}),this.$modal.find(".post").on("click",function(){signInInternal(e)})},openMenuHandler:function(){var e=$(".app-area").find(".pl-menu"),t=e.closest(".app-area");e.length&&t.length&&($(t).is(":visible")?t.css({display:"none"}):t.css({position:"absolute",width:"100%",display:"block",overflow:"hidden"}))},signOutHandler:function(){signOut(this)},render:function(){var e,t=this.model.get("result"),n=InfinniUI.config.configName,i=$(this.template({header:n})),o=this;return window.adjustLoginResult(t).then(function(n){e=t?$(o.successTemplate({displayName:n.UserName,activeRole:n.ActiveRole,roles:_.pluck(t.Roles,"DisplayName").join(", ")})):$(o.enterTemplate({})),i.find(".page-header-inner").prepend(e),o.$el.empty().append(i)}),this.$el.find(".calendar").datepicker({todayHighlight:!0,language:"ru"}),this.$el.find(".dropdown-toggle").on("click.bs.dropdown",function(){var e=$(this).data("clicks");e?$(this).parent(".dropdown").off("hide.bs.dropdown"):$(this).parent(".dropdown").on("hide.bs.dropdown",function(){return!1}),$(this).data("clicks",!e)}),this}});_.extend(AuthenticationProvider.prototype,{handlers:{onActiveRoleChanged:$.Callbacks(),onSignInInternal:$.Callbacks(),onSignOut:$.Callbacks()},getCurrentUser:function(e,t){this.sendPostRequestForServiceResult("/Auth/GetCurrentUser",{},e,t)},changePassword:function(e,t,n,i){var o={OldPassword:e,NewPassword:t};this.sendPostRequestForServiceResult("/Auth/ChangePassword",o,n,i)},changeProfile:function(e,t,n,i){var o={DisplayName:e,Description:t};this.sendPostRequestForServiceResult("/Auth/ChangeProfile",o,n,i)},changeActiveRole:function(e,t,n){var i={ActiveRole:e};this.sendPostRequestForServiceResult("/Auth/ChangeActiveRole",i,function(){var n=_.toArray(arguments);n.push(e),t&&t.apply(this,n),this.handlers.onActiveRoleChanged.fire.apply(this.handlers.onActiveRoleChanged,n)},n)},signInInternal:function(e,t,n,i,o){var r={UserName:e,Password:t,Remember:n};this.sendPostRequestForServiceResult("/Auth/SignInInternal",r,i,o)},getSignInExternalForm:function(e,t,n,i){this.getExternalLoginForm("/Auth/SignInExternal",e,t,n,i)},getLinkExternalLoginForm:function(e,t,n,i){this.getExternalLoginForm("/Auth/LinkExternalLogin",e,t,n,i)},unlinkExternalLogin:function(e,t,n,i){var o={Provider:e,ProviderKey:t};this.sendPostRequest("/Auth/UnlinkExternalLogin",o,n,i)},signOut:function(e,t){this.sendPostRequestForServiceResult("/Auth/SignOut",null,function(){InfinniUI.user.onReadyDeferred=$.Deferred(),InfinniUI.user.onReadyDeferred.resolve(null);var t=_.toArray(arguments);e&&e.apply(this,t),this.handlers.onSignOut.fire.apply(this.handlers.onSignOut,t)}.bind(this),t)},getExternalLoginForm:function(e,t,n,i,o){var r=this.baseAddress+e;this.sendPostRequest("/Auth/GetExternalProviders",{},function(e){var o=$(document.createElement("form"));o.attr("method","POST"),o.attr("action",r);var a=$(document.createElement("input"));a.attr("type","hidden"),a.attr("name","SuccessUrl"),a.attr("value",t),o.append(a);var l=$(document.createElement("input"));if(l.attr("type","hidden"),l.attr("name","FailureUrl"),l.attr("value",n),o.append(l),null!==e&&void 0!==e)for(var s=0;s0},function(){"Right"==t?e.addClass("pull-right"):e.removeClass("pull-right")})}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.Button.menuItem",MenuItemButtonView),_.inherit(ButtonEditControl,TextBoxControl),_.extend(ButtonEditControl.prototype,{createControlModel:function(){return new ButtonEditModel},createControlView:function(e){return new ButtonEditView({model:e})},onButtonClick:function(e){this.controlView.on("buttonClick",e)}});var ButtonEditModel=TextBoxModel.extend({defaults:_.defaults({showClear:!0,readOnly:!0},TextBoxModel.prototype.defaults),initialize:function(){TextBoxModel.prototype.initialize.apply(this,arguments)},clearValue:function(){var e=this.get("enabled");e&&this.set("value",null)}}),ButtonEditView=TextBoxView.extend({template:{oneline:InfinniUI.Template["controls/buttonEdit/template/textBoxInput.tpl.html"],multiline:InfinniUI.Template["controls/buttonEdit/template/textBoxArea.tpl.html"]},className:"pl-button-edit form-group",UI:_.extend({},TextBoxView.prototype.UI,{iconAction:".pl-button-edit-button__icon_action",buttonClear:".pl-button-edit-button_clear",buttons:".pl-button-edit-button"}),events:_.extend({},TextBoxView.prototype.events,{"click .pl-button-edit-button_action":"onClickButtonHandler","click .pl-button-edit-button_clear":"onClickClearHandler"}),initHandlersForProperties:function(){TextBoxView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:icon",this.updateIcon),this.listenTo(this.model,"change:showClear",this.updateShowClear),this.listenTo(this.model,"change:readOnly",this.updateReadOnly)},updateProperties:function(){TextBoxView.prototype.updateProperties.call(this),this.updateIcon(),this.updateShowClear(),this.updateReadOnly()},updateIcon:function(){var e=this.model.get("icon");this.switchClass("fa",e,this.ui.iconAction)},updateShowClear:function(){var e=this.model.get("showClear"),t=this.model.get("value");this.ui.buttonClear.toggleClass("hidden",!e||_.isEmpty(t))},updateReadOnly:function(){var e=this.model.get("readOnly");this.ui.control.prop("readonly",e)},updateEnabled:function(){var e=this.model.get("enabled");TextBoxView.prototype.updateEnabled.call(this),this.ui.buttons.toggleClass("pl-button-edit-button_disabled",!e)},updateValue:function(){TextBoxView.prototype.updateValue.call(this),this.updateShowClear()},onClickButtonHandler:function(e){var t=this.model.get("enabled");t&&this.trigger("buttonClick",e)},onClickClearHandler:function(e){this.model.clearValue()}}),ComboBoxDropdownView=Backbone.View.extend({className:"pl-dropdown-container",events:{"click .backdrop":"onClickBackdropHandler","keyup .pl-combobox-filter-text":"onKeyUpHandler","keydown .pl-combobox-filter-text":"onFilterKeyDownHandler"},UI:{items:".pl-combobox-items",filter:".pl-combobox-filter",text:".pl-combobox-filter-text",noItems:".pl-combobox-items-empty",search:".pl-combobox-items-empty > span"},initialize:function(){var e=null!=this.model.get("groupValueSelector");e?this.strategy=new ComboBoxGroupViewStrategy(this):this.strategy=new ComboBoxPlainViewStrategy(this),this.listenTo(this.model,"change:dropdown",this.onChangeDropdownHandler),this.listenTo(this.model,"change:autocompleteValue",this.onChangeSearchHandler),this.listenTo(this.model,"change:autocomplete",this.updateAutocomplete),this.listenTo(this.model,"change:selectedItem",this.onChangeSelectedItem),this.listenTo(this.strategy,"click",this.onClickItemHandler),this.listenTo(this.strategy,"mouseenter",this.onMouseEnterItemHandler),this.model.onValueChanged(this.onChangeValueHandler.bind(this));var t=this.model.get("items"),n=this;t.onChange(function(){n.renderItems()})},updateProperties:function(){this.updateAutocomplete()},render:function(){var e=this.strategy.getTemplate();return this.$el.html(e({multiSelect:this.model.get("multiSelect")})),this.bindUIElements(),this.updateProperties(),this.renderItems(),this.$el},renderItems:function(){this.$el.hide();var e=this.strategy.renderItems();this.$items=e;var t=this.model.get("items"),n=t&&0==t.length;this.ui.noItems.toggleClass("hidden",!n),this.markSelectedItems(),this.markCheckedItems(),this.trigger("itemsRendered2"),this.$el.show()},setItemsContent:function(e){var t=this.ui.items;t.empty(),t.append(e)},close:function(){this.model.set("dropdown",!1)},setSearchFocus:function(){this.ui.text.focus()},onClickBackdropHandler:function(){this.close()},onChangeValueHandler:function(){this.markCheckedItems()},markSelectedItems:function(){var e=this.model;if(Array.isArray(this.$items)){var t=(this.ui.items,this.$items),n=e.getSelectedItem();t.forEach(function(e){var t=n===e.data("pl-data-item");e.toggleClass("pl-combobox-selected",t)}),this.ensureVisibleSelectedItem()}},ensureVisibleSelectedItem:function(){function e(e,t){var n,i=e.scrollTop(),o=t.position().top,r=t.outerHeight(),a=e.innerHeight();o+r>a?n=i+o+r-a:0>o&&(n=i+o),"undefined"!=typeof n&&e.scrollTop(n)}var t=this.model;if(Array.isArray(this.$items)){var n=this.ui.items,i=this.$items,o=t.getSelectedItem();i.some(function(t){var i=o===t.data("pl-data-item");return i&&e(n,t),i})}},markCheckedItems:function(){var e=this.model,t=e.getValue();if(Array.isArray(this.$items)){var n=this.$items,i=!!e.get("multiSelect"),o=[];o=i&&Array.isArray(t)?t.map(function(t){return e.itemByValue(t)}):[e.itemByValue(t)],n.forEach(function(e){var t=-1!==o.indexOf(e.data("pl-data-item"));e.toggleClass("pl-combobox-checked",t)})}},onChangeDropdownHandler:function(e,t){t||this.remove()},updateAutocomplete:function(){var e=this.model.get("autocomplete");this.ui.filter.toggleClass("hidden",!e)},onMouseEnterItemHandler:function(e){this.model.setSelectedItem(e)},onClickItemHandler:function(e){var t=!this.model.isDisabledItem(e);t&&(this.model.toggleItem(e),this.close())},onKeyUpHandler:function(e){var t=this.ui.text.val();this.trigger("search",t)},onKeyDownHandler:function(e){this.model;e.preventDefault(),this.onFilterKeyDownHandler(e)},onFilterKeyDownHandler:function(e){var t=this.model;switch(e.which){case 36:t.selectFirstItem();break;case 35:t.selectLastItem();break;case 38:t.selectPrevItem();break;case 40:t.selectNextItem();break;case 13:this.onClickItemHandler(t.getSelectedItem());break;case 9:this.close();break;case 27:this.close(),e.stopPropagation()}},onChangeSearchHandler:function(e,t){this.ui.search.text(t)},onChangeSelectedItem:function(e,t){this.markSelectedItems()},updatePosition:function(e){var t=this.getDropdownDirection(e);this.setPositionFor(e,t)},setPositionFor:function(e,t){clearInterval(this._intervalId),this.applyStyle(e,t),this._intervalId=setInterval(this.applyStyle.bind(this,e,t),100)},remove:function(){return clearInterval(this._intervalId),Backbone.View.prototype.remove.apply(this,arguments)},getDropdownDirection:function(e){var t=$(window).height(),n=e.getBoundingClientRect(),i=this.$el.height(),o="bottom";return n.bottom+i+30>t&&n.bottom>t/2&&(o="top"),o},applyStyle:function(e,t){var n=e.getBoundingClientRect(),i={left:window.pageXOffset+n.left,width:Math.round(n.width)-1};"bottom"===t?i.top=window.pageYOffset+n.bottom:i.top=window.pageYOffset+n.top-this.$el.height(),this.$el.css(i)}});_.extend(ComboBoxDropdownView.prototype,bindUIElementsMixin),ComboBoxBaseViewStrategy.prototype.getModelAttribute=function(e){var t=this.dropdownView.model;return t.get(e)},ComboBoxBaseViewStrategy.prototype.isEnabledItem=function(e){return!this.dropdownView.model.isDisabledItem(e)},ComboBoxBaseViewStrategy.prototype.renderItems=function(){throw new Error("Method renderItems not implemented")},ComboBoxBaseViewStrategy.prototype.getTemplate=function(){},ComboBoxBaseViewStrategy.prototype._renderItems=function(e){var t,n=this.getModelAttribute("items"),i=this.getModelAttribute("itemTemplate");return t=e.map(function(e){var t=i(void 0,{value:e,index:n.indexOf(e)}),o=t.render();return"undefined"!=typeof e&&o.data("pl-data-item",e),this.addOnClickEventListener(o,e),this.addOnHoverEventListener(o,e),t.setEnabled(this.isEnabledItem(e)),o},this)},ComboBoxBaseViewStrategy.prototype.addOnClickEventListener=function(e){var t=e[0],n=Array.prototype.slice.call(arguments,1),i=this.trigger.bind(this,"click");t.addEventListener("click",function(){i.apply(this,n)})},ComboBoxBaseViewStrategy.prototype.addOnHoverEventListener=function(e){var t=(e[0],Array.prototype.slice.call(arguments,1)),n=this.trigger.bind(this,"mouseenter");e.on("mouseenter",function(){n.apply(this,t)})},_.extend(ComboBoxBaseViewStrategy.prototype,Backbone.Events),ComboBoxGroupViewStrategy.prototype=Object.create(ComboBoxBaseViewStrategy.prototype),ComboBoxGroupViewStrategy.prototype.constructor=ComboBoxGroupViewStrategy,ComboBoxGroupViewStrategy.prototype.template=InfinniUI.Template["controls/comboBox/dropdown/template/group/template.tpl.html"],ComboBoxGroupViewStrategy.prototype.renderItems=function(){var e,t=this.getModelAttribute("items"),n=this.getModelAttribute("groupValueSelector"),i={};return t.forEach(function(e,t){var o=n(void 0,{value:e,index:t});o in i||(i[o]=[]),i[o].push(e)}),e=this.renderGroups(i)},ComboBoxGroupViewStrategy.prototype.renderGroups=function(e){var t,n=this.getModelAttribute("groupItemTemplate"),i=this.getModelAttribute("items"),o=[],r=[];for(var a in e){var l=e[a],s=n(void 0,{index:i.indexOf(l[0]),item:l[0]}),t=this._renderItems(l),u=new ComboBoxGroupView({header:s.render(),items:t});Array.prototype.push.apply(o,t),r.push(u.render())}return this.dropdownView.setItemsContent(r),o},ComboBoxGroupViewStrategy.prototype.getTemplate=function(){return this.template},ComboBoxPlainViewStrategy.prototype=Object.create(ComboBoxBaseViewStrategy.prototype),ComboBoxPlainViewStrategy.prototype.constructor=ComboBoxPlainViewStrategy,ComboBoxPlainViewStrategy.prototype.renderItems=function(){var e=[],t=this.getModelAttribute("items");return t&&(e=this._renderItems(t.toArray())),this.dropdownView.setItemsContent(e),e},ComboBoxPlainViewStrategy.prototype.template=InfinniUI.Template["controls/comboBox/dropdown/template/plain/template.tpl.html"],ComboBoxPlainViewStrategy.prototype.getTemplate=function(){return this.template};var ComboBoxGroupView=Backbone.View.extend({template:InfinniUI.Template["controls/comboBox/dropdown/group/template/template.tpl.html"],UI:{header:".pl-combobox-group__header",items:".pl-combobox-group__items"},initialize:function(e){this.options={header:e.header,items:e.items}},render:function(){var e=this.options;return this.$el.html(this.template()),this.bindUIElements(),this.ui.header.append(e.header),this.ui.items.append(e.items),this.$el}});_.extend(ComboBoxGroupView.prototype,bindUIElementsMixin);var ComboBoxValueModel=Backbone.Model.extend({}),ComboBoxValue=Backbone.View.extend({template:InfinniUI.Template["controls/comboBox/values/template/value.tpl.html"],tagName:"li",className:"pl-combobox-value",events:{"click .pl-combobox-value-remove":"onClickRemoveHandler"},UI:{item:".pl-combobox-value-item"},initialize:function(e){this.model=new ComboBoxValueModel(e)},render:function(){this.$el.html(this.template()),this.bindUIElements();var e=this.model.get("$value");return this.ui.item.append(e),this.$el},onClickRemoveHandler:function(){var e=this.model.get("value");this.trigger("remove",e)}});_.extend(ComboBoxValue.prototype,bindUIElementsMixin);var ComboBoxValuesModel=Backbone.Model.extend({defaults:{enabled:!0},initialize:function(){this.items=[]}}),ComboBoxValues=Backbone.View.extend({tagName:"ul",className:"pl-combobox-values",template:InfinniUI.Template["controls/comboBox/values/template/values.tpl.html"],events:{"keypress .pl-combobox-search-text":"onKeyPressHandler","keydown .pl-combobox-search-text":"onKeyDownHandler","keyup .pl-combobox-search-text":"onKeyUpHandler",click:"onClickHandler"},UI:{search:".pl-combobox-search",text:".pl-combobox-search-text"},initialize:function(e){this.model=new ComboBoxValuesModel(e)},render:function(){this.$el.empty(),this.$el.html(this.template()),this.bindUIElements();var e=this.model,t=e.get("items").map(function(e){var t=new ComboBoxValue({$value:e.$value,value:e.value});return this.listenTo(t,"remove",this.onRemoveValueHandler),t.render()},this);return this.ui.search.before(t),this.$el},KeyCode:{enter:13,backspace:8,left:37,right:39,home:36,end:35,tab:9},setFocus:function(){this.ui.text.focus()},onKeyPressHandler:function(e){var t=e.which;t===this.KeyCode.enter,console.log("onKeyPressHandler",e.which,this.ui.text.val())},onKeyDownHandler:function(e){var t=e.which;t===this.KeyCode.left,console.log("onKeyDownHandler",e.which,this.ui.text.val())},onKeyUpHandler:function(e){var t=this.ui.text.val();this.trigger("search",t)},onRemoveValueHandler:function(e){this.trigger("remove",e)},onClickHandler:function(e){this.setFocus()}});_.extend(ComboBoxValues.prototype,bindUIElementsMixin),_.inherit(DataGridControl,ListEditorBaseControl),_.extend(DataGridControl.prototype,{createControlModel:function(){return new DataGridModel},createControlView:function(e){return new DataGridView({model:e})},onCheckAllChanged:function(e){this.controlModel.onCheckAllChanged(e)},setEnabled:function(e){this.controlModel.set("enabled",e)},onRowClick:function(e){this.controlView.$el.on("click","tbody .pl-datagrid-row",e)},onRowDoubleClick:function(e){this.controlView.$el.on("dblclick","tbody .pl-datagrid-row",e)}});var DataGridModel=ListEditorBaseModel.extend({defaults:_.defaults({showSelectors:!0,checkAllVisible:!1,checkAll:!1,focusable:!1,sortedColumn:null},ListEditorBaseModel.prototype.defaults),initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.initColumns()},toggleCheckAll:function(){this.set("checkAll",!this.get("checkAll"))},onCheckAllChanged:function(e){this.on("change:checkAll",function(t,n){e.call(null,{value:n})})},initColumns:function(){this.set("columns",new Collection)}}),DataGridView=ListEditorBaseView.extend({template:{grid:InfinniUI.Template["controls/dataGrid/template/dataGrid.tpl.html"],gridStretched:InfinniUI.Template["controls/dataGrid/template/dataGridStretched.tpl.html"],headerCell:InfinniUI.Template["controls/dataGrid/template/headerCell.tpl.html"],sizeCell:InfinniUI.Template["controls/dataGrid/template/sizeCell.tpl.html"]},className:"pl-datagrid",events:_.extend({},ListEditorBaseView.prototype.events,{"click .pl-datagrid-toggle_all":"onClickCheckAllHandler","click thead .pl-datagrid-row__cell":"onClickToHeaderCellHandler"}),UI:_.defaults({body:".pl-datagrid__body",head:".pl-datagrid__head",headContainer:".pl-datagrid-container_head",header:".pl-datagrid-row_header",firstRows:".pl-datagrid-row_first",toggleCell:".pl-toggle-cell",checkAll:".pl-datagrid-toggle__button",items:"tbody"},ListEditorBaseView.prototype.UI),initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e),this.rowElements=new HashMap},initHandlersForProperties:function(){ListEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:showSelectors",this.updateShowSelectors),this.listenTo(this.model,"change:checkAllVisible",this.updateCheckAllVisible),this.listenTo(this.model,"change:checkAll",this.updateCheckAll);var e=this.rowElements;this.model;this.model.get("items").onChange(function(t){"replace"===t.action&&t.oldItems.forEach(function(n,i){e.add(t.newItems[i],e.get(n)),e.remove(n)})})},updateProperties:function(){ListEditorBaseView.prototype.updateProperties.call(this),this.updateShowSelectors(),this.updateCheckAllVisible(),this.updateCheckAll(),this.updateDisabledItem()},updateShowSelectors:function(){var e=this.model.get("showSelectors");this.$el.toggleClass("pl-datagrid_selectors_show",e),this.$el.toggleClass("pl-datagrid_selectors_hide",!e)},updateGrouping:function(){},updateVerticalAlignment:function(){ListEditorBaseView.prototype.updateVerticalAlignment.call(this),this.switchClass("verticalAlignment",this.model.get("verticalAlignment"),this.ui.body,!1)},updateCheckAll:function(){var e=this.model.get("checkAll");this.ui.checkAll.prop("checked",e)},getHorizontalScrollBarWidth:function(){if("undefined"==typeof DataGridView.scrollbarWidth){var e=document.createElement("div"),t=document.body;e.className="modal-scrollbar-measure";var n={position:"absolute",top:"-9999px",width:"50px",height:"50px",overflow:"scroll"};for(var i in n)e.style[i]=n[i];t.appendChild(e),DataGridView.scrollbarWidth=e.offsetWidth-e.clientWidth,t.removeChild(e)}return DataGridView.scrollbarWidth},updateCheckAllVisible:function(){var e=this.model.get("checkAllVisible");this.ui.checkAll.toggleClass("hidden",!e)},updateMultiSelect:function(){ListEditorBaseView.prototype.updateMultiSelect.call(this);var e=this.model.get("multiSelect");this.$el.toggleClass("pl-datagrid_select_multi",e===!0),this.$el.toggleClass("pl-datagrid_select_single",e!==!0)},updateValue:function(){var e=this.model,t=e.get("value"),n=[],i=e.get("items");e.get("multiSelect")||void 0===t||null===t||(t=[t]),Array.isArray(t)&&(n=t.map(function(t){return e.itemIndexByValue(t)}).filter(function(e){return-1!==e})),this.rowElements.forEach(function(e,t){var o=i.indexOf(t),r=-1!==n.indexOf(o);e.toggle(r)})},updateSelectedItem:function(){var e=this.model,t=e.get("selectedItem");this.rowElements.forEach(function(e,n){e.setSelected(n===t)})},updateDisabledItem:function(){var e,t=this.model,n=t.get("disabledItemCondition");null!=n?this.rowElements.forEach(function(i,o){e=!n(void 0,{value:o}),i.getSelected()===o&&e===!1&&t.set("selectedItem",null),i.setEnabled(e)}):this.rowElements.forEach(function(e,t){e.setEnabled(!0)})},updateEnabled:function(){var e=this.model.get("enabled");e?this.updateDisabledItem():this.disableDataGridItems()},disableDataGridItems:function(){this.model.set("selectedItem",null),this.rowElements.forEach(function(e,t){e.setEnabled(!1)})},render:function(){var e=this;this.prerenderingActions();var t=this.model.get("verticalAlignment"),n="Stretch"===t?this.template.gridStretched:this.template.grid;return this.$el.html(n()),this.bindUIElements(),this.renderHeaders(),this.renderItems(),this.trigger("render"),this.applyColumnWidth(),this.syncBodyAndHead(),this.postrenderingActions(),setTimeout(function(){e.updateProperties()},0),this},applyColumnWidth:function(){var e=this.model.get("columns"),t=!1;this.ui.firstRows.children().each(function(n,i){var o=n%(e.length+1);if(0!==o){var r=e.getByIndex(o-1),a=r&&r.getWidth();a&&($(i).css("width",a),t=!0)}}),this.$el.toggleClass("pl-datagrid_layout_fixed",t)},syncBodyAndHead:function(){var e=this.ui.head;e.css("padding-right",this.getHorizontalScrollBarWidth()+"px"),this.ui.body.off("scroll").on("scroll",this.onScrollBodyHandler.bind(this))},onScrollBodyHandler:function(){this.ui.headContainer.scrollLeft(this.ui.body.scrollLeft())},renderHeaders:function(){var e=this,t=this.model.get("columns"),n=this.template.headerCell,i=[],o=this.template.sizeCell,r=t.toArray().map(function(t){i.push(o());var r=$(n()),a=t.getHeaderTemplate(),l=t.getHeader();r.data("pl-column",t),t.getSortable()&&(r.addClass("sortable"),t.getSortDirection()&&setTimeout(function(){e.setUpColumnSort(t,r,t.getSortDirection(),!1)},0));var s;return a?(s=a(null,{value:l}),r.append(s.render())):r.append(l),r});this.ui.header.append(r),this.ui.firstRows.append(i)},renderItems:function(){var e=this.model,t=e.get("valueSelector"),n=e.get("itemTemplate"),i=e.get("items"),o=this.ui.items,r=this;this.removeRowElements(),i.forEach(function(i,a){setTimeout(function(){var l=n(void 0,{index:a,item:i});l.onBeforeClick(function(){var t=e.get("items"),n=t.getByIndex(a),i=r.rowElements.get(n);i.getEnabled()!==!1&&e.set("selectedItem",n)}),l.onToggle(function(){var n=this.model.get("enabled"),i=e.get("items");n&&e.toggleValue(t(void 0,{value:i.getByIndex(a)}))}),l.childElements=l.control.controlView.childElements,r.addRowElement(i,l);var s=l.render();o.append(s)},0)},this)},updateFocusable:function(){var e=this.model.get("focusable");this.rowElements.values.forEach(function(t){e?t.control.controlView.$el.attr("tabindex",0):t.control.controlView.$el.removeAttr("tabindex")})},addRowElement:function(e,t){this.addChildElement(t),this.rowElements.add(e,t)},removeRowElements:function(){this.removeChildElements(),this.rowElements.clear()},onClickCheckAllHandler:function(){this.model.toggleCheckAll()},onClickToHeaderCellHandler:function(e){var t=$(e.currentTarget),n=t.data("pl-column");n&&n.isSortable()&&(null===n.getSortDirection()?(this.resetSort(),this.setUpColumnSort(n,t,"asc")):"asc"===n.getSortDirection()?(this.resetSort("asc"),this.setUpColumnSort(n,t,"desc")):"desc"===n.getSortDirection()&&(this.resetSort("desc"),this.setUpColumnSort(n,t,"asc")))},setUpColumnSort:function(e,t,n,i){e.setSortDirection(n),this.model.set("sortedColumn",e),e.getIsHeaderTemplateEmpty()?t.addClass("sorted sorted-"+n):t.addClass("sorted headerTemplate-sorted-"+n),i!==!1&&e.trigger("onSort",{sortDirection:n})},resetSort:function(e){if(e){var t=this.$el.find(".sorted");t.removeClass("headerTemplate-sorted-"+e+" sorted-"+e)}else{var t=this.$el.find(".sorted");t.removeClass("sorted headerTemplate-sorted-asc headerTemplate-sorted-desc sorted-asc sorted-desc");var n=this.model.get("sortedColumn");n&&n.setSortDirection(null)}}});_.inherit(DataGridRowControl,Control),_.extend(DataGridRowControl.prototype,{onToggle:function(e){this.controlView.on("toggle",e)},createControlModel:function(){return new DataGridRowModel},createControlView:function(e){return new DataGridRowView({model:e})}});var DataGridRowModel=ControlModel.extend({}),DataGridRowView=ControlView.extend({className:"pl-datagrid-row pl-datagrid-row_data",classNameSelected:"info",tagName:"tr",events:{},template:{singleSelect:InfinniUI.Template["controls/dataGrid/dataGridRow/template/singleSelect.tpl.html"], +multiSelect:InfinniUI.Template["controls/dataGrid/dataGridRow/template/multiSelect.tpl.html"],dataCell:InfinniUI.Template["controls/dataGrid/dataGridRow/template/dataCell.tpl.html"]},UI:{toggleCell:".pl-datagrid-row__cell_toggle",toggle:".pl-datagrid-toggle",toggleControl:".pl-datagrid-toggle input"},initialize:function(){ControlView.prototype.initialize.call(this),this.childElements=[],this.on("render",function(){this.ui.toggleCell.on("click",this.onToggleHandler.bind(this))},this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:toggle",this.updateToggle),this.listenTo(this.model,"change:selected",this.updateSelected)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateToggle(),this.updateSelected(),this.updateShowSelectors()},updateVerticalAlignment:function(){},render:function(){this.prerenderingActions();var e=this.$el,t=this,n=this.model.get("multiSelect")?"multiSelect":"singleSelect",i=this.template[n];e.html(i()),this.bindUIElements();var o=this.model.get("cellTemplates"),r=this.template.dataCell;return Array.isArray(o)&&o.forEach(function(n,i){var o=$(r()),a=n();o.append(a.render()),e.append(o),t.addChildElement(a)}),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},updateShowSelectors:function(){var e=this.model.get("showSelectors");this.ui.toggleCell.toggleClass("hidden",!e)},updateToggle:function(){var e=this.model.get("toggle");this.ui.toggleControl.prop("checked",!!e)},updateSelected:function(){var e=this.model.get("selected");this.$el.toggleClass(this.classNameSelected,!!e)},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.toggleControl.attr("disabled",e?null:"disabled")},onToggleHandler:function(e){this.trigger("toggle")},addChildElement:function(e){this.childElements.push(e)},removeChildElements:function(){this.childElements.forEach(function(e){e.remove()}),this.childElements.length=0},remove:function(){this.removeChildElements(),ControlView.prototype.remove.call(this)}}),DataNavigationBaseButtonModel=Backbone.Model.extend({initialize:function(){this.on("change:parent",this.subscribeToParent,this)},subscribeToParent:function(){}}),DataNavigationBaseButton=Backbone.View.extend({tagName:"li",initialize:function(e){Backbone.View.prototype.initialize.call(this,e),this.once("render",function(){this.initHandlersForProperties()},this)},initHandlersForProperties:function(){},updateProperties:function(){},getData:function(){return this.model.toJSON()},setParent:function(e){this.model.set("parent",e),this.subscribeForParent(e)},render:function(){var e=this.template(this.getData());return this.$el.html(e),this.trigger("render"),this.updateProperties(),this},subscribeForParent:function(e){}}),DataNavigationNextButton=DataNavigationBaseButton.extend({template:InfinniUI.Template["controls/dataNavigation/buttons/template/next.tpl.html"],events:{click:"onClickHandler"},initialize:function(e){this.model=new DataNavigationBaseButtonModel,DataNavigationBaseButton.prototype.initialize.call(this,e)},onClickHandler:function(e){this.trigger("command","next")}}),DataNavigationPageButton=DataNavigationBaseButton.extend({template:InfinniUI.Template["controls/dataNavigation/buttons/template/page.tpl.html"],events:{click:"onClickHandler"},initialize:function(e){this.model=new DataNavigationPageButtonModel,DataNavigationBaseButton.prototype.initialize.call(this,e),this.model.set("pageNumber",e.pageNumber)},initHandlersForProperties:function(){DataNavigationBaseButton.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:isCurrent",this.updateIsCurrent)},updateProperties:function(){DataNavigationBaseButton.prototype.updateProperties.call(this),this.updateIsCurrent()},updateIsCurrent:function(){this.$el.toggleClass("active",this.model.get("isCurrent"))},onClickHandler:function(e){this.trigger("command","page",{pageNumber:this.model.get("pageNumber")})}}),DataNavigationPageButtonModel=DataNavigationBaseButtonModel.extend({defaults:{isCurrent:!1},subscribeToParent:function(){DataNavigationBaseButtonModel.prototype.subscribeToParent.call(this);var e=this.get("parent");this.listenTo(e.model,"change:pageNumber",function(){this.updateIsCurrent()}),this.updateIsCurrent()},updateIsCurrent:function(){var e=this.get("parent"),t=e.model.get("pageNumber")===this.get("pageNumber");this.set("isCurrent",t)}}),DataNavigationPrevButton=DataNavigationBaseButton.extend({template:InfinniUI.Template["controls/dataNavigation/buttons/template/prev.tpl.html"],events:{click:"onClickHandler"},initialize:function(e){this.model=new DataNavigationBaseButtonModel,DataNavigationBaseButton.prototype.initialize.call(this,e)},onClickHandler:function(e){this.trigger("command","prev")}});DataNavigationButtonFactory.prototype.buttons={prev:DataNavigationPrevButton,page:DataNavigationPageButton,next:DataNavigationNextButton},DataNavigationButtonFactory.prototype.createButton=function(e,t){var n=this.buttons[e];if("function"!=typeof n)return void console.error("Wrong button type: "+e);var i=new n(t);return i.setParent(this._dataNavigation),i},_.inherit(DataNavigationControl,Control),_.extend(DataNavigationControl.prototype,{createControlModel:function(){return new DataNavigationModel},createControlView:function(e){return new DataNavigationView({model:e})},onPageNumberChanged:function(e){this.controlModel.onPageNumberChanged(e)},onPageSizeChanged:function(e){this.controlModel.onPageSizeChanged(e)}});var DataNavigationModel=ControlModel.extend({defaults:_.defaults({pageNumber:0,pageStart:0,_buttonsCount:5,_buttonsTemplate:["prev","page","next"],pageCount:null,isDataReady:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.set("availablePageSizes",new Collection),this.on("change:pageNumber",this.updatePageStart,this),this.on("change:pageSize",this.updatePageSize,this)},updatePageStart:function(){var e=this.get("pageNumber"),t=this.get("pageStart"),n=this.get("_buttonsCount");e+1>=t+n?t+=Math.floor(n/2):e===t?t=Math.max(0,t-Math.floor(n/2)):t>e+1&&(t=Math.max(0,e-1)),this.set("pageStart",t)},updatePageSize:function(){this.set("pageNumber",0)},nextPage:function(){var e=this.get("pageNumber");this.set("pageNumber",e+1)},prevPage:function(){var e=this.get("pageNumber");e>0&&this.set("pageNumber",e-1)},onPageNumberChanged:function(e){this.on("change:pageNumber",function(t,n){e.call(null,{value:n})})},onPageSizeChanged:function(e){this.on("change:pageSize",function(t,n){e.call(null,{value:n})})}}),DataNavigationView=ControlView.extend({template:InfinniUI.Template["controls/dataNavigation/template/dataNavigation.tpl.html"],className:"pl-data-navigation",UI:{buttons:"ul",sizes:".pl-page-size"},initialize:function(e){ControlView.prototype.initialize.call(this,e),this._childViews=[],this.buttonsFactory=new DataNavigationButtonFactory(this),this._pageSizes=new DataNavigationPageSizes,this._pageSizes.setParent(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:pageStart",this.updateButtons),this.listenTo(this.model,"change:pageCount",this.updateButtons),this.listenTo(this.model,"change:isDataReady",this.updateButtons)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateButtons()},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.renderPageSizes(),this.postrenderingActions(),this},renderPageSizes:function(){this.ui.sizes.append(this._pageSizes.render().$el)},renderButtons:function(){var e,t,n=this.model.get("_buttonsTemplate"),i=this.model.get("_buttonsCount"),o=this.model.get("pageCount"),r=(this.model.get("pageNumber"),this.model.get("pageStart")),a=this.model.get("isDataReady");if(this._removeChildViews(),a){var l=this.buttonsFactory;this.model;e=n.reduce(function(e,t){if("page"===t)for(var n=0;i>n;n+=1){var o=l.createButton(t,{pageNumber:r+n});e.push(o)}else{var o=l.createButton(t);e.push(o)}return e},[]),"number"==typeof o&&r+i>=o&&(t=r+i-o+1,0==o&&(t+=1),e.splice(e.length-t,100));var s=e.map(function(e){return this.listenTo(e,"command",this.onCommandHandler),this._appendChildView(e),e.render().$el},this);this.ui.buttons.append(s)}},updateButtons:function(){this.renderButtons()},onCommandHandler:function(e,t){switch(e){case"prev":this.model.prevPage();break;case"next":this.model.nextPage();break;case"page":this.model.set("pageNumber",t.pageNumber)}},_removeChildViews:function(){this._childViews.forEach(function(e){this.stopListening(e),e.remove()},this),this._childViews.length=0},_appendChildView:function(e){this._childViews.push(e)}}),DataNavigationPageSizes=Backbone.View.extend({className:"btn-group",template:InfinniUI.Template["controls/dataNavigation/pageSizes/template/pageSizes.tpl.html"],events:{"click button":"onClickButtonHandler"},setParent:function(e){this.model=e.model;var t=this.model.get("availablePageSizes");t.onChange(this.onAvailablePageSizesChanged.bind(this)),this.model.on("change:pageSize",this.renderButtons,this)},render:function(){return this.renderButtons(),this},renderButtons:function(){var e=this.model.get("availablePageSizes"),t=this.model.get("pageSize"),n=e.toArray().map(function(e){return this.template({size:e,active:t===e})},this);this.$el.html(n)},onAvailablePageSizesChanged:function(){this.renderButtons()},onClickButtonHandler:function(e){var t=$(e.target),n=parseInt(t.attr("data-size"),10);this.model.set("pageSize",n)}}),CommonLabelView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-label",template:InfinniUI.Template["controls/label/commonView/template/label.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{control:".label-control"}),initialize:function(){ControlView.prototype.initialize.apply(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:displayFormat",this.updateDisplayFormat),this.listenTo(this.model,"change:textWrapping",this.updateTextWrapping),this.listenTo(this.model,"change:textTrimming",this.updateTextTrimming)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateDisplayFormat(),this.updateTextWrapping(),this.updateTextTrimming()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.control.attr("tabindex",0):this.ui.control.removeAttr("tabindex")},updateValue:function(){var e=this.model.get("escapeHtml"),t=e?"text":"html",n=this.getLabelText(),i=this.getLabelElement();i[t](n);var o=String(n);i.attr("title",o.replace(/<\/?[^>]+>/g,""))},updateDisplayFormat:function(){this.updateValue()},updateTextWrapping:function(){var e=this.model.get("textWrapping");this.getLabelElement().toggleClass("pl-text-wrapping",e)},updateTextTrimming:function(){var e=this.model.get("textTrimming");this.getLabelElement().toggleClass("pl-text-trimming",e)},updateText:function(){this.updateValue()},getData:function(){return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{text:this.getLabelText()})},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getLabelText:function(){var e,t=this.model,n=t.get("value"),i=t.get("displayFormat");return"undefined"!=typeof n&&null!==n?e="function"==typeof i?i(null,{value:n}):n:(e=this.model.get("text"),"undefined"!=typeof e&&null!=e||(e="")),e},getLabelElement:function(){return this.ui.control}}));InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.Label.common",CommonLabelView);var LabelControl=function(e){_.superClass(LabelControl,this,e),this.initialize_editorBaseControl()};_.inherit(LabelControl,Control),_.extend(LabelControl.prototype,{createControlModel:function(){return new LabelModel},createControlView:function(e,t){t&&t in window.InfinniUI.viewModes.Label||(t="simple");var n=window.InfinniUI.viewModes.Label[t];return new n({model:e})},getDisplayValue:function(){return this.controlView.getLabelText()}},editorBaseControlMixin);var LabelModel=ControlModel.extend(_.extend({defaults:_.defaults({horizontalTextAlignment:"Left",verticalAlignment:"Top",textWrapping:!0,textTrimming:!0,escapeHtml:!0,focusable:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),SimpleLabelView=CommonLabelView.extend({tagName:"span",template:function(){return""},UI:_.extend({},editorBaseViewMixin.UI,{}),updateFocusable:function(){var e=this.model.get("focusable");e?this.$el.attr("tabindex",0):this.$el.removeAttr("tabindex")},getLabelElement:function(){return this.$el}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.Label.simple",SimpleLabelView);var BaseListBoxView=ListEditorBaseView.extend({template:{plain:InfinniUI.Template["controls/listBox/baseView/template/listBox.tpl.html"],grouped:InfinniUI.Template["controls/listBox/baseView/template/listBoxGrouped.tpl.html"]},className:"pl-listbox",events:{"change .pl-listbox-input":"onChangeHandler"},UI:_.defaults({items:".pl-listbox-i",checkingInputs:".pl-listbox-input input"},ListEditorBaseView.prototype.UI),initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e)},updateGrouping:function(){var e=null!=this.model.get("groupValueSelector");e?this.strategy=new ListBoxViewGroupStrategy(this):this.strategy=new ListBoxViewPlainStrategy(this)},updateValue:function(){this.ui.items.removeClass("pl-listbox-i-chosen"),this.ui.checkingInputs.prop("checked",!1);var e,t,n=this.model.get("value");if(this.isMultiselect()||void 0===n||null===n||(n=[n]),$.isArray(n))for(var i=0,o=n.length;o>i;i++)e=this.model.itemByValue(n[i]),t=this._getElementByItem(e),t&&(t.addClass("pl-listbox-i-chosen"),t.find(".pl-listbox-input input").prop("checked",!0))},updateSelectedItem:function(e){if(this.wasRendered||1==e){this.ui.items.removeClass("pl-listbox-i-selected");var t=this.model.get("selectedItem"),n=this._getElementByItem(t);n&&!n.hasClass("pl-disabled-list-item")&&n.addClass("pl-listbox-i-selected")}},render:function(){this.prerenderingActions();var e=this.strategy.prepareItemsForRendering(),t=this.strategy.getTemplate();return this.removeChildElements(),this.$el.html(t(e)),this.bindUIElements(),this.strategy.appendItemsContent(e),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getItems:function(){return this.model.get("items")},getItemTemplate:function(){return this.model.get("itemTemplate")},getGroupValueSelector:function(){return this.model.get("groupValueSelector")},isMultiselect:function(){return this.model.get("multiSelect")},isFocusable:function(){return this.model.get("focusable")},getGroupItemTemplate:function(){return this.model.get("groupItemTemplate")},onChangeHandler:function(){var e,t=this.ui.checkingInputs.filter(":checked").parent().parent(),n=null,i=this.model;this.isMultiselect()?(n=[],t.each(function(t,o){e=$(o).data("pl-data-item"),n.push(i.valueByItem(e))})):t.length>0&&(n=i.valueByItem(t.data("pl-data-item"))),this.model.set("value",n)},updateDisabledItem:function(){var e=this.model,t=e.get("disabledItemCondition");this.ui.items.removeClass("pl-disabled-list-item"),this.ui.checkingInputs.attr("disabled",null),null!=t&&this.ui.items.each(function(e,n){var i=$(n),o=i.data("pl-data-item"),r=t(void 0,{value:o});r&&(i.hasClass("pl-listbox-i-selected")&&this.model.set("selectedItem",null),i.toggleClass("pl-disabled-list-item",!0),i.find("input").attr("disabled","disabled"),i.find("button").attr("disabled","disabled"))})},disableAll:function(){this.ui.items.addClass("pl-disabled-list-item")},_getElementByItem:function(e){var t=_.find(this.ui.items,function(t){return $(t).data("pl-data-item")==e});return $(t)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.ListBox.base",BaseListBoxView),_.extend(ListBoxViewGroupStrategy.prototype,{prepareItemsForRendering:function(){var e=this.listbox.getItems(),t="listbox-"+guid(),n={isMultiselect:this.listbox.isMultiselect(),focusable:this.listbox.isFocusable(),inputName:t,groups:[]},i={},o=this.listbox.getGroupValueSelector();e.forEach(function(e,t){var n=o(void 0,{value:e});n in i||(i[n]=[]),i[n].push({index:t,item:e})});for(var r in i)n.groups.push({items:i[r]});return n},getTemplate:function(){return this.listbox.template.grouped},appendItemsContent:function(e){var t,n,i,o,r,a=this.listbox.$el,l=this.listbox.getItemTemplate(),s=this.listbox.getGroupItemTemplate(),u=e.groups,d=this.listbox;a.find(".pl-listbox-group-i").each(function(e,a){r=u[e],i=s(void 0,{index:r.items[0].index,item:r}),d.addChildElement(i),o=$(a),o.find(".pl-listbox-group-title").append(i.render()),o.find(".pl-listbox-body").each(function(e,i){t=r.items[e].item,n=l(void 0,{index:r.items[e].index,item:t}),d.addChildElement(n),$(i).append(n.render()),$(i).parent().data("pl-data-item",t)})})}}),_.extend(ListBoxViewPlainStrategy.prototype,{prepareItemsForRendering:function(){var e=this.listbox.getItems(),t="listbox-"+guid(),n={isMultiselect:this.listbox.isMultiselect(),focusable:this.listbox.isFocusable(),inputName:t,items:e.toArray()};return n},getTemplate:function(){return this.listbox.template.plain},appendItemsContent:function(e){var t,n,i=this.listbox.$el,o=this.listbox.getItemTemplate(),r=e.items,a=this.listbox;i.find(".pl-listbox-body").each(function(e,i){n=$(i),t=o(void 0,{index:e,item:r[e]}),a.addChildElement(t),n.append(t.render()),n.parent().data("pl-data-item",r[e])})}}),_.inherit(ListBoxControl,ListEditorBaseControl),_.extend(ListBoxControl.prototype,{createControlModel:function(){return new ListBoxModel},createControlView:function(e,t){(!t||!t in window.InfinniUI.viewModes.ListBox)&&(t="common");var n=window.InfinniUI.viewModes.ListBox[t];return new n({model:e})},updateDisabledItem:function(){this.controlView.updateDisabledItem()},disableAll:function(){this.controlView.disableAll()}});var ListBoxModel=ListEditorBaseModel.extend({initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),CheckingListBoxView=BaseListBoxView.extend({className:"pl-listbox",template:{plain:InfinniUI.Template["controls/listBox/checkingView/template/listBox.tpl.html"],grouped:InfinniUI.Template["controls/listBox/checkingView/template/listBoxGrouped.tpl.html"]},events:_.extend({},BaseListBoxView.prototype.events),initialize:function(e){BaseListBoxView.prototype.initialize.call(this,e),this.initDomHandlers()},updateEnabled:function(){ListEditorBaseView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.checkingInputs.attr("disabled",!e)},initDomHandlers:function(){var e=this.$el,t=this;e.get(0).addEventListener("click",function(n){n=$.event.fix(n);var i,o,r,a=$(n.target);if(t.model.get("enabled")){for(;a.get(0)!=e.get(0);)a.hasClass("pl-listbox-i")&&(i=a),a=a.parent();i&&i.length>0&&(o=i.data("pl-data-item"),r=t.model.isDisabledItem(o),r||t.model.toggleValue(o),t.model.set("selectedItem",o))}},!0)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.ListBox.checking",CheckingListBoxView);var CommonListBoxView=BaseListBoxView.extend({className:"pl-listbox pl-listbox-common-mode",events:_.extend({},BaseListBoxView.prototype.events),initialize:function(e){BaseListBoxView.prototype.initialize.call(this,e),this.initDomHandlers()},initDomHandlers:function(){var e=this.$el,t=this;e.get(0).addEventListener("click",function(n){n=$.event.fix(n);for(var i,o,r,a=$(n.target);a.get(0)!=e.get(0);)a.hasClass("pl-listbox-i")&&(i=a),a=a.parent();i.length>0&&(o=i.data("pl-data-item"),r=t.model.isDisabledItem(o),r||t.model.toggleValue(o),t.model.set("selectedItem",o))},!0)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.ListBox.common",CommonListBoxView);var CommonPopupButtonView=ContainerView.extend({className:"pl-popup-button",template:InfinniUI.Template["controls/popupButton/commonView/template/popupButton.tpl.html"],dropdownTemplate:InfinniUI.Template["controls/popupButton/commonView/template/popupButton.dropdown.tpl.html"],events:{click:"onClickHandler"},UI:{button:".pl-popup-button__button",grip:".pl-popup-button__grip"},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateContent()},updateContent:CommonButtonView.prototype.updateContent,updateText:CommonButtonView.prototype.updateText,getButtonElement:function(){return this.ui.button},render:function(){this.prerenderingActions();var e=this.model.get("items").toArray(),t=this.template;return this.removeChildElements(),this.$el.html(t({items:e})),this.bindUIElements(),this.$dropdown=this.renderDropdown(),this.$dropdown.on("click",this.close.bind(this)),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderDropdown:function(){var e=this.dropdownTemplate,t=this.model.get("items").toArray(),n=$(e({items:t}));return this.appendItemsContent(n,t),n},appendItemsContent:function(e,t){var n,i,o=this,r=this.model.get("itemTemplate");e.find(".pl-popup-button__item").each(function(e,a){i=$(a),n=r(void 0,{index:e,item:t[e]}),o.addChildElement(n),i.append(n.render())})},open:function(){$("body").append(this.$dropdown),this.$dropdown.addClass("open"),this.alignDropdown();this.$dropdown.add(this.ui.grip)},close:function(){this.$dropdown.removeClass("open"),this.$dropdown.detach()},alignDropdown:function(){var e=this.$el.offset(),t=this.$el.height(),n=this.$el.width(),i=this.$dropdown.find(".pl-popup-button__items")[0],o=i.offsetHeight,r=i.offsetWidth,a=e.left,l=e.top+t;e.left+r>=window.innerWidth&&(a+=n-r),l+o>=window.innerHeight&&(l-=t+o+2),this.$dropdown.offset({top:l,left:a})},toggle:function(){this.$dropdown.hasClass("open")?this.close():this.open()},onClickHandler:function(){this.toggle()},updateGrouping:function(){}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.PopupButton.common",CommonPopupButtonView),_.inherit(PopupButtonControl,ContainerControl),_.extend(PopupButtonControl.prototype,{createControlModel:function(){return new PopupButtonModel},createControlView:function(e,t){(!t||!t in window.InfinniUI.viewModes.PopupButton)&&(t="common");var n=window.InfinniUI.viewModes.PopupButton[t];return new n({model:e})}},buttonControlMixin);var PopupButtonModel=ContainerModel.extend({}),ForMenuPopupButtonView=CommonPopupButtonView.extend({tagName:"a",className:"pl-popup-button",attributes:{href:"javascript:;"},template:InfinniUI.Template["controls/popupButton/forMenuView/template/popupButton.tpl.html"],dropdownTemplate:InfinniUI.Template["controls/popupButton/commonView/template/popupButton.dropdown.tpl.html"],events:{click:"onClickGripHandler"},UI:{button:".pl-popup-button__button",grip:".pl-popup-button__grip"},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateContent()},updateContent:CommonButtonView.prototype.updateContent,updateText:CommonButtonView.prototype.updateText,updateHorizontalAlignment:function(){var e,t=this.model.get("horizontalAlignment"),n=this;this.whenReady(function(){return e=n.$el.parent().parent(),e.length>0},function(){"Right"==t?e.addClass("pull-right"):e.removeClass("pull-right")})},getButtonElement:function(){return this.ui.button},render:function(){this.prerenderingActions();var e=this.model.get("items").toArray(),t=this.template;return this.removeChildElements(),this.$el.html(t({items:e})),this.bindUIElements(),this.$dropdown=this.renderDropdown(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderDropdown:function(){var e=this.dropdownTemplate,t=this.model.get("items").toArray(),n=$(e({items:t}));return this.appendItemsContent(n,t),n.on("click",function(){this.close()}.bind(this)),n},appendItemsContent:function(e,t){var n,i,o=this,r=this.model.get("itemTemplate");e.find(".pl-popup-button__item").each(function(e,a){i=$(a),n=r(void 0,{index:e,item:t[e]}),o.addChildElement(n),i.append(n.render())})},open:function(){var e=this,t=this.$el.parent();$("body").append(this.$dropdown),this.$dropdown.addClass("open"),t.addClass("open"),this.alignDropdown();var n=this.$dropdown.add(this.$el);new ActionOnLoseFocus(n,function(){e.close()})},close:function(){this.$dropdown.removeClass("open"),this.$el.parent().removeClass("open"),this.$dropdown.detach()},alignDropdown:function(){var e,t=this.model.get("horizontalAlignment"),n=this.$el.parent(),i=n.offset(),o=i.top+n.height()-2,r=this.$dropdown.find(".dropdown-menu");e="Right"==t?i.left-(r.width()-n.width()):i.left,this.$dropdown.offset({top:o,left:e})},onClickGripHandler:function(){this.toggle()},updateGrouping:function(){},whenReady:function(e,t,n){var i=this;void 0===n&&(n=100),e()?t():n>0&&setTimeout(function(){i.whenReady(e,t,n-1)},10)}});InfinniUI.ObjectUtils.setPropertyValueDirect(window.InfinniUI,"viewModes.PopupButton.forMenu",ForMenuPopupButtonView),_.inherit(StackPanelControl,ContainerControl),_.extend(StackPanelControl.prototype,{createControlModel:function(){return new StackPanelModel},createControlView:function(e,t){var n=new StackPanelView({model:e});return n.viewMode=t,n}});var StackPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),StackPanelView=ContainerView.extend({tagName:"ul",className:"pl-stack-panel pl-clearfix",template:{plain:InfinniUI.Template["controls/stackPanel/baseView/template/stackPanel.tpl.html"],grouped:InfinniUI.Template["controls/stackPanel/baseView/template/stackPanelGrouped.tpl.html"]},UI:{items:".stackpanel-items"},initialize:function(e){ContainerView.prototype.initialize.call(this,e),this.initOrientation()},updateGrouping:function(){var e=null!=this.model.get("groupValueSelector");e?this.strategy=new StackPanelViewGroupStrategy(this):this.strategy=new StackPanelViewPlainStrategy(this)},render:function(){this.prerenderingActions(),this.removeChildElements();var e=this.strategy.prepareItemsForRendering(),t=this.strategy.getTemplate();return this.$el.html(t(e)),this.strategy.appendItemsContent(e),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},initOrientation:function(){this.listenTo(this.model,"change:orientation",this.updateOrientation),this.updateOrientation()},updateOrientation:function(){var e=this.model.get("orientation");this.$el.toggleClass("horizontal-orientation","Horizontal"==e),this.$el.toggleClass("pl-stack-panel_horizontal","Horizontal"==e)},getItems:function(){return this.model.get("items")},getItemTemplate:function(){return this.model.get("itemTemplate")},getGroupValueSelector:function(){return this.model.get("groupValueSelector")},getGroupItemTemplate:function(){return this.model.get("groupItemTemplate")}});_.extend(StackPanelViewGroupStrategy.prototype,{groupTemplate:InfinniUI.Template["controls/stackPanel/baseView/template/stackPanelGroup.tpl.html"],prepareItemsForRendering:function(){var e=this.stackPanel.getItems(),t="listbox-"+guid(),n={inputName:t,groups:[]},i={},o=this.stackPanel.getGroupValueSelector();e.forEach(function(e,t){var n=o(void 0,{value:e});n in i||(i[n]=[]),i[n].push(e)});for(var r in i)i.hasOwnProperty(r)&&n.groups.push({items:i[r],indices:i[r].map(function(t){return e.indexOf(t)})});return n},getTemplate:function(){return this.stackPanel.template.grouped},appendItemsContent:function(e){var t,n=this.stackPanel,i=n.$el,o=this.groupTemplate,r=this.stackPanel.getGroupItemTemplate(),a=this.stackPanel.getItemTemplate(),l=e.groups;t=l.map(function(e,t){var i,l=e.items||[],s=e.indices||[],u=$(o({items:l})),d=r(null,{index:s[0],item:e});return n.addChildElement(d),i=l.map(function(e,t){var i=a(null,{index:s[t],item:e});return n.addChildElement(i),i.render()}),$(".pl-stack-panel-group__header",u).append(d.render()),$(".pl-stack-panel-list__item",u).each(function(e,t){$(t).append(i[e])}),u}),i.append(t)}}),_.extend(StackPanelViewPlainStrategy.prototype,{prepareItemsForRendering:function(){var e=this.stackPanel.getItems(),t={items:e.toArray()};return t},getTemplate:function(){return this.stackPanel.template.plain},appendItemsContent:function(e,t){var n,i,o=this.stackPanel.$el,r=this.stackPanel.getItemTemplate(),a=e.items,l=this.stackPanel;t=t||".pl-stack-panel-i",o.find(t).each(function(e,t){i=$(t),n=r(void 0,{index:e,item:a[e]}),l.addChildElement(n),i.append(n.render()),i.parent().data("pl-data-item",a[e])})}}),_.inherit(TablePanelControl,ContainerControl),_.extend(TablePanelControl.prototype,{createControlModel:function(){return new TablePanelModel},createControlView:function(e){return new TablePanelView({model:e})}});var TablePanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),TablePanelView=ContainerView.extend({className:"pl-table-panel",initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this;t.forEach(function(t,o){e=n(void 0,{item:t,index:o}),i.addChildElement(e),i.$el.append(e.render())})},updateGrouping:function(){}});_.inherit(CellControl,ContainerControl),_.extend(CellControl.prototype,{createControlModel:function(){return new CellModel},createControlView:function(e){return new CellView({model:e})}});var CellModel=ContainerModel.extend({defaults:_.defaults({columnSpan:1},ContainerModel.prototype.defaults),initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),CellView=ContainerView.extend({className:"pl-cell",initialize:function(e){ContainerView.prototype.initialize.call(this,e),this.initColumnSpan()},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this;t.forEach(function(t,o){e=n(void 0,{item:t,index:o}),i.addChildElement(e),i.$el.append(e.render())})},initColumnSpan:function(){this.listenTo(this.model,"change:columnSpan",this.updateColumnSpan),this.updateColumnSpan()},updateColumnSpan:function(){var e=this.model.get("columnSpan"),t=this.columnSpan;e!=t&&(t&&this.$el.removeClass("col-xs-"+t),this.$el.addClass("col-xs-"+e),this.columnSpan=e)},updateGrouping:function(){}});_.inherit(RowControl,ContainerControl),_.extend(RowControl.prototype,{createControlModel:function(){return new RowModel},createControlView:function(e){return new RowView({model:e})}});var RowModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),RowView=ContainerView.extend({className:"pl-row row",initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this;t.forEach(function(t,o){e=n(void 0,{item:t,index:o}),i.addChildElement(e),i.$el.append(e.render())})},updateGrouping:function(){}});_.inherit(TabPanelControl,ContainerControl),_.extend(TabPanelControl.prototype,{setSelectedItem:function(e){ +var t=null,n=this.controlModel,i=this.controlView.childElements,o=n.get("items");if(e instanceof TabPage)n.set("selectedItem",e);else if(Array.isArray(i)){var r=o.indexOf(e);-1!==r&&(t=i[r]),this.controlModel.set("selectedItem",t)}},createControlModel:function(){return new TabPanelModel},createControlView:function(e){return new TabPanelView({model:e})}});var TabPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},defaults:_.defaults({headerLocation:InfinniUI.TabHeaderLocation.top,headerOrientation:InfinniUI.TabHeaderOrientation.horizontal},ContainerModel.prototype.defaults)}),TabPanelView=ContainerView.extend({className:"pl-tabpanel",template:{top:InfinniUI.Template["controls/tabPanel/template/tabPanel.top.tpl.html"],right:InfinniUI.Template["controls/tabPanel/template/tabPanel.right.tpl.html"],bottom:InfinniUI.Template["controls/tabPanel/template/tabPanel.bottom.tpl.html"],left:InfinniUI.Template["controls/tabPanel/template/tabPanel.left.tpl.html"],none:InfinniUI.Template["controls/tabPanel/template/tabPanel.none.tpl.html"]},UI:{header:".pl-tabpanel-header",content:".pl-tabpanel-content"},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:headerLocation",this.onChangeHeaderLocation),this.listenTo(this.model,"change:headerOrientation",this.updateHeaderOrientation),this.listenTo(this.model,"change:selectedItem",this.updateSelectedItem)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.renderItemsContents(),this.checkSelectedItem(),this.postrenderingActions(),this.trigger("render"),this.updateProperties(),this},renderItemsContents:function(){var e=this.model.get("items");this.removeChildElements(),this.ui.content.empty(),this.model.set("selectedItemIndex",-1);var t=[];e.forEach(function(e,n){t.push({tabElement:this.renderTabContent(e,n),item:e,index:n})},this),this.renderTabHeaders(t)},renderTabHeaders:function(e){var t,n=this.model,i=n.get("items");n.get("selectedItem");if(Array.isArray(this.tabHeaders))for(;t=this.tabHeaders.pop();)this.stopListening(t),t.remove();this.tabHeaders=e.map(function(e){var t=-1!==i.indexOf(e.item),o=this.renderTabHeader(e.tabElement,t);return this.listenTo(o,"selected",function(){n.set("selectedItem",e.tabElement)}),this.listenTo(o,"close",function(){e.tabElement.close()}),o},this)},renderTabHeader:function(e,t){var n=new TabHeaderView({text:e.getText(),canClose:e.getCanClose(),selected:t});return e.onPropertyChanged("text",function(){n.setText(e.getText())}),e.onPropertyChanged("canClose",function(){n.setCanClose(e.getCanClose())}),this.ui.header.append(n.render().$el),n},renderTabContent:function(e,t){var n=this.model.get("itemTemplate"),i=n(void 0,{item:e,index:t});return this.addChildElement(i),this.ui.content.append(i.render()),i},getTemplate:function(){var e,t=this.model.get("headerLocation");switch(t){case InfinniUI.TabHeaderLocation.top:e=this.template.top;break;case InfinniUI.TabHeaderLocation.right:e=this.template.right;break;case InfinniUI.TabHeaderLocation.bottom:e=this.template.bottom;break;case InfinniUI.TabHeaderLocation.left:e=this.template.left;break;case InfinniUI.TabHeaderLocation.none:default:e=this.template.none}return e},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateHeaderOrientation(),this.updateSelectedItem()},onChangeHeaderLocation:function(){this.rerender()},updateHeaderOrientation:function(){},checkSelectedItem:function(){var e=this.model,t=this.childElements,n=e.get("selectedItem");Array.isArray(t)&&t.length?-1===t.indexOf(n)&&e.set("selectedItem",t[0]):e.set("selectedItem",null)},updateSelectedItem:function(){if(this.wasRendered){var e=this.childElements,t=this.tabHeaders,n=this.model.get("selectedItem"),i=e.indexOf(n);Array.isArray(e)&&(e.forEach(function(e){e.setSelected(!1)}),-1!==i&&e[i].setSelected(!0)),Array.isArray(t)&&(t.forEach(function(e){e.setSelected(!1)}),-1!==i&&t[i].setSelected(!0))}},updateGrouping:function(){}}),TabHeaderModel=Backbone.Model.extend({defaults:{text:"",canClose:!1}}),TabHeaderView=Backbone.View.extend({className:"pl-tabheader",tagName:"li",template:InfinniUI.Template["controls/tabPanel/tabHeader/template/tabHeader.tpl.html"],events:{click:"onClickHandler","click .pl-close":"onClickCloseHandler"},UI:{label:".pl-tabheader-text",close:".pl-close"},initialize:function(e){this.model=new TabHeaderModel(e),this.on("rendered",this.onRenderedHandler)},render:function(){return this.$el.html(this.template),this.bindUIElements(),this.trigger("rendered"),this},setText:function(e){this.model.set("text",e)},setCanClose:function(e){this.model.set("canClose",e)},setSelected:function(e){this.model.set("selected",e)},updateProperties:function(){this.updateTextHandler(),this.updateCanClose(),this.updateSelectedHandler()},onRenderedHandler:function(){this.updateProperties(),this.listenTo(this.model,"change:text",this.updateTextHandler),this.listenTo(this.model,"change:selected",this.updateSelectedHandler),this.listenTo(this.model,"cahnge:canClose",this.updateCanClose)},updateTextHandler:function(){var e=this.model.get("text");this.ui.label.text(e)},updateCanClose:function(){var e=this.model.get("canClose");this.ui.close.toggleClass("hidden",!e)},updateSelectedHandler:function(){var e=this.model.get("selected");this.$el.toggleClass("pl-active active",e)},onClickHandler:function(e){this.trigger("selected")},onClickCloseHandler:function(e){e.stopPropagation(),this.trigger("close")}});_.extend(TabHeaderView.prototype,bindUIElementsMixin),_.inherit(TabPageControl,ContainerControl),_.extend(TabPageControl.prototype,{createControlModel:function(){return new TabPageModel},createControlView:function(e){return new TabPageView({model:e})}});var TabPageModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},defaults:_.defaults({canClose:!1,selected:!1},ContainerModel.prototype.defaults)}),TabPageView=ContainerView.extend({className:"pl-tabpage hidden",template:InfinniUI.Template["controls/tabPanel/tabPage/template/tabPage.tpl.html"],UI:{},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:selected",this.updateSelected)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateSelected()},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.renderItemsContents(),this.bindUIElements(),this.postrenderingActions(),this.trigger("render"),this.updateProperties(),this},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-tabpage-i"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateSelected:function(){var e=this.model.get("selected");this.$el.toggleClass("hidden",!e)},updateGrouping:function(){}});_.inherit(TreeViewControl,ListEditorBaseControl),_.extend(TreeViewControl.prototype,{createControlModel:function(){return new TreeViewModel},createControlView:function(e){return new TreeViewView({model:e})}});var TreeViewModel=ListEditorBaseModel.extend({initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},toggleItem:function(e,t){var n=this.valueByItem(e);this.toggleValue(n,t),this.trigger("toggle")}}),TreeViewView=ListEditorBaseView.extend({className:"pl-treeview",classNameMultiSelect:"pl-treeview_multi-select",classNameSingleSelect:"pl-treeview_single-select",template:InfinniUI.Template["controls/treeView/template/treeview.tpl.html"],events:{},UI:_.defaults({},ListEditorBaseView.prototype.UI),initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e),this.ItemsMap=new HashMap},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.renderItems(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItems:function(e){function t(e){return a.toArray().filter(function(t){var i=l(null,{value:t});return n(e)?n(i):i===e}).map(function(e){function n(t){return r.itemByValue(t)===e}var i=(new u).render(),l=i.$el,h=d(null,{value:e,index:a.indexOf(e)}).render();l.data("pl-data-item",e),i.listenTo(r,"change:selectedItem",function(t,n){i.setSelected(n===e)}),i.listenTo(r,"change:value",function(e,t){var o,r=e.get("multiSelect");o=r?Array.isArray(t)?t.some(n):!1:n(t),i.setChecked(o)}),o.listenTo(i,"select",o.onSelectNodeHandler.bind(o,e,i)),o.listenTo(i,"check",o.onCheckNodeHandler.bind(o,e,i)),i.setItemContent(h);var p=s(null,{value:e}),m=t(p);return i.setItemsContent(m),c.add(p,e),l})}function n(e){return null===e||"undefined"==typeof e}var i,o=this,r=this.model,a=r.get("items"),l=r.get("parentSelector"),s=r.get("keySelector"),u=this.getNodeConstructor(),d=r.get("itemTemplate"),c=this.ItemsMap;c.clear(),i=t(),this.$el.append(i)},getNodeConstructor:function(){var e=this.model.get("multiSelect");return e===!0?TreeViewNodeCheckbox:TreeViewNodeRadio},onSelectNodeHandler:function(e,t){var n=this.model,i=n.get("multiSelect");n.set("selectedItem",e),i||this.tryToggleValue(e)},onCheckNodeHandler:function(e,t){var n=this.model,i=n.get("multiSelect");this.tryToggleValue(e),i||n.set("selectedItem",e)},tryToggleValue:function(e){var t=this.model,n=this.isDisabledItem(e);if(!n){var i=t.valueByItem(e);t.toggleValue(i)}},isDisabledItem:function(e){return null==e?!1:this.model.isDisabledItem(e)||this.isDisabledItem(this.getParent(e))},getParent:function(e){var t=this.model.get("parentSelector"),n=t(null,{value:e});return n&&this.ItemsMap.get(n)},getTemplate:function(){return this.template},updateProperties:function(){ListEditorBaseView.prototype.updateProperties.call(this),this.updateMultiSelect()},updateMultiSelect:function(){var e=this.model.get("multiSelect");this.$el.toggleClass(this.classNameMultiSelect,!!e),this.$el.toggleClass(this.classNameSingleSelect,!e)},updateEnabled:function(){ListEditorBaseView.prototype.updateEnabled.call(this);this.model.get("enabled")},updateValue:function(){},updateSelectedItem:function(){},updateGrouping:function(){},updateDisabledItem:function(){var e=this.model,t=e.get("disabledItemCondition"),n=this.$el.find(".pl-treeview-node");n.removeClass("pl-disabled-list-item"),null!=t&&n.each(function(t,n){var i=$(n),o=i.data("pl-data-item");e.isDisabledItem(o)&&i.addClass("pl-disabled-list-item")})},rerender:function(){}}),TreeViewNodeBase=Backbone.View.extend({className:"pl-treeview-node",classNameCheckerChecked:"pl-treeview-item__checker_checked",classNameContentSelected:"pl-treeview-item__content_selected",classNameItemsExpanded:"pl-treeview-node__items_expanded",classNameItemsCollapsed:"pl-treeview-node__items_collapsed",classNameButtonCollapse:"pl-treeview-node__button_collapse",classNameButtonExpand:"pl-treeview-node__button_expand",UI:{checker:".pl-treeview-item__checker",content:".pl-treeview-item__content",items:".pl-treeview-node__items",button:".pl-treeview-node__button"},initialize:function(){var e=new Backbone.Model({collapsed:!0});this.model=e,this.listenTo(e,"change:selected",this.updateSelected),this.listenTo(e,"change:checked",this.updateChecked),this.listenTo(e,"change:collapsed",this.updateCollapsed)},updateChecked:function(){var e=this.model.get("checked");this.ui.checker.toggleClass(this.classNameCheckerChecked,e===!0)},updateSelected:function(){var e=this.model.get("selected");this.ui.content.toggleClass(this.classNameContentSelected,e===!0)},updateCollapsed:function(){var e=!!this.model.get("collapsed");this.ui.items.toggleClass(this.classNameItemsExpanded,!e),this.ui.items.toggleClass(this.classNameItemsCollapsed,e),this.ui.button.toggleClass(this.classNameButtonCollapse,!e),this.ui.button.toggleClass(this.classNameButtonExpand,e)},updateState:function(){this.updateCollapsed(),this.updateSelected(),this.updateChecked()},render:function(){return this.$el.html(this.template),this.bindUIElements(),this.updateState(),this.initDomEventsHandlers(),this},initDomEventsHandlers:function(){this.ui.button.on("click",this.onClickEventHandler.bind(this)),this.ui.content[0].addEventListener("click",this.onClickItemHandler.bind(this),!0),this.ui.checker[0].addEventListener("click",this.onClickCheckHandler.bind(this),!0)},onClickItemHandler:function(e){this.trigger("select")},onClickCheckHandler:function(e){this.trigger("check")},toggle:function(){var e=this.model,t=e.get("collapsed");this.model.set("collapsed",!t)},setItemContent:function(e){this.ui.content.empty(),this.ui.content.append(e)},setItemsContent:function(e){this.ui.items.empty(),this.ui.items.append(e)},onClickEventHandler:function(e){this.toggle()},setSelected:function(e){this.model.set("selected",e)},setChecked:function(e){this.model.set("checked",e)}});_.extend(TreeViewNodeBase.prototype,bindUIElementsMixin);var TreeViewNodeCheckbox=TreeViewNodeBase.extend({template:InfinniUI.Template["controls/treeView/template/node-checkbox.tpl.html"]}),TreeViewNodeRadio=TreeViewNodeBase.extend({template:InfinniUI.Template["controls/treeView/template/node-radio.tpl.html"]});_.inherit(CheckBoxControl,Control),_.extend(CheckBoxControl.prototype,{createControlModel:function(){return new CheckBoxModel},createControlView:function(e){return new CheckBoxView({model:e})}},editorBaseControlMixin);var CheckBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({value:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),CheckBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{template:InfinniUI.Template["controls/checkBox/template/checkBox.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{text:".checkbox-label",input:"input"}),events:{"click input":"onClickHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this)},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.input.removeAttr("tabindex"):this.ui.input.attr("tabindex",-1)},updateText:function(){var e=this.model.get("text");this.ui.text.text(e?e:"")},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},onClickHandler:function(){var e=this.model,t=e.get("enabled");t&&e.set("value",!e.get("value"))},updateValue:function(){var e=this.model.get("value");this.ui.input.prop("checked",!!e)},setFocus:function(){this.ui.input.focus()}}));_.inherit(ComboBoxControl,ListEditorBaseControl),_.extend(ComboBoxControl.prototype,{createControlModel:function(){return new ComboBoxModel},createControlView:function(e){return new ComboBoxView({model:e})}});var ComboBoxModel=ListEditorBaseModel.extend({defaults:_.defaults({showClear:!0,autocomplete:!1,autocompleteValue:"",valueTemplate:function(e,t){return{render:function(){return t.value}}}},ListEditorBaseModel.prototype.defaults),initialize:function(){ListEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.on("change:value",this.syncSelectedItem)},setSelectedItemToValue:function(){var e=this.get("autocomplete"),t=this.get("multiSelect");if(!e&&!t){var n=this.getSelectedItem(),i=this.valueByItem(n);this.set("value",i)}},syncSelectedItem:function(e,t){var n=this.itemByValue(t);this.setSelectedItem(n)},getSelectedItem:function(){var e=this.get("selectedItem");return e},setSelectedItem:function(e){this.set("selectedItem",e)},selectNextItem:function(){var e=this.get("items"),t=this.getSelectedItem();if(e.length>0){var n=0;t&&(n=e.indexOf(t),n=-1===n?0:Math.min(e.length-1,n+1)),t=e.getByIndex(n)}else t=null;this.setSelectedItem(t),this.setSelectedItemToValue()},selectPrevItem:function(){var e=this.get("items"),t=this.getSelectedItem();if(e.length>0){var n=0;t&&(n=e.indexOf(t),n=-1===n?0:Math.max(0,n-1)),t=e.getByIndex(n)}this.setSelectedItem(t),this.setSelectedItemToValue()},selectFirstItem:function(){var e=this.get("items"),t=null;e.length>0&&(t=e.getByIndex(0)),this.setSelectedItem(t),this.setSelectedItemToValue()},selectLastItem:function(){var e=this.get("items"),t=null;e.length>0&&(t=e.getByIndex(e.length-1)),this.setSelectedItem(t),this.setSelectedItemToValue()},toggleItem:function(e,t){var n=this.valueByItem(e);this.toggleValue(n,t),this.trigger("toggle")}}),ComboBoxView=ListEditorBaseView.extend({className:"pl-combobox form-group",template:InfinniUI.Template["controls/comboBox/template/combobox.tpl.html"],events:{"click .pl-combobox__grip":"onClickGripHandler","click .pl-combobox__value":"onClickValueHandler","click .pl-combobox__clear":"onClickClearHandler","click .pl-control":"onClickValueHandler","keydown .pl-control":"onKeyDownControlHandler"},UI:_.defaults({control:".pl-control",label:".pl-control-label",value:".pl-combobox__value",clear:".pl-combobox__clear"},ListEditorBaseView.prototype.UI),isControlElement:function(e){var t=ListEditorBaseView.prototype.isControlElement.call(this,e);return t?t:this.dropDownView?$.contains(this.dropDownView.el,e):!1},updateFocusable:function(){var e=this.model.get("focusable"),t=this.model.get("enabled");e&&t?this.ui.control.attr("tabindex",0):this.ui.control.removeAttr("tabindex")},initialize:function(e){ListEditorBaseView.prototype.initialize.call(this,e);var t=this.model,n=this;this.on("render",function(){n.renderValue(),t.on("change:dropdown",function(e,t){if(t){e.set("autocompleteValue",""),e.set("focused",!0),n.dropDownView&&n.dropDownView.remove();var i=new ComboBoxDropdownView({model:e});n.dropDownView=i,this.listenTo(i,"search",_.debounce(n.onSearchValueHandler.bind(n),300));var o=i.render();$("body").append(o),i.updatePosition(n.el),n.dropDownView.on("itemsRendered2",function(){i.updatePosition(n.el)}),e.get("autocomplete")?i.setSearchFocus():n.ui.control.focus(),setTimeout(i.ensureVisibleSelectedItem.bind(i),0)}else n.ui.control.focus()}),t.onValueChanged(this.onChangeValueHandler.bind(this))},this)},initHandlersForProperties:function(){ListEditorBaseView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:showClear",this.updateShowClear),this.listenTo(this.model,"change:labelText",this.updateLabelText)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getTemplate:function(){return this.template},onKeyDownControlHandler:function(e){var t=this.model.get("enabled");if(!t)return void e.preventDefault();if(!e.ctrlKey&&!e.altKey){if(this.isDropdown())return this.dropDownView.onKeyDownHandler.call(this.dropDownView,e);switch(e.which){case 40:case 13:e.preventDefault(),this.toggleDropdown()}}},onClickClearHandler:function(){var e=this.model.get("enabled");e&&(this.model.set("value",null),this.ui.control.focus())},onClickGripHandler:function(){var e=this.model.get("enabled");e&&this.toggleDropdown()},updateProperties:function(){ListEditorBaseView.prototype.updateProperties.call(this),this.updateLabelText(),this.updateShowClear()},updateGrouping:function(){this.toggleDropdown(!1)},updateLabelText:function(){var e=this.model.get("labelText");e&&""!==e?this.ui.label.toggleClass("hidden",!1):this.ui.label.toggleClass("hidden",!0),this.ui.label.text(e)},updateEnabled:function(){ListEditorBaseView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");e?this.updateFocusable():this.ui.control.removeAttr("tabindex")},updateValue:function(){this.updateShowClear()},updateShowClear:function(){var e=this.model,t=e.get("showClear"),n=e.get("value"),i=null===n||"undefined"==typeof n;this.ui.clear.toggleClass("hidden",!t||i)},updateSelectedItem:function(){},updateDisabledItem:function(){this.toggleDropdown(!1)},isDropdown:function(){var e=this.model;return!!e.get("dropdown")},toggleDropdown:function(e){var t=this.model;"undefined"==typeof e&&(e=!t.get("dropdown")),t.set("dropdown",e)},onChangeValueHandler:function(){this.renderValue()},rerender:function(){},renderValue:function(){var e=this.model,t=e.get("multiSelect"),n=this.model.get("value"),i=[],o=this.model.get("valueTemplate");if(t&&Array.isArray(n)){var r=new ComboBoxValues({items:n.map(function(e,t){return{$value:o(null,{value:e,index:t}).render(),value:e,index:t}})});r.listenTo(e,"toggle",r.setFocus),this.listenTo(r,"remove",this.onRemoveValueHandler),this.listenTo(r,"search",_.debounce(this.onSearchValueHandler.bind(this),300)),i=r.render()}else i=o(null,{value:n}).render();this.ui.value.empty(),this.ui.value.append(i),editorBaseViewMixin.updateValueState.call(this)},onRemoveValueHandler:function(e){this.model.toggleValue(e,!1)},onSearchValueHandler:function(e){this.toggleDropdown(!0),this.model.set("autocompleteValue",e)},onClickValueHandler:function(e){var t=this.model.get("enabled");t&&this.toggleDropdown(!0)}});_.inherit(ContextMenuControl,ContainerControl),_.extend(ContextMenuControl.prototype,{createControlModel:function(){return new ContextMenuModel},createControlView:function(e){return new ContextMenuView({model:e})}});var ContextMenuModel=ContainerModel.extend({}),ContextMenuView=ContainerView.extend({contextMenuTemplate:InfinniUI.Template["controls/contextMenu/template/contextMenu.tpl.html"],updateHorizontalAlignment:function(){var e,t=this.model.get("horizontalAlignment"),n=this;this.whenReady(function(){return e=n.$el.parent().parent(),e.length>0},function(){"Right"==t?e.addClass("pull-right"):e.removeClass("pull-right")})},render:function(){var e=window.InfinniUI.global.messageBus,t=this;return this.prerenderingActions(),this.removeChildElements(),this.$el=this.renderDropdown(),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),e.subscribe(messageTypes.onOpenContextMenu.name,function(e,n){t.open(n.value)}),this},renderDropdown:function(){var e=this.contextMenuTemplate,t=this.model.get("items").toArray(),n=$(e({items:t}));return this.appendItemsContent(n,t),n.on("click",function(){this.close()}.bind(this)),n.on("contextmenu",function(e){e.preventDefault()}.bind(this)),n},appendItemsContent:function(e,t){var n,i,o=this,r=this.model.get("itemTemplate");e.find(".pl-popup-button__item").each(function(e,a){i=$(a),n=r(void 0,{index:e,item:t[e]}),o.addChildElement(n),i.append(n.render())})},open:function(e){var t=this;$("body").append(this.$el);var n=this.$el.parent();this.$el.addClass("open"),n.addClass("open"),this.alignDropdown(e);var i=this.$el;new ActionOnLoseFocus(i,function(){t.close()})},close:function(){this.$el.removeClass("open"),this.$el.parent().removeClass("open"),this.$el.detach()},alignDropdown:function(e){var t=(this.model.get("horizontalAlignment"),this.$el.parent()),n={width:t.width(),height:t.height()},i={width:this.$el[0].children[0].clientWidth,height:this.$el[0].children[0].clientHeight};e.x+i.width>n.width&&(e.x-=i.width),e.y+i.height>n.height&&(e.y-=i.height),this.$el.offset({top:e.y,left:e.x})},updateGrouping:function(){},whenReady:function(e,t,n){var i=this;void 0===n&&(n=100),e()?t():n>0&&setTimeout(function(){i.whenReady(e,t,n-1)},10)}}),ExtensionPanelControl=function(){_.superClass(ExtensionPanelControl,this)};_.inherit(ExtensionPanelControl,ContainerControl),_.extend(ExtensionPanelControl.prototype,{createControlModel:function(){return new ExtensionPanelModel},createControlView:function(e){return new ExtensionPanelView({model:e})}});var ExtensionPanelModel=ContainerModel.extend({defaults:_.defaults({extensionName:null,context:null},ContainerModel.prototype.defaults),initialize:function(){ContainerModel.prototype.initialize.apply(this)}}),ExtensionPanelView=ContainerView.extend({className:"pl-extension-panel",initialize:function(){ContainerView.prototype.initialize.apply(this),this.extensionObject=null},render:function(){return this.prerenderingActions(),this.extensionObject||this.initExtensionObject(),this.extensionObject.render(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},updateGrouping:function(){},initExtensionObject:function(){var e=this.model.get("extensionName"),t=this.model.get("context"),n=this.model.get("itemTemplate"),i=this.model.get("parameters"),o=this.model.get("items"),r=this.model.get("builder");this.extensionObject=new window[e](t,{$el:this.$el,parameters:i,itemTemplate:n,items:o,builder:r})}});_.inherit(FileBoxControl,Control),_.extend(FileBoxControl.prototype,{createControlModel:function(){return new FileBoxModel},createControlView:function(e){return new FileBoxView({model:e})}},editorBaseControlMixin);var FileBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel(),this.set("acceptTypes",new Collection),this.on("change:file",this.onChangeFileHandler),this.on("change:value",function(e,t){t instanceof File&&e.set("fileName",t.name)}),this.on("invalid",function(e,t){this.set("errorText",t)})},validate:function(e,t){var n=e.file,i=this.get("maxSize"),o=this.get("acceptTypes");if(n){if(i&&n.size>i)return localized.strings.FileBox.fileSizeTooBig.replace(/\{chosen-size\}/g,(n.size/1048576).toFixed(1)).replace(/\{permitted-size\}/g,(i/1048576).toFixed(1));if(o.length){var r=o.contains(n.type),a=n.name.toLowerCase();if(!r)var l=a.length,r=o.some(function(e){return a.lastIndexOf(e.toLowerCase())===l-e.length});if(!r)return localized.strings.FileBox.incorrectFormat}}},setFile:function(e){this.set("file",e,{validate:!0})&&this.set("errorText","")},removeFile:function(){this.setFile(null)},onChangeFileHandler:function(e,t){t?(e.set("fileName",t.name),e.set("fileSize",t.size)):(e.set("fileName",null),e.set("fileSize",null)),e.set("value",t)}},editorBaseModelMixin)),FileBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{template:InfinniUI.Template["controls/fileBox/template/template.tpl.html"],className:"pl-file-box",UI:_.extend({},editorBaseViewMixin.UI,{label:".pl-control-label",btnRemove:".pl-filebox-btn-remove",btnPick:".pl-filebox-btn-pick",fileEmpty:".pl-filebox-file-empty",fileUpload:".pl-filebox-file-upload",fileDownload:".pl-filebox-file-download",fileDownloadUrl:".pl-filebox-file-download-url",edit:".pl-filebox-edit",control:".form-control",input:"input"}),events:{"change input":"onChangeFileHandler","click .pl-filebox-btn-remove":"onClickRemoveImageHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:labelText",this.updateLabelText),this.listenTo(this.model,"change:fileName",this.updateFileName),this.listenTo(this.model,"change:fileSize",this.updateFileSize),this.listenTo(this.model,"change:fileTime",this.updateFileTime),this.listenTo(this.model,"change:fileType",this.updateFileType),this.listenTo(this.model,"change:value",this.updateValue),this.listenTo(this.model,"change:hintText",this.updateHintText),this.listenTo(this.model,"change:errorText",this.updateErrorText),this.listenTo(this.model,"change:warningText",this.updateWarningText),this.listenTo(this.model,"invalid",this.onInvalidHandler);var e=this.model.get("acceptTypes");e.onChange(this.updateAcceptTypes.bind(this))},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateLabelText(),this.updateFileName(),this.updateFileSize(),this.updateFileType(),this.updateFileTime(),this.updateAcceptTypes(),this.updateValue(),this.updateHintText(),this.updateErrorText(),this.updateWarningText()},updateLabelText:function(){var e=this.model.get("labelText");""!=e?this.ui.label.css({display:"inline-block"}).text(e):this.ui.label.css({display:"none"})},updateAcceptTypes:function(){var e=this.model.get("acceptTypes");if(0===e.length)this.ui.input.removeAttr("accept");else{var t=e.toArray().join(",");this.ui.input.attr("accept",t)}},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.control.attr("tabindex",0):this.ui.control.removeAttr("tabindex")},updateText:function(){var e=this.model.get("text");this.ui.btnPick.attr("title",e)},updateHintText:function(){var e=this.model.get("hintText");e?this.ui.hintText.text(e).removeClass("hidden"):this.ui.hintText.text("").addClass("hidden")},updateErrorText:function(){var e=this.model.get("errorText");e?this.ui.errorText.text(e).removeClass("hidden"):this.ui.errorText.text("").addClass("hidden")},updateWarningText:function(){var e=this.model.get("warningText");e?this.ui.warningText.text(e).removeClass("hidden"):this.ui.warningText.text("").addClass("hidden")},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e),this.ui.btnRemove.prop("disabled",!e),this.ui.btnPick.toggleClass("disabled",!e)},updateFileName:function(){var e=this.model.get("fileName");this.ui.fileUpload.text(e),this.ui.fileDownloadUrl.text(e)},updateFileSize:function(){},updateFileInfo:function(){return},updateFileTime:function(){this.model.get("fileTime")},updateFileType:function(){this.model.get("fileType")},updateValue:function(){var e=this.model,t=e.get("value"),n=!1,i=!1,o=!1;null===t||"undefined"==typeof t?(n=null===t||"undefined"==typeof t,this.ui.input.val(null),this.updateUrl(null)):t&&"object"==typeof t?(i=t&&"object"==typeof t,this.updateUrl(null)):(o=!0,this.updateUrl(t)),this.ui.fileEmpty.toggleClass("hidden",!n),this.ui.fileUpload.toggleClass("hidden",!i),this.ui.fileDownload.toggleClass("hidden",!o),this.ui.btnRemove.toggleClass("hidden",n),this.ui.btnPick.toggleClass("hidden",!n)},updateUrl:function(e){this.ui.fileDownloadUrl.attr("href",e);var t=null===e||"undefined"==typeof e;this.$el.toggleClass("pl-empty",t),this.updateFileInfo()},onClickRemoveImageHandler:function(){this.model.removeFile(),this.ui.input.val("")},onChangeFileHandler:function(){var e=null,t=this.ui.input[0].files;t&&t[0]&&(e=t[0]),this.model.setFile(e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},onInvalidHandler:function(){this.ui.input.val(null)}}));_.inherit(FormControl,StackPanelControl),_.extend(FormControl.prototype,{createControlModel:function(){return new FormModel},createControlView:function(e){return new FormView({model:e})},onSubmit:function(e){this.controlView.$el.on("submit",e)},setSubmitFunction:function(e){this.controlModel.set("submitFunction",e)},getSubmitFunction:function(){return this.controlModel.get("submitFunction")},setMethod:function(e){this.controlModel.set("method",e)},getMethod:function(){return this.controlModel.get("method")},setAction:function(e){this.controlModel.set("action",e)},getAction:function(){return this.controlModel.get("action")}});var FormModel=StackPanelModel.extend({defaults:_.defaults({submitFunction:null,method:"",action:""},StackPanelModel.prototype.defaults)}),FormView=StackPanelView.extend({className:"pl-form",tagName:"form",template:{plain:InfinniUI.Template["controls/form/template/form.tpl.html"]},events:{submit:"onSubmit"},onSubmit:function(e){e.preventDefault()},initialize:function(e){StackPanelView.prototype.initialize.call(this,e),this.listenTo(this.model,"change:method",this.updateMethod),this.listenTo(this.model,"change:action",this.updateAction)},updateGrouping:function(){this.strategy=new StackPanelViewPlainStrategy(this); +},render:function(){this.prerenderingActions(),this.removeChildElements();var e=this.strategy.prepareItemsForRendering(),t=this.strategy.getTemplate();return this.$el.html(t(e)),this.strategy.appendItemsContent(e,".pl-form-i"),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},updateProperties:function(){StackPanelView.prototype.updateProperties.call(this),this.updateMethod(),this.updateAction()},updateMethod:function(){var e=this.model.get("method");this.$el.attr("method",e)},updateAction:function(){var e=this.model.get("action");this.$el.attr("action",e)}});_.inherit(DividerControl,Control),_.extend(DividerControl.prototype,{createControlModel:function(){return new DividerModel},createControlView:function(e){return new DividerView({model:e})}});var DividerModel=ControlModel.extend({initialize:function(){ControlModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),DividerView=ControlView.extend({tagName:"hr",className:"pl-divider",initialize:function(e){ControlView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this}}),FrameControl=function(){_.superClass(FrameControl,this),this.initialize_editorBaseControl()};_.inherit(FrameControl,Control),_.extend(FrameControl.prototype,{createControlModel:function(){return new FrameModel},createControlView:function(e){return new FrameView({model:e})}},editorBaseControlMixin);var FrameModel=ControlModel.extend(_.extend({defaults:_.defaults({},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),FrameView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-frame",template:InfinniUI.Template["controls/frame/template/frame.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{iframe:"iframe"}),initialize:function(){ControlView.prototype.initialize.apply(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this)},updateValue:function(){var e=this.model.get("value");this.ui.iframe.attr("src",e)},getData:function(){return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{})},render:function(){this.model;return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this}}));_.inherit(GridPanelControl,ContainerControl),_.extend(GridPanelControl.prototype,{createControlModel:function(){return new GridPanelModel},createControlView:function(e){return new GridPanelView({model:e})}});var GridPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),GridPanelView=ContainerView.extend({className:"pl-grid-panel pl-clearfix",columnCount:12,template:{row:InfinniUI.Template["controls/gridPanel/template/row.tpl.html"]},initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this.model.get("items"),n=this.model.get("itemTemplate"),i=this,o=[],r=0;t.forEach(function(t,a){e=n(void 0,{item:t,index:a});var l=e.getColumnSpan();r+l>i.columnCount&&(i.renderRow(o),o.length=0,r=0),o.push(e),r+=l}),o.length&&i.renderRow(o)},renderRow:function(e){var t=this,n=$(this.template.row());n.append(e.map(function(e){return t.addChildElement(e),e.render()})),this.$el.append(n)},updateGrouping:function(){}});_.inherit(ImageBoxControl,Control),_.extend(ImageBoxControl.prototype,{createControlModel:function(){return new ImageBoxModel},createControlView:function(e){return new ImageBoxView({model:e})}},editorBaseControlMixin);var ImageBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({text:localized.strings.ImageBox.chooseImage},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel(),this.set("acceptTypes",new Collection),this.on("change:file",this.onChangeFileHandler),this.on("invalid",function(e,t){this.set("errorText",t)})},validate:function(e,t){var n=e.file,i=this.get("maxSize"),o=this.get("acceptTypes");if(n){if(i&&n.size>i)return localized.strings.ImageBox.imageSizeTooBig.replace(/\{chosen-size\}/g,(n.size/1048576).toFixed(1)).replace(/\{permitted-size\}/g,(i/1048576).toFixed(1));if(o.length&&!o.contains(n.type))return localized.strings.ImageBox.incorrectFormat}},setFile:function(e){this.set("file",e,{validate:!0})&&this.set("errorText","")},removeFile:function(){this.setFile(null)},onChangeFileHandler:function(e,t){}},editorBaseModelMixin)),ImageBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-imagebox",template:InfinniUI.Template["controls/imageBox/template/imageBox.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{input:"input",img:"img",file:".pl-image-file",remove:".pl-image-remove",uploadButton:".pl-image-file-upload-button"}),events:{"change input":"onChangeFileHandler","click .pl-image-remove":"onClickRemoveImageHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:value",this.updateValue),this.listenTo(this.model,"change:hintText",this.updateHintText),this.listenTo(this.model,"change:errorText",this.updateErrorText),this.listenTo(this.model,"change:warningText",this.updateWarningText)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateValue(),this.updateHintText(),this.updateErrorText(),this.updateWarningText()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.file.attr("tabindex",0):this.ui.file.removeAttr("tabindex")},updateText:function(){var e=this.model.get("text");this.ui.uploadButton.text(e)},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e)},updateValue:function(){var e=this.model,t=e.get("value");if(t&&"object"==typeof t){this.stopLoadingFile();var n=this.loadPreview(t);this.fileLoader=n,n.then(function(e,t){this.updateUrl(t)}.bind(this),function(e){console.log(e)})}else this.updateUrl(t)},updateUrl:function(e){this.ui.img.attr("src",e);var t=null===e||"undefined"==typeof e;this.$el.toggleClass("pl-empty",t)},stopLoadingFile:function(){var e=this.fileLoader;e&&"pending"===e.state()&&e.reject()},loadPreview:function(e){var t=$.Deferred(),n=new FileReader;return n.onload=function(e){return function(n){t.resolve(e,n.target.result)}}(e),n.onerror=function(e){t.reject(e)},n.readAsDataURL(e),t.promise()},onClickRemoveImageHandler:function(){this.model.removeFile(),this.ui.input.val("")},onChangeFileHandler:function(){var e=null,t=this.ui.input[0].files;t&&t[0]&&(e=t[0]),this.model.setFile(e)},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this}}));_.inherit(IndeterminateCheckBoxControl,CheckBoxControl),_.extend(IndeterminateCheckBoxControl.prototype,{createControlModel:function(){return new IndeterminateCheckBoxModel},createControlView:function(e){return new IndeterminateCheckBoxView({model:e})}},editorBaseControlMixin);var IndeterminateCheckBoxModel=CheckBoxModel.extend({defaults:_.defaults({value:"unchecked"},CheckBoxModel.prototype.defaults)}),IndeterminateCheckBoxView=CheckBoxView.extend({className:"pl-indeterminate-checkbox",onClickHandler:function(){var e=this.model,t=e.get("enabled");if(t){var n=e.get("value");n="indeterminate"===n?"unchecked":"unchecked"===n?"checked":"unchecked",e.set("value",n)}},updateValue:function(){var e=this.model.get("value");"checked"===e?(this.ui.input.prop("indeterminate",!1),this.ui.input.prop("checked",!0)):"unchecked"===e?(this.ui.input.prop("indeterminate",!1),this.ui.input.prop("checked",!1)):"indeterminate"===e&&(this.ui.input.prop("checked",!1),this.ui.input.prop("indeterminate",!0))}});_.inherit(IconControl,Control),_.extend(IconControl.prototype,{createControlModel:function(){return new IconModel},createControlView:function(e){return new IconView({model:e})}});var IconModel=ControlModel.extend({defaults:_.defaults({value:null,focusable:!1},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments)}}),IconView=ControlView.extend({className:"pl-icon fa",tagName:"i",render:function(){return this.prerenderingActions(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderIcon:function(){var e=this.model.get("value");this.switchClass("fa",e)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:value",this.updateValue)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),this.updateValue()},updateFocusable:function(){var e=this.model.get("focusable");e?this.$el.attr("tabindex",0):this.$el.removeAttr("tabindex")},updateValue:function(){this.renderIcon()}});!function(){var e=InfinniUI.Template["controls/loaderIndicator/template.tpl.html"];InfinniUI.loaderIndicator={show:function(){$.blockUI({message:$(e()),ignoreIfBlocked:!0,baseZ:99999})},hide:function(){$.unblockUI()}},InfinniUI.config.useLoaderIndicator&&jQuery(function(){var t=$(e());$("body").append(t),$.blockUI.defaults.css={},$(document).ajaxStart(function(){$.blockUI({message:t,ignoreIfBlocked:!0,baseZ:99999})}).ajaxStop(function(){$.unblockUI()}).ajaxError(function(){$.unblockUI()})})}(),_.inherit(MenuBarControl,ContainerControl),_.extend(MenuBarControl.prototype,{createControlModel:function(){return new MenuBarModel},createControlView:function(e){return new MenuBarView({model:e})}});var MenuBarModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))}}),MenuBarView=ContainerView.extend({tagName:"nav",className:"pl-menu-bar navbar navbar-default",template:InfinniUI.Template["controls/menuBar/template/menuBar.tpl.html"],UI:{},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.renderItemsContents(),this.bindUIElements(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-menu-bar-item"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateGrouping:function(){}});_.inherit(LinkElementControl,ButtonControl),_.extend(LinkElementControl.prototype,{createControlModel:function(){return new LinkElementModel},createControlView:function(e){return new LinkElementView({model:e})}});var LinkElementModel=ButtonModel.extend({defaults:_.defaults({href:"javascript:;",target:"self"},ButtonModel.prototype.defaults),initialize:function(){ButtonModel.prototype.initialize.apply(this,arguments)}}),LinkElementView=CommonButtonView.extend({tagName:"a",className:"pl-link",events:{click:"onClickHandler"},template:function(){return""},updateProperties:function(){CommonButtonView.prototype.updateProperties.call(this),this.updateHref(),this.updateTarget()},getButtonElement:function(){return this.$el},initHandlersForProperties:function(){CommonButtonView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:href",this.updateHref),this.listenTo(this.model,"change:target",this.updateTarget)},updateHref:function(){var e=this.model.get("href"),t=this.getButtonElement();t.attr("href",e)},updateTarget:function(){var e=this.model.get("target"),t=this.getButtonElement();t.attr("target","_"+e)},onClickHandler:function(e){var t=this.model.get("href");-1===t.indexOf("http://")&&(InfinniUI.AppRouter.navigate(t,{trigger:!0}),2!==e.which&&e.preventDefault())}});_.inherit(NumericBoxControl,TextEditorBaseControl),_.extend(NumericBoxControl.prototype,{createControlModel:function(){return new NumericBoxModel},createControlView:function(e){return new NumericBoxView({model:e})}});var NumericBoxModel=TextEditorBaseModel.extend({defaults:_.defaults({increment:1,inputType:"number"},TextEditorBaseModel.prototype.defaults),incValue:function(){var e=this.get("increment");this.addToValue(e)},decValue:function(){var e=this.get("increment");this.addToValue(-e)},addToValue:function(e){var t=this.get("value"),n=this.get("startValue"),i=this.get("minValue"),o=this.get("maxValue"),r=_.isNumber(t)?t:+t;this.isSetValue(t)&&_.isNumber(t)?r+=e:r=_.isNumber(n)?n:0,_.isNumber(i)&&i>r?r=i:_.isNumber(o)&&r>o&&(r=o),this.set("value",r)},initialize:function(){TextEditorBaseModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},validateValue:function(e,t){var n=!0,i=this.get("minValue"),o=this.get("maxValue");return this.isSetValue(e)?(_.isNumber(i)&&_.isNumber(o)?(i>e||e>o)&&(n=!1):_.isNumber(i)&&i>e?n=!1:_.isNumber(o)&&e>o&&(n=!1),n):!0}}),NumericBoxView=TextEditorBaseView.extend({className:"pl-numericbox form-group",template:InfinniUI.Template["controls/numericBox/template/numericBox.tpl.html"],UI:_.extend({},TextEditorBaseView.prototype.UI,{min:".pl-numeric-box-min",max:".pl-numeric-box-max"}),events:_.extend({},TextEditorBaseView.prototype.events,{"click .pl-numeric-box-min":"onClickMinControlHandler","click .pl-numeric-box-max":"onClickMaxControlHandler","mousedown .pl-numeric-box-min":"onMousedownMinControlHandler","mousedown .pl-numeric-box-max":"onMousedownMaxControlHandler"}),render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.renderNumericBoxEditor(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=this.model;return _.extend({},TextEditorBaseView.prototype.getData.call(this),{minValue:e.get("minValue"),maxValue:e.get("maxValue"),increment:e.get("increment")})},renderNumericBoxEditor:function(){this.renderControlEditor()},onChangeEnabledHandler:function(e,t){this.ui.control.prop("disabled",!t),this.ui.min.prop("disabled",!t),this.ui.max.prop("disabled",!t)},onClickMinControlHandler:function(){this.canChangeValue()&&this.model.decValue()},onClickMaxControlHandler:function(){this.canChangeValue()&&this.model.incValue()},onMousedownMinControlHandler:function(e){this.canChangeValue()&&this.repeatUpdateValue(this.model.decValue.bind(this.model))},onMousedownMaxControlHandler:function(e){this.canChangeValue()&&this.repeatUpdateValue(this.model.incValue.bind(this.model))},repeatUpdateValue:function(e){function t(){n&&(clearInterval(n),n=null),window.document.removeEventListener("mouseup",t)}var n;window.document.addEventListener("mouseup",t),n=setInterval(e,200)},canChangeValue:function(){var e=this.model,t=e.get("enabled");return t===!0}});_.inherit(PanelControl,ContainerControl),_.extend(PanelControl.prototype,{createControlModel:function(){return new PanelModel},createControlView:function(e){return new PanelView({model:e})}});var PanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments)),this.on("change:collapsed",function(e,t){e.trigger(t?"collapsed":"expanded",null,{})})},defaults:_.defaults({collapsible:!1,collapsed:!1,collapsibleArea:""},ContainerModel.prototype.defaults),set:function(e,t,n){if(null==e)return this;var i;"object"==typeof e?(i=e,n=t):(i={})[e]=t;var o,r;if("collapsed"in i){o=this.get("collapsed"),r=i.collapsed;var a;r&&!o?a=this.set("_collapsing",!0,{validate:!1}).trigger("collapsing",null,{}).get("_collapsing"):!r&&o&&(a=this.set("_expanding",!0,{validate:!1}).trigger("expanding",null,{}).get("_expanding")),a===!1&&delete i.collapsed}return ContainerModel.prototype.set.call(this,i,n)},on:function(e,t,n){var i,o=this;switch(e){case"collapsing":i=function(){var e=t(null,{});e===!1&&o.set("_collapsing",!1)};break;case"expanding":i=function(){var e=t(null,{});e===!1&&o.set("_expanding",!1)};break;default:i=t}ContainerModel.prototype.on.call(this,e,i,n)}}),PanelView=ContainerView.extend({className:"pl-panel panel panel-default",template:InfinniUI.Template["controls/panel/template/panel.tpl.html"],UI:{header:".pl-panel-header",items:".panel-items"},events:{"click >.pl-panel-header":"onClickHeaderHandler"},initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.bindUIElements(),this.renderItemsContents(),this.trigger("render"),this.updateProperties(),this.postrenderingActions(),this},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:collapsed",this.updateCollapsed),this.listenTo(this.model,"change:collapsible",this.updateCollapsible),this.listenTo(this.model,"change:header",this.updateHeader)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateCollapsed(),this.updateCollapsible(),this.updateHeader()},updateCollapsed:function(){this.ui.header.toggleClass("pl-collapsed",this.model.get("collapsed"))},updateCollapsible:function(e,t){this.ui.header.toggleClass("pl-collapsible",this.model.get("collapsible"))},updateHeader:function(){var e=this.model;this.ui.header.empty();var t=e.get("headerTemplate");if("function"==typeof t){var n=e.get("header"),i=t(null,{value:n}).render();this.isDefaultHeader(i)?this.ui.header.hide():(this.ui.header.show(),this.ui.header.append(i))}},isDefaultHeader:function(e){var t=InfinniUI.PanelBuilder.prototype.buildDefaultHeaderTemplate()(null,{value:null}),n=t.render();return n[0].isEqualNode(e[0])},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-panel-i"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateGrouping:function(){},onEventCallback:function(){var e=this.model.get("collapsible");if(e){var t=this.model.get("collapsed");this.model.set("collapsed",!t),this.updateLayout()}},onClickHeaderHandler:function(e){var t=this.model.get("collapsibleArea");""!==t?$(e.target).closest("[data-pl-name="+t+"]").length&&this.onEventCallback():this.onEventCallback()}}),PasswordBoxControl=function(){_.superClass(PasswordBoxControl,this),this.initialize_editorBaseControl()};_.inherit(PasswordBoxControl,Control),_.extend(PasswordBoxControl.prototype,{createControlModel:function(){return new PasswordBoxModel},createControlView:function(e){return new PasswordBoxView({model:e})}},editorBaseControlMixin);var PasswordBoxModel=ControlModel.extend(_.extend({defaults:_.defaults({autocomplete:!0},editorBaseModelMixin.defaults_editorBaseModel,ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),PasswordBoxView=ControlView.extend(_.extend({},editorBaseViewMixin,{className:"pl-password-box form-group",template:{autocomplete:InfinniUI.Template["controls/passwordBox/template/passwordBox.on.tpl.html"],noautocomplete:InfinniUI.Template["controls/passwordBox/template/passwordBox.off.tpl.html"]},UI:_.extend({},editorBaseViewMixin.UI,{label:".pl-control-label",input:".pl-control"}),events:{"blur .pl-control":"onBlurHandler","input .pl-control":"onInputHandler","change .pl-control":"onChangeHandler"},initialize:function(){ControlView.prototype.initialize.apply(this)},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:labelText",this.updateLabelText),this.listenTo(this.model,"change:labelFloating",this.updateLabelFloating),this.listenTo(this.model,"change:autocomplete",this.updateAutocomplete)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateLabelText()},updateLabelText:function(){var e=this.model.get("labelText");this.ui.label.text(e)},updateAutocomplete:function(){this.rerender()},updateValue:function(){editorBaseViewMixin.updateValueState.call(this);var e=this.model.get("value");this.ui.input.val(e)},updateEnabled:function(){ControlView.prototype.updateEnabled.call(this);var e=this.model.get("enabled");this.ui.input.prop("disabled",!e)},getData:function(){return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this))},render:function(){this.model;return this.prerenderingActions(),this.renderTemplate(this.getTemplate()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},remove:function(){ControlView.prototype.remove.call(this)},getTemplate:function(){var e=this.model;return e.get("autocomplete")?this.template.autocomplete:this.template.noautocomplete},updateModelValue:function(){var e=this.ui.input.val(),t=this.model;t.set("value",e),t.set("rawValue",e)},onBlurHandler:function(){this.updateModelValue()},onChangeHandler:function(){this.updateModelValue()},onInputHandler:function(){this.updateModelValue()}}));_.inherit(ScrollPanelControl,ContainerControl),_.extend(ScrollPanelControl.prototype,{createControlModel:function(){return new ScrollPanelModel},createControlView:function(e){return new ScrollPanelView({model:e})}});var ScrollPanelModel=ContainerModel.extend({initialize:function(){ContainerModel.prototype.initialize.apply(this,Array.prototype.slice.call(arguments))},defaults:_.defaults({verticalAlignment:"Stretch",horizontalScroll:InfinniUI.ScrollVisibility.auto,verticalScroll:InfinniUI.ScrollVisibility.auto},ContainerModel.prototype.defaults)}),ScrollPanelView=ContainerView.extend({className:"pl-scrollpanel panel panel-default",template:InfinniUI.Template["controls/scrollPanel/template/scrollPanel.tpl.html"],UI:{},initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.removeChildElements(),this.$el.html(this.template({items:this.model.get("items")})),this.renderItemsContents(),this.bindUIElements(),this.postrenderingActions(),this.trigger("render"),this.updateProperties(),function(e){setTimeout(function(){e.scrollTop(0)},0)}(this.$el),this},initHandlersForProperties:function(){ContainerView.prototype.initHandlersForProperties.call(this),this.listenTo(this.model,"change:horizontalScroll",this.updateHorizontalScroll),this.listenTo(this.model,"change:verticalScroll",this.updateVerticalScroll)},updateProperties:function(){ContainerView.prototype.updateProperties.call(this),this.updateHorizontalScroll(),this.updateVerticalScroll()},updateHorizontalScroll:function(){var e="";switch(this.model.get("horizontalScroll")){case InfinniUI.ScrollVisibility.visible:e="visible";break;case InfinniUI.ScrollVisibility.hidden:e="hidden";break;case InfinniUI.ScrollVisibility.auto:default:e="auto"}this.switchClass("pl-horizontal-scroll",e,this.$el)},updateVerticalScroll:function(e,t){var n="";switch(this.model.get("verticalScroll")){case InfinniUI.ScrollVisibility.visible:n="visible";break;case InfinniUI.ScrollVisibility.hidden:n="hidden";break;case InfinniUI.ScrollVisibility.auto:default:n="auto"}this.switchClass("pl-vertical-scroll",n,this.$el)},renderItemsContents:function(){var e,t,n=this.$el.find(".pl-scrollpanel-i"),i=this.model.get("items"),o=this.model.get("itemTemplate"),r=this;n.each(function(n,a){t=i.getByIndex(n),e=o(void 0,{item:t,index:n}),r.addChildElement(e),$(a).append(e.render())})},updateGrouping:function(){}});_.inherit(ToggleButtonControl,Control),_.extend(ToggleButtonControl.prototype,{createControlModel:function(){return new ToggleButtonModel},createControlView:function(e){return new ToggleButtonView({model:e})}},editorBaseControlMixin);var ToggleButtonModel=ControlModel.extend(_.extend({defaults:_.defaults({value:!1,textOn:"ON",textOff:"OFF",horizontalAlignment:"Left"},ControlModel.prototype.defaults),initialize:function(){ControlModel.prototype.initialize.apply(this,arguments),this.initialize_editorBaseModel()}},editorBaseModelMixin)),ToggleButtonView=ControlView.extend(_.extend({},editorBaseViewMixin,{template:InfinniUI.Template["controls/toggleButton/template/toggleButton.tpl.html"],UI:_.extend({},editorBaseViewMixin.UI,{textOn:".togglebutton-handle-on",textOff:".togglebutton-handle-off",container:".togglebutton-container"}),events:{"click .togglebutton-box":"onClickHandler"},initHandlersForProperties:function(){ControlView.prototype.initHandlersForProperties.call(this),editorBaseViewMixin.initHandlersForProperties.call(this),this.listenTo(this.model,"change:textOn",this.updateTextOn),this.listenTo(this.model,"change:textOff",this.updateTextOff)},updateProperties:function(){ControlView.prototype.updateProperties.call(this),editorBaseViewMixin.updateProperties.call(this),this.updateTextOn(),this.updateTextOff()},updateFocusable:function(){var e=this.model.get("focusable");e?this.ui.container.attr("tabindex",0):this.ui.container.removeAttr("tabindex")},updateTextOn:function(){var e=this.model.get("textOn");this.ui.textOn.html(e||" ")},updateTextOff:function(){var e=this.model.get("textOff");this.ui.textOff.html(e||" ")},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},getData:function(){var e=this.model;return _.extend({},ControlView.prototype.getData.call(this),editorBaseViewMixin.getData.call(this),{textOn:e.get("textOn"),textOff:e.get("textOff")})},onClickHandler:function(e){var t=this.model;t.set("value",!t.get("value"))},updateValue:function(){var e=this.model.get("value");this.switchClass("toggle",e?"on":"off",this.$el)}}));_.inherit(ToolBarControl,ContainerControl),_.extend(ToolBarControl.prototype,{createControlModel:function(){return new ToolBarModel},createControlView:function(e){return new ToolBarView({model:e})}});var ToolBarModel=ContainerModel.extend({}),ToolBarView=ContainerView.extend({className:"pl-tool-bar",template:InfinniUI.Template["controls/toolBar/template/toolBar.tpl.html"],itemTemplate:InfinniUI.Template["controls/toolBar/template/toolBarItem.tpl.html"],UI:{container:".pl-tool-bar__container"},render:function(){return this.prerenderingActions(),this.renderTemplate(this.template),this.ui.container.append(this.renderItems()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItems:function(){var e=this.model,t=e.get("items"),n=e.get("itemTemplate");this.removeChildElements();var i=[];return t.forEach(function(e,t){var o=this.itemTemplate(),r=$(o),a=n(null,{index:t,item:e});this.addChildElement(a),r.append(a.render()),i.push(r)},this),i},updateGrouping:function(){}}),ViewPanelControl=function(){_.superClass(ViewPanelControl,this)};_.inherit(ViewPanelControl,Control),ViewPanelControl.prototype.createControlModel=function(){return new ViewPanelModel},ViewPanelControl.prototype.createControlView=function(e){return new ViewPanelView({model:e})};var ViewPanelModel=ControlModel.extend({defaults:_.defaults({layout:null},ControlModel.prototype.defaults),initialize:function(){var e=this;ControlModel.prototype.initialize.apply(this),this.once("change:layout",function(t,n){n&&n.onLoaded&&e.subscribeOnLoaded()})},subscribeOnLoaded:function(){var e=this,t=this.get("layout");t.onLoaded(function(){e.set("isLoaded",!0)})}}),ViewPanelView=ControlView.extend({className:"pl-view-panel",initialize:function(){ControlView.prototype.initialize.apply(this),this.listenTo(this.model,"change:layout",this.onChangeLayoutHandler)},onChangeLayoutHandler:function(e,t){this.$el.empty(),t&&this.$el.append(t.render())},render:function(){this.prerenderingActions();var e=this.model.get("layout");return e&&this.$el.append(e.render()),this.updateProperties(),this.trigger("render"),this.postrenderingActions(!1),this}});_.inherit(ViewControl,ContainerControl),_.extend(ViewControl.prototype,{createControlModel:function(){return new ViewModel},createControlView:function(e){return new ViewView({model:e})}});var DialogResult={none:0,accepted:1,canceled:2};window.InfinniUI.DialogResult=DialogResult;var ViewModel=ContainerModel.extend({defaults:_.defaults({dialogResult:DialogResult.none,isApplication:!1,closeButtonVisibility:!0},ContainerModel.prototype.defaults),initialize:function(){ContainerModel.prototype.initialize.apply(this),this.set("scripts",new Collection([],"name")),this.set("parameters",new Collection([],"name")),this.set("dataSources",new Collection([],"name"))}}),ViewView=ContainerView.extend({className:"pl-view",initialize:function(e){ContainerView.prototype.initialize.call(this,e)},render:function(){return this.prerenderingActions(),this.$el.empty(),this.renderItemsContents(),this.updateProperties(),this.trigger("render"),this.postrenderingActions(),this},renderItemsContents:function(){var e,t=this,n=this.model.get("items"),i=this.model.get("itemTemplate");n.forEach(function(n,o){e=i(void 0,{item:n,index:o}),e&&t.$el.append(e.render())})},updateGrouping:function(){}}),DataSourceValidationNotifierMixin={initNotifyValidation:function(e){e.onErrorValidator(this.notifyOnValidationError.bind(this))},notifyOnValidationError:function(e,t){var n=t.value;"undefined"!=typeof n&&null!==n&&!n.IsValid&&Array.isArray(n.Items)&&n.Items.forEach(function(e){var t=window.InfinniUI.global.messageBus;t.send(messageTypes.onNotifyUser,{item:e,messageText:e.Message,messageType:"error"})})}},BaseDataSource=Backbone.Model.extend({defaults:{name:null,idProperty:"_id",identifyingMode:"byId",view:null,isDataReady:!1,dataProvider:null,model:null,modifiedItems:{},itemsById:{},fillCreatedItem:!0,suspendingList:null,waitingOnUpdateItemsHandlers:null,errorValidator:null,isRequestInProcess:!1,isLazy:!0,isWaiting:!1,resolvePriority:0,newItemsHandler:null,isNumRegEx:/^\d/},initialize:function(){var e=this.get("view"),t={items:null,selectedItem:null};if(this.initDataProvider(),!e)throw"BaseDataSource.initialize: При создании объекта не была задана view.";this.set("suspendingList",[]),this.set("waitingOnUpdateItemsHandlers",[]),this.set("model",new TreeModel(e.getContext(),this,t)),_.extend(this,BaseDataSource.identifyingStrategy.byId)},initDataProvider:function(){throw"BaseDataSource.initDataProvider В потомке BaseDataSource не задан провайдер данных."},onPropertyChanged:function(e,t,n){"function"==typeof e&&(n=t,t=e,e="*"),e="."==e.charAt(0)?e.substr(1):""==e?"items":"items."+e,this.get("model").onPropertyChanged(e,function(e,n){var i=n.property;i="items."==i.substr(0,6)?i.substr(6):"items"==i?"":"."+i,n.property=i,t(e,n)},n)},onSelectedItemChanged:function(e,t){var n=this;this.get("model").onPropertyChanged("selectedItem",function(t,i){var o=n._getArgumentTemplate();o.value=i.newValue,e(t,o)},t)},onErrorValidator:function(e){this.on("onErrorValidator",e)},onItemSaved:function(e){this.on("onItemSaved",e)},onItemCreated:function(e){this.on("onItemCreated",e)},onItemsUpdated:function(e){this.on("onItemsUpdated",e)},onItemsUpdatedOnce:function(e){this.once("onItemsUpdated",e)},onItemDeleted:function(e){this.on("onItemDeleted",e)},onProviderError:function(e){this.on("onProviderError",e)},getName:function(){return this.get("name")},setName:function(e){this.set("name",e),this.name=e},getView:function(){ +return this.get("view")},getProperty:function(e){var t,n=e.charAt(0);if(this.get("isNumRegEx").test(n))e="items."+e;else if(""==n)e="items";else if("$"==n){if(t=this._indexOfSelectedItem(),-1==t)return;e="items."+t+e.substr(1)}else if("."==n)e=e.substr(1);else{if(t=this._indexOfSelectedItem(),-1==t)return;e="items."+t+"."+e}return this.get("model").getProperty(e)},setProperty:function(e,t){var n,i,o,r=e.split(".");if("$"==r[0]){if(i=this._indexOfSelectedItem(),-1==i)return;e=i+e.substr(1),r[0]=i.toString()}if(n=e.charAt(0),1==r.length)if(""==r[0])this._setItems(t);else if(this.get("isNumRegEx").test(r[0]))this._changeItem(r[0],t);else{if(i=this._indexOfSelectedItem(),-1==i)return;e="items."+i+"."+e,o=this.get("model").setProperty(e,t),o&&this._includeItemToModifiedSetByIndex(i)}else if("."==n)e=e.substr(1),this.get("model").setProperty(e,t);else if(this.get("isNumRegEx").test(n))e="items."+e,o=this.get("model").setProperty(e,t),o&&this._includeItemToModifiedSetByIndex(parseInt(r[0]));else{if(i=this._indexOfSelectedItem(),-1==i)return;e="items."+i+"."+e,o=this.get("model").setProperty(e,t),o&&this._includeItemToModifiedSetByIndex(i)}},_setItems:function(e){this._detectIdentifyingMode(e);var t;this.set("isDataReady",!0),this.get("model").setProperty("items",e),this._clearModifiedSet(),e&&e.length>0?(t=this._indexItemsById(e),this.set("itemsById",t),this._restoreSelectedItem()||this.setSelectedItem(e[0])):this.setSelectedItem(null)},_restoreSelectedItem:function(){var e=window.InfinniUI.global.logger;e.warn({message:"BaseDataSource._restoreSelectedItem: not overrided by strategy",source:this})},getSelectedItem:function(){return this.get("model").getProperty("selectedItem")},setSelectedItem:function(e,t,n){var i=window.InfinniUI.global.logger;i.warn({message:"BaseDataSource.setSelectedItem: not overrided by strategy",source:this})},_notifyAboutSelectedItem:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,t&&t(n,i)},_tuneMirroringOfModel:function(e){-1!=e?this.get("model").setMirroring("items.$","items."+e):this.get("model").setMirroring(null,null)},getIdProperty:function(){return this.get("idProperty")},setIdProperty:function(e){this.set("idProperty",e)},getFillCreatedItem:function(){return this.get("fillCreatedItem")},setFillCreatedItem:function(e){this.set("fillCreatedItem",e)},suspendUpdate:function(e){var t=e||"default",n=this.get("suspendingList");-1===n.indexOf(t)&&(n=n.slice(0),n.push(t),this.set("suspendingList",n))},resumeUpdate:function(e){var t=e||"default",n=this.get("suspendingList"),i=n.indexOf(t);-1!==i&&(n=n.slice(0),n.splice(i,1),this.set("suspendingList",n),!this.isUpdateSuspended()&&this.get("waitingOnUpdateItemsHandlers").length>0&&this.updateItems())},isUpdateSuspended:function(){var e=this.get("suspendingList");return e.length>0},isModifiedItems:function(){return this.isModified()},isModified:function(e){if(0==arguments.length)return _.size(this.get("modifiedItems"))>0;if(null===e||void 0===e)return!1;var t=this.idOfItem(e);return t in this.get("modifiedItems")},_includeItemToModifiedSetByIndex:function(e){var t;t=this.getItems()[e],this._includeItemToModifiedSet(t)},_includeItemToModifiedSet:function(e){var t=window.InfinniUI.global.logger;t.warn({message:"BaseDataSource._includeItemToModifiedSet: not overrided by strategy",source:this})},_excludeItemFromModifiedSet:function(e){var t=window.InfinniUI.global.logger;t.warn({message:"BaseDataSource._excludeItemFromModifiedSet: not overrided by strategy",source:this})},_clearModifiedSet:function(){this.set("modifiedItems",{})},_checkPropertyName:function(e){var t=!0;try{if(e&&e.length>0&&(t=e.match(/^[\$#@\d]+/)),!t)throw new Error('Wrong property name "'+e+'"')}catch(n){console.debug(n)}},_changeItem:function(e,t){var n=this.get("model").getProperty("items."+e),i=n==this.getSelectedItem(),o=this.get("idProperty"),r=this.get("itemsById");t!=n&&(this._excludeItemFromModifiedSet(n),delete r[n[o]],this.get("model").setProperty("items."+e,t),this._includeItemToModifiedSet(t),r[t[o]]=t,this.set("itemsById",r),i&&this.get("model").setProperty("selectedItem",t))},tryInitData:function(){this.get("isDataReady")||this.get("isRequestInProcess")||this.updateItems()},saveItem:function(e,t,n){var i,o=this.get("dataProvider"),r=(window.InfinniUI.global.logger,this),a=this._compensateOnErrorOfProviderHandler(n);return this.isModified(e)?(i=this.validateOnErrors(e),i.IsValid?void o.saveItem(e,function(i){if("IsValid"in i&&i.IsValid!==!0){var o=r._getValidationResult(i);r._notifyAboutValidation(o,"error"),r._executeCallback(n,{item:e,result:o})}else r._excludeItemFromModifiedSet(e),r._notifyAboutItemSaved({item:e,result:i.data},"modified"),r._executeCallback(t,{item:e,result:r._getValidationResult(i)})},function(t){var n=r._getValidationResult(t);r._notifyAboutValidation(n,"error"),r._executeCallback(a,{item:e,result:n})}):void this._executeCallback(n,{item:e,result:i})):(this._notifyAboutItemSaved({item:e,result:null},"notModified"),void r._executeCallback(t,{item:e,result:{IsValid:!0}}))},_getValidationResult:function(e){return e.data&&e.data.responseJSON&&e.data.responseJSON.Result?e.data.responseJSON.Result.ValidationResult:e.data&&e.data.Result&&e.data.Result.ValidationResult},_executeCallback:function(e,t){e&&e(this.getContext(),t)},_notifyAboutItemSaved:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,i.result=t,this.trigger("onItemSaved",n,i)},deleteItem:function(e,t,n){var i=this.get("dataProvider"),o=this,r=this.idOfItem(e),a=void 0!==this.get("itemsById")[r],l=this._compensateOnErrorOfProviderHandler(n);return null==e||void 0!==r&&!a?void this._notifyAboutMissingDeletedItem(e,n):(this.beforeDeleteItem(e),void i.deleteItem(e,function(i){if("IsValid"in i&&i.IsValid!==!0){var r=o._getValidationResult(i);o._notifyAboutValidation(r,"error"),o._executeCallback(n,{item:e,result:r})}else o._handleDeletedItem(e,t)},function(t){var n=o._getValidationResult(t);o._notifyAboutValidation(n,"error"),o._executeCallback(l,{item:e,result:n})}))},beforeDeleteItem:function(e){},_handleDeletedItem:function(e,t){var n=window.InfinniUI.global.logger;n.warn({message:"BaseDataSource._handleDeletedItem: not overrided by strategy",source:this})},_notifyAboutItemDeleted:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,t&&t(n,i),this.trigger("onItemDeleted",n,i)},_notifyAboutMissingDeletedItem:function(e,t){var n=this.getContext(),i=this._getArgumentTemplate();i.value=e,i.error={message:"Нельзя удалить элемент, которого нет текущем наборе источника данных"},t&&t(n,i)},isDataReady:function(){return this.get("isDataReady")},getItems:function(){var e=window.InfinniUI.global.logger;return this.isDataReady()||e.warn({message:"BaseDataSource: Попытка получить данные источника данных ("+this.get("name")+"), до того как он был проинициализирован данными",source:this}),this.get("model").getProperty("items")},updateItems:function(e,t){if(this.isUpdateSuspended()){var n=this.get("waitingOnUpdateItemsHandlers");n.push({onSuccess:e,onError:t})}else{var i=this.get("dataProvider"),o=this;this.set("isRequestInProcess",!0),i.getItems(function(t){o._handleSuccessUpdateItemsInProvider(t,e)},function(e){o._onErrorProviderUpdateItemsHandle(e,t)})}},_handleSuccessUpdateItemsInProvider:function(e,t){var n=this,i=n.get("isWaiting"),o=function(){n.set("isRequestInProcess",!1),n._handleUpdatedItemsData(e.data,t)};i?n.once("change:isWaiting",function(){o()}):o()},_onErrorProviderUpdateItemsHandle:function(e,t){var n=this.get("waitingOnUpdateItemsHandlers"),i=this.getContext();if(0==n.length&&!_.isFunction(t))return void this._compensateOnErrorOfProviderHandler(e);for(var o=0,r=n.length;r>o;o++)n[o].onError&&n[o].onError(i,e);this.set("waitingOnUpdateItemsHandlers",[]),_.isFunction(t)&&t(i,e)},_compensateOnErrorOfProviderHandler:function(){this.trigger("onProviderError",arguments)},setIsWaiting:function(e){this.set("isWaiting",e)},_handleUpdatedItemsData:function(e,t){this.get("newItemsHandler")&&(e=this.get("newItemsHandler")(e)),this.setProperty("",e),this._notifyAboutItemsUpdated(e,t)},_notifyAboutItemsUpdated:function(e,t){for(var n=this.getContext(),i={value:e,source:this},o=this.get("waitingOnUpdateItemsHandlers"),r=0,a=o.length;a>r;r++)o[r].onSuccess&&o[r].onSuccess(n,i);this.set("waitingOnUpdateItemsHandlers",[]),t&&t(n,i),this.trigger("onItemsUpdated",n,i)},_notifyAboutItemsUpdatedAsPropertyChanged:function(e){var t=this.getContext(),n=this._getArgumentTemplate();n.property="",n.newValue=e,n.oldValue=null,this.trigger("onPropertyChanged",t,n),this.trigger("onPropertyChanged:",t,n)},createItem:function(e,t){var n,i=this.get("dataProvider"),o=this.get("idProperty"),r=this;this.get("fillCreatedItem")?i.createItem(function(t){r._handleDataForCreatingItem(t,e)},o):(n=i.createLocalItem(o),this._handleDataForCreatingItem(n,e))},_handleDataForCreatingItem:function(e,t){var n=this.getItems();n?(n=n.slice(),n.push(e)):n=[e],this.setProperty("",n),this._includeItemToModifiedSet(e),this.setSelectedItem(e),this._notifyAboutItemCreated(e,t)},_notifyAboutItemCreated:function(e,t){var n=this.getContext(),i={value:e};t&&t(n,i),this.trigger("onItemCreated",n,i)},getFilter:function(){},setFilter:function(e,t,n){},_setCriteriaList:function(e,t,n){this.set("criteriaList",e),this.updateItems(t,n)},setIdFilter:function(e){var t=this.get("dataProvider"),n=t.createIdFilter(e);this.setFilter(n)},setNewItemsHandler:function(e){this.set("newItemsHandler",e)},getErrorValidator:function(){return this.get("errorValidator")},setErrorValidator:function(e){this.set("errorValidator",e)},validateOnErrors:function(e,t){var n,i,o=this.get("errorValidator"),r={IsValid:!0,Items:[]},a=!!e,l=this.getContext();if(o)if(a)r=o(l,e);else{n=this.getItems();for(var s=0,u=n.length;u>s;s++)i=o(l,n[s]),i.IsValid||(this._addIndexToPropertiesOfValidationMessage(i.Items,s),r.IsValid=!1,r.Items=_.union(r.Items,i.Items))}return this._notifyAboutValidation(r,"error"),this._executeCallback(t,{item:e,result:r}),r},setFileProvider:function(e){this.set("fileProvider",e)},getFileProvider:function(){return this.get("fileProvider")},_addIndexToPropertiesOfValidationMessage:function(e,t){for(var n=0,i=e.length;i>n;n++)e[n].property=t+"."+e[n].property},_notifyAboutValidation:function(e,t){if(e){var n=this.getContext(),i={value:e};this.trigger("onErrorValidator",n,i)}},getContext:function(){return this.getView().getContext()},_indexItemsById:function(e){for(var t,n=this.get("idProperty"),i={},o=0,r=e.length;r>o;o++)t=e[o][n],i[t]=e[o];return i},_indexOfItem:function(e){var t=this.getItems();return t?t.indexOf(e):-1},_indexOfSelectedItem:function(){var e=this.getSelectedItem();return this._indexOfItem(e)},idOfItem:function(e){var t=this.get("idProperty");if(e)return e[t]},getCurrentRequestPromise:function(){var e=$.Deferred(),t=window.InfinniUI.global.logger;return this.get("isRequestInProcess")?this.onItemsUpdatedOnce(function(){this.isDataReady()?e.resolve():t.warn({message:"BaseDataSource: strange, expected other dataReady status",source:this})}):e.resolve(),e},getNearestRequestPromise:function(){var e=$.Deferred();return this.onItemsUpdatedOnce(function(){this.isDataReady()?e.resolve():logger.warn({message:"BaseDataSource: strange, expected other dataReady status",source:this})}),e},setIsLazy:function(e){this.set("isLazy",e)},isLazy:function(){return this.get("isLazy")},setResolvePriority:function(e){this.set("resolvePriority",e)},getResolvePriority:function(){return this.get("resolvePriority")},_copyObject:function(e){return JSON.parse(JSON.stringify(e))},_getArgumentTemplate:function(){return{source:this}},_detectIdentifyingMode:function(e){$.isArray(e)&&e.length>0?!$.isPlainObject(e[0])||this.getIdProperty()in e[0]?(this.set("identifyingMode","byId"),_.extend(this,BaseDataSource.identifyingStrategy.byId)):(this.set("identifyingMode","byLink"),_.extend(this,BaseDataSource.identifyingStrategy.byLink)):(this.set("identifyingMode","byId"),_.extend(this,BaseDataSource.identifyingStrategy.byId))},_getIdentifyingMode:function(){return this.get("identifyingMode")}});BaseDataSource.identifyingStrategy={byId:{_restoreSelectedItem:function(){var e=this.getSelectedItem(),t=this.idOfItem(e);if(null!=t){var n=this.get("itemsById"),i=n[t];if(null!=i)return this.setSelectedItem(i),!0}return!1},setSelectedItem:function(e,t,n){var i,o=this.getSelectedItem(),r=this.get("itemsById"),a=this.idOfItem(e);if("undefined"==typeof e&&(e=null),e!=o){if(null!==e&&!r[a]){if(n)return void n(this.getContext(),{error:"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."});throw"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."}this.get("model").setProperty("selectedItem",e),i=this._indexOfItem(r[a]),this._tuneMirroringOfModel(i),this._notifyAboutSelectedItem(e,t)}},_includeItemToModifiedSet:function(e){var t=this.idOfItem(e);this.get("modifiedItems")[t]=e},_excludeItemFromModifiedSet:function(e){var t=this.idOfItem(e);delete this.get("modifiedItems")[t]},_handleDeletedItem:function(e,t){for(var n=this.getItems(),i=this.get("idProperty"),o=this.idOfItem(e),r=this.getSelectedItem(),a=0,l=n.length,s=!1;l>a&&!s;a++)n[a][i]==o&&(n.splice(a,1),s=!0);delete this.get("itemsById")[o],this._excludeItemFromModifiedSet(e),r&&r[i]==o&&this.setSelectedItem(null),this._notifyAboutItemDeleted(e,t)}},byLink:{_restoreSelectedItem:function(){var e=this.getSelectedItem(),t=this.getItems();return-1!=t.indexOf(e)},setSelectedItem:function(e,t,n){var i=this.getSelectedItem(),o=(this.getItems(),this._indexOfItem(e));if("undefined"==typeof e&&(e=null),e!=i){if(null!==e&&-1==o){if(n)return void n(this.getContext(),{error:"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."});throw"BaseDataSource.setSelectedItem() Попытка выбрать элемент в источнике, которого нет среди элементов этого источника."}this.get("model").setProperty("selectedItem",e),this._tuneMirroringOfModel(o),this._notifyAboutSelectedItem(e,t)}},_includeItemToModifiedSet:function(e){this.get("modifiedItems")["-"]=e},_excludeItemFromModifiedSet:function(e){delete this.get("modifiedItems")["-"]},_handleDeletedItem:function(e,t){var n=this.getItems(),i=this.getSelectedItem(),o=n.indexOf(e);o>=0&&(n.splice(o,1),this._excludeItemFromModifiedSet(e),i&&i==e&&this.setSelectedItem(null)),this._notifyAboutItemDeleted(e,t)}}},window.InfinniUI.BaseDataSource=BaseDataSource;var RestDataSource=BaseDataSource.extend({defaults:_.defaults({updatingItemsConverter:null},BaseDataSource.prototype.defaults),initialize:function(){BaseDataSource.prototype.initialize.apply(this,Array.prototype.slice.call(arguments));var e=this.get("model");e.urlParams={get:{method:"get",origin:null,path:"",data:{},params:{}},set:{method:"post",origin:null,path:"",data:{},params:{}},"delete":{method:"delete",origin:null,path:"",data:{},params:{}}},this.initUrlParamsHandlers()},initDataProvider:function(){var e=window.InfinniUI.providerRegister.build("RestDataSource");this.set("dataProvider",e)},initUrlParamsHandlers:function(){var e=this;this.get("model").onPropertyChanged("urlParams.get.*",function(t,n){var i,o=e.get("dataProvider"),r=e.getGettingUrlParams();o.setOrigin("get",r.origin),i=e._templateParamsInStr(r.path,r.params),o.setPath("get",i),i=e._templateParamsInObject(r.data,r.params),o.setData("get",i),(e.get("isDataReady")||e.get("isRequestInProcess")||e.get("waitingOnUpdateItemsHandlers").length>0)&&e.updateItems()}),this.get("model").onPropertyChanged("urlParams.set.*",function(t,n){var i,o=e.get("dataProvider"),r=e.getSettingUrlParams();o.setOrigin("set",r.origin),i=e._templateParamsInStr(r.path,r.params),o.setPath("set",i),i=e._templateParamsInObject(r.data,r.params),o.setData("set",i)}),this.get("model").onPropertyChanged("urlParams.delete.*",function(t,n){var i,o=e.get("dataProvider"),r=e.getDeletingUrlParams();o.setOrigin("delete",r.origin),i=e._templateParamsInStr(r.path,r.params),o.setPath("delete",i),i=e._templateParamsInObject(r.data,r.params),o.setData("delete",i)})},updateItems:function(){this._checkGettingUrlParamsReady()?(BaseDataSource.prototype.updateItems.apply(this,Array.prototype.slice.call(arguments)),this.resumeUpdate("urlGettingParamsNotReady")):(this.suspendUpdate("urlGettingParamsNotReady"),BaseDataSource.prototype.updateItems.apply(this,Array.prototype.slice.call(arguments)))},getGettingUrlParams:function(e){return e=0==arguments.length?"urlParams.get":""==e?"urlParams.get":"urlParams.get."+e,this.get("model").getProperty(e)},setGettingUrlParams:function(e,t){1==arguments.length?(t=e,e="urlParams.get"):e=""==e?"urlParams.get":"urlParams.get."+e,this.get("model").setProperty(e,t)},getSettingUrlParams:function(e){return e=0==arguments.length?"urlParams.set":""==e?"urlParams.set":"urlParams.set."+e,this.get("model").getProperty(e)},setSettingUrlParams:function(e,t){1==arguments.length?(t=e,e="urlParams.set"):e=""==e?"urlParams.set":"urlParams.set."+e,this.get("model").setProperty(e,t)},getDeletingUrlParams:function(e){return e=0==arguments.length?"urlParams.delete":""==e?"urlParams.delete":"urlParams.delete."+e,this.get("model").getProperty(e)},setDeletingUrlParams:function(e,t){1==arguments.length?(t=e,e="urlParams.delete"):e=""==e?"urlParams.delete":"urlParams.delete."+e,this.get("model").setProperty(e,t)},_checkGettingUrlParamsReady:function(){var e,t,n,i,o,r=[];if(!this._checkUrlParamsReady(this.getGettingUrlParams()))return!1;e=this.getGettingUrlParams("path"),t=this._findSubstitutionParams(e),r=r.concat(t),n=this.getGettingUrlParams("data"),e=JSON.stringify(n),t=this._findSubstitutionParams(e),r=r.concat(t),i=this.getGettingUrlParams("params");for(var a=0,l=r.length;l>a;a++)if(o=r[a],void 0===i[o])return!1;return!0},_checkUrlParamsReady:function(e){return e&&"string"==typeof e.origin&&"string"==typeof e.path&&"object"==typeof e.data&&"object"==typeof e.params},_findSubstitutionParams:function(e){if(!e)return[];var t=[];return e.replace(/<%([\s\S]+?)%>/g,function(e,n){return t.push(n),e}),t},_templateParamsInStr:function(e,t){return e&&t?e.replace(/<%([\s\S]+?)%>/g,function(e,n){return t[n]}):e},_templateParamsInObject:function(e,t){if(!e||!t)return e;var n=JSON.stringify(e),i=this._templateParamsInStr(n,t);return JSON.parse(i)},getUpdatingItemsConverter:function(){return this.get("updatingItemsConverter")},setUpdatingItemsConverter:function(e){this.set("updatingItemsConverter",e)},_handleUpdatedItemsData:function(e,t,n){var i,o=this.getUpdatingItemsConverter();i=o?o(e):e,BaseDataSource.prototype._handleUpdatedItemsData.call(this,i,t,n)}});window.InfinniUI.RestDataSource=RestDataSource;var DocumentDataSource=RestDataSource.extend({defaults:_.defaults({documentId:null},RestDataSource.prototype.defaults),initialize:function(){RestDataSource.prototype.initialize.apply(this,Array.prototype.slice.call(arguments));var e=this.get("model");e.setProperty("pageNumber",0),e.setProperty("pageSize",15),e.setProperty("filterParams",{}),this.setUpdatingItemsConverter(function(t){return e.setProperty("totalCount",t.Result.Count),t.Result.Items}),this.initHandlers()},initHandlers:function(){var e=this.get("model"),t=this,n=_.bind(this.updateGettingUrlParams,this),i=function(){t.suspendUpdate("updateGettingUrlParams"),t.get("model").setProperty("pageNumber",0),t.updateGettingUrlParams(),t.resumeUpdate("updateGettingUrlParams")};e.onPropertyChanged("documentId",function(){t.updateGettingUrlParams(),t.updateSettingUrlParams(),t.updateDeletingUrlParams()}),e.onPropertyChanged("filter",i),e.onPropertyChanged("filterParams.*",i),e.onPropertyChanged("pageNumber",n),e.onPropertyChanged("pageSize",i),e.onPropertyChanged("search",i),e.onPropertyChanged("select",n),e.onPropertyChanged("order",i),e.onPropertyChanged("needTotalCount",n),this.updateGettingUrlParams(),this.updateSettingUrlParams(),this.updateDeletingUrlParams()},updateGettingUrlParams:function(){var e=this.get("model"),t={type:"get",origin:InfinniUI.config.serverUrl,path:"/documents/"+this.get("model").getProperty("documentId"),data:{},params:{}},n=e.getProperty("filter"),i=e.getProperty("filterParams"),o=e.getProperty("pageNumber"),r=e.getProperty("pageSize"),a=e.getProperty("search"),l=e.getProperty("select"),s=e.getProperty("order"),u=e.getProperty("needTotalCount");n&&(t.data.filter=n,i&&_.extend(t.params,i)),r&&(o=o||0,t.data.skip=o*r,t.data.take=r),a&&(t.data.search=a),l&&(t.data.select=l),s&&(t.data.order=s),u&&(t.data.count=u),this.setGettingUrlParams(t)},updateSettingUrlParams:function(){var e=(this.get("model"),{type:"post",origin:InfinniUI.config.serverUrl,path:"/documents/"+this.get("model").getProperty("documentId"),data:{},params:{}});this.setSettingUrlParams(e)},updateDeletingUrlParams:function(){var e=(this.get("model"),{type:"delete",origin:InfinniUI.config.serverUrl,path:"/documents/"+this.get("model").getProperty("documentId")+"/<%id%>",data:{},params:{}});this.setDeletingUrlParams(e)},initDataProvider:function(){var e=window.InfinniUI.providerRegister.build("DocumentDataSource");this.set("dataProvider",e)},getDocumentId:function(){return this.get("model").getProperty("documentId")},setDocumentId:function(e){this.get("model").setProperty("documentId",e)},getFilter:function(){return this.get("model").getProperty("filter")},setFilter:function(e){this.get("model").setProperty("filter",e)},getFilterParams:function(e){return e=0==arguments.length?"filterParams":""==e?"filterParams":"filterParams."+e,this.get("model").getProperty(e)},setFilterParams:function(e,t){1==arguments.length?(t=e,e="filterParams"):e=""==e?"filterParams":"filterParams."+e,this.get("model").setProperty(e,t)},setIdFilter:function(e){this.setFilter("eq("+this.getIdProperty()+","+this.quoteValue(e)+")")},getPageNumber:function(){return this.get("model").getProperty("pageNumber")},setPageNumber:function(e){this.get("model").setProperty("pageNumber",e)},getPageSize:function(){return this.get("model").getProperty("pageSize")},setPageSize:function(e){this.get("model").setProperty("pageSize",e)},getSearch:function(){return this.get("model").getProperty("search")},setSearch:function(e){this.get("model").setProperty("search",e)},getSelect:function(){return this.get("model").getProperty("select")},setSelect:function(e){this.get("model").setProperty("select",e)},getOrder:function(){return this.get("model").getProperty("order")},setOrder:function(e){this.get("model").setProperty("order",e)},getTotalCount:function(){return this.get("model").getProperty("totalCount")},getNeedTotalCount:function(){return this.get("model").getProperty("needTotalCount")},setNeedTotalCount:function(e){this.get("model").setProperty("needTotalCount",e)},beforeDeleteItem:function(e){var t=this.idOfItem(e);void 0!==t&&this.setDeletingUrlParams("params.id",t)},quoteValue:function(e){var t="'";return _.isString(e)?t+e+t:e}});window.InfinniUI.DocumentDataSource=DocumentDataSource;var BaseDataSourceBuilder=function(){};_.extend(BaseDataSourceBuilder.prototype,{build:function(e,t){var n=this.createDataSource(t.parentView);return n.suspendUpdate("tuningInSourceBuilder"),this.applyMetadata(t.builder,t.parentView,t.metadata,n),this.applySuspended(n,t.suspended),n.resumeUpdate("tuningInSourceBuilder"),n},applySuspended:function(e,t){if(t)for(var n in t)t.hasOwnProperty(n)&&e.getName()===n&&e.suspendUpdate(t[n])},applyMetadata:function(e,t,n,i){var o=n.IdProperty;o&&i.setIdProperty(o),i.setName(n.Name),i.setFillCreatedItem(n.FillCreatedItem),"IsLazy"in n&&i.setIsLazy(n.IsLazy),"ResolvePriority"in n&&i.setResolvePriority(n.ResolvePriority),_.isObject(n.CustomProperties)&&this.initCustomProperties(i,n.CustomProperties),this.initValidation(t,i,n),this.initNotifyValidation(i),this.initScriptsHandlers(t,n,i),this.initFileProvider(i)},createDataSource:function(e){throw"BaseDataSourceBuilder.createDataSource В потомке BaseDataSourceBuilder не переопределен метод createDataSource."},initCustomProperties:function(e,t){_.each(t,function(t,n){e.setProperty("."+n,t)})},initValidation:function(e,t,n){n.ValidationErrors&&t.setErrorValidator(function(t,i){return new ScriptExecutor(e).executeScript(n.ValidationErrors.Name||n.ValidationErrors,i)})},initScriptsHandlers:function(e,t,n){e&&(t.OnSelectedItemChanged&&n.onSelectedItemChanged(function(n,i){new ScriptExecutor(e).executeScript(t.OnSelectedItemChanged.Name||t.OnSelectedItemChanged,i)}),t.OnItemsUpdated&&n.onItemsUpdated(function(n,i){new ScriptExecutor(e).executeScript(t.OnItemsUpdated.Name||t.OnItemsUpdated,i)}),t.OnPropertyChanged&&n.onPropertyChanged(function(n,i){new ScriptExecutor(e).executeScript(t.OnPropertyChanged.Name||t.OnPropertyChanged,i)}),t.OnItemDeleted&&n.onItemDeleted(function(){new ScriptExecutor(e).executeScript(t.OnItemDeleted.Name||t.OnItemDeleted)}),t.OnErrorValidator&&n.onErrorValidator(function(){new ScriptExecutor(e).executeScript(t.OnErrorValidator.Name||t.OnErrorValidator)}))},buildBindingBuilder:function(e){return function(t){return e.builder.buildBinding(t,{parentView:e.parentView,basePathOfProperty:e.basePathOfProperty})}},initFileProvider:function(e){var t=InfinniUI.config.serverUrl,n=new DocumentUploadQueryConstructor(t),i=new DocumentFileProvider(n);e.setFileProvider(i)}}),_.extend(BaseDataSourceBuilder.prototype,DataSourceValidationNotifierMixin),window.InfinniUI.BaseDataSourceBuilder=BaseDataSourceBuilder;var RestDataSourceBuilder=function(){_.superClass(RestDataSourceBuilder,this)};_.inherit(RestDataSourceBuilder,BaseDataSourceBuilder),_.extend(RestDataSourceBuilder.prototype,{createDataSource:function(e){return new RestDataSource({view:e})},applyMetadata:function(e,t,n,i){BaseDataSourceBuilder.prototype.applyMetadata.call(this,e,t,n,i);var o;this.initProviderErrorHandling(i),"GettingParams"in n&&(o=this.extractUrlParams(n.GettingParams,".urlParams.get.params"),i.setGettingUrlParams(o),this.bindParams(n.GettingParams,i,t,".urlParams.get.params",e)),"SettingParams"in n&&(o=this.extractUrlParams(n.SettingParams,".urlParams.set.params"),i.setSettingUrlParams(o),this.bindParams(n.SettingParams,i,t,".urlParams.set.params",e)),"DeletingParams"in n&&(o=this.extractUrlParams(n.DeletingParams,".urlParams.delet.params"),i.setDeletingUrlParams(o),this.bindParams(n.DeletingParams,i,t,".urlParams.delet.params",e)),"UpdatingItemsConverter"in n&&i.setUpdatingItemsConverter(function(e){return new ScriptExecutor(t).executeScript(n.UpdatingItemsConverter.Name||n.UpdatingItemsConverter,{value:e,source:i})})},extractUrlParams:function(e,t){var n={};return"Origin"in e?n.origin=e.Origin:n.origin=InfinniUI.config.serverUrl,"Path"in e&&(n.path=e.Path),"Data"in e&&(n.data=e.Data),"Method"in e&&(n.method=e.Method),n.params={},n},bindParams:function(e,t,n,i,o){if("Params"in e){var r=e.Params;for(var a in r)this.initBindingToProperty(r[a],t,n,i+"."+a,o)}},initBindingToProperty:function(e,t,n,i,o){if("object"!=typeof e)void 0!==e&&t.setProperty(i,e);else{var r={parent:n,parentView:n},a=o.buildBinding(e,r);a.setMode(InfinniUI.BindingModes.toElement),a.bindElement(t,i)}},initProviderErrorHandling:function(e){e.onProviderError(function(){var e=window.InfinniUI.global.messageBus;e.send(messageTypes.onNotifyUser,{messageText:"Ошибка на сервере",messageType:"error"})})}}),window.InfinniUI.RestDataSourceBuilder=RestDataSourceBuilder;var DocumentDataSourceBuilder=function(){_.superClass(DocumentDataSourceBuilder,this)};_.inherit(DocumentDataSourceBuilder,BaseDataSourceBuilder),_.extend(DocumentDataSourceBuilder.prototype,{applyMetadata:function(e,t,n,i){if(BaseDataSourceBuilder.prototype.applyMetadata.call(this,e,t,n,i),i.setDocumentId(n.DocumentId),"Filter"in n&&i.setFilter(n.Filter),"FilterParams"in n){var o=n.FilterParams;for(var r in o)this.initBindingToProperty(o[r],i,t,".filterParams."+r,e)}"Search"in n&&i.setSearch(n.Search),"Select"in n&&i.setSelect(n.Select),"Order"in n&&i.setOrder(n.Order),"NeedTotalCount"in n&&i.setNeedTotalCount(n.NeedTotalCount),"PageSize"in n&&i.setPageSize(n.PageSize),"PageNumber"in n&&i.setPageNumber(n.PageNumber),Array.isArray(n.DefaultItems)&&i.setProperty("",n.DefaultItems)},createDataSource:function(e){return new DocumentDataSource({view:e})},initBindingToProperty:RestDataSourceBuilder.prototype.initBindingToProperty}),window.InfinniUI.DocumentDataSourceBuilder=DocumentDataSourceBuilder;var Element=function(e,t){this.parent=e,this.control=this.createControl(t),this.state={Enabled:!0},this.childElements=[]};Object.defineProperties(Element.prototype,{name:{get:function(){return this.getName()}}}),_.extend(Element.prototype,{createControl:function(e){throw"Не перегружен абстрактный метод Element.createControl"},setParent:function(e){this.parent=e},getParent:function(){return this.parent},getChildElements:function(){return this.childElements},findAllChildrenByType:function(e){function t(){return this.constructor.name===e}function n(t){return t.findAllChildrenByType(e)}return this._findAllChildren(t,n)},findAllChildrenByName:function(e){function t(){return this.getName()===e}function n(t){return t.findAllChildrenByName(e)}return this._findAllChildren(t,n)},_findAllChildren:function(e,t){var n=this.getChildElements(),i=[];return Array.isArray(n)&&n.forEach(function(n){e.call(n)&&i.push(n),Array.prototype.push.apply(i,t(n))}),i},getView:function(){return this.parentView||(this.parent&&this.parent.isView?this.parentView=this.parent:this.parent&&this.parent.getView?this.parentView=this.parent.getView():this.parentView=null),this.parentView},getName:function(){return this.control.get("name")},setName:function(e){if(this.getName())throw"name already exists";"string"==typeof e&&this.control.set("name",e)},getProperty:function(e){var t="get"+this._upperFirstSymbol(e);if("function"==typeof this[t])return this[t]();throw"expect that "+t+" is getter function"},setProperty:function(e,t){var n,i="set"+this._upperFirstSymbol(e);if("function"==typeof this[i])this[i](t);else{if(!this._isCollectionProperty(e))throw"expect that "+i+" is setter function";n="get"+this._upperFirstSymbol(e),this[n]().set(t)}},_isCollectionProperty:function(e){var t="get"+this._upperFirstSymbol(e);return"function"==typeof this[t]&&this[t]()instanceof Collection},onPropertyChanged:function(e,t){var n="on"+this._upperFirstSymbol(e)+"Changed";"function"==typeof this[n]?this[n](t):this.control.on("change:"+e,function(n,i){var o=this.getView(),r=o?o.getContext():void 0,a={property:e,oldValue:n.previous(e),newValue:i};t(r,a)}.bind(this))},getText:function(){return this.control.get("text")},setText:function(e){"undefined"!=typeof e&&this.control.set("text",e)},getEnabled:function(){return this.control.get("enabled")},setEnabled:function(e){if("boolean"==typeof e){this.setState("Enabled",e);var t=this.control.get("parentEnabled"),n=this.control.get("enabled");e=t&&e,e!==n&&(this.control.set("enabled",e),this.setParentEnabledOnChild(e))}},setParentEnabledOnChild:function(e){var t=this.getChildElements();if(_.isEmpty(t)===!1)for(var n=0,i=t.length;i>n;n+=1)"undefined"!=typeof t[n].setParentEnabled&&t[n].setParentEnabled(e)},setParentEnabled:function(e){if("boolean"==typeof e){var t=this.control.get("parentEnabled");if(this.control.set("parentEnabled",e),t!==e){var n=e&&this.getState("Enabled");this.control.set("enabled",n),this.setParentEnabled(n),this.setParentEnabledOnChild(n)}}},getVisible:function(){return this.control.get("visible")},setVisible:function(e){"boolean"==typeof e&&this.control.set("visible",e)},getStyle:function(){return this.control.get("style")},setStyle:function(e){"string"==typeof e&&this.control.set("style",e)},getTextHorizontalAlignment:function(){return this.control.get("textHorizontalAlignment")},setTextHorizontalAlignment:function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.TextHorizontalAlignment)&&this.control.set("textHorizontalAlignment",e)},getHorizontalAlignment:function(){return this.control.get("horizontalAlignment")},setHorizontalAlignment:function(e){ +"string"==typeof e&&this.control.set("horizontalAlignment",e)},getVerticalAlignment:function(){return this.control.get("verticalAlignment")},setVerticalAlignment:function(e){"string"==typeof e&&this.control.set("verticalAlignment",e)},getTextStyle:function(){return this.control.get("textStyle")},setTextStyle:function(e){"string"==typeof e&&this.control.set("textStyle",e)},getBackground:function(){return this.control.get("background")},setBackground:function(e){"string"==typeof e&&this.control.set("background",e)},getForeground:function(){return this.control.get("foreground")},setForeground:function(e){"string"==typeof e&&this.control.set("foreground",e)},onLoaded:function(e){this.control.onLoaded(e)},isLoaded:function(){return this.control.isLoaded()},getFocusable:function(){return this.control.get("focusable")},setFocusable:function(e){_.isBoolean(e)&&this.control.set("focusable",e)},getFocused:function(){return this.control.get("focused")},setFocused:function(e){return this.control.set("focused",!!e)},onLostFocus:function(e){this.control.on("OnLostFocus",e)},onGotFocus:function(e){this.control.on("OnGotFocus",e)},setToolTip:function(e){this.control.set("toolTip",e)},getToolTip:function(){return this.control.get("toolTip")},setContextMenu:function(e){this.control.set("contextMenu",e)},getContextMenu:function(e){return this.control.get("contextMenu")},getIsLoaded:function(){return this.control.get("isLoaded")},setIsLoaded:function(){this.control.set("isLoaded",!0)},setTag:function(e){this.control.set("tag",e)},getTag:function(){return this.control.get("tag")},render:function(){return this.control.render()},getWidth:function(){},getHeight:function(){},getScriptsStorage:function(){return this.getView()},setValidationState:function(e,t){this.control.set("validationMessage",t),this.control.set("validationState",e)},getValidationState:function(){return this.control.get("validationState")},getState:function(e){return this.state[e]},setState:function(e,t){this.state[e]=t},onBeforeClick:function(e){return this.control.onBeforeClick(e)},onKeyDown:function(e){var t=this,n=function(n){var i=t._getHandlingKeyEventData(n);e(i)};return this.control.onKeyDown(n)},onKeyUp:function(e){var t=this,n=function(n){var i=t._getHandlingKeyEventData(n);e(i)};return this.control.onKeyUp(n)},onClick:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onClick(n)},onDoubleClick:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onDoubleClick(n)},onMouseDown:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseDown(n)},onMouseUp:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseUp(n)},onMouseEnter:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseEnter(n)},onMouseLeave:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseLeave(n)},onMouseMove:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseMove(n)},onMouseWheel:function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onMouseWheel(n)},remove:function(e){var t=window.InfinniUI.global.logger;if(this.isRemoved)return void t.warn("Element.remove: Попытка удалить элемент, который уже был удален");for(var n=this.childElements,i=0,o=n.length;o>i;i++)n[i].remove(!0);this.control.remove(),this.parent&&this.parent.removeChild&&!e&&(this.parent.isRemoved?t.warn("Element.remove: Попытка удалить элемент из родителя, который помечан как удаленный"):this.parent.removeChild(this)),this.isRemoved=!0,this.childElements=void 0},removeChild:function(e){var t=this.childElements.indexOf(e);-1!=t&&this.childElements.splice(t,1)},addChild:function(e){if(this.isRemoved){var t=window.InfinniUI.global.logger;t.warn("Element.addChild: Попытка добавить потомка в удаленный элемент")}else this.childElements.push(e)},createControlEventHandler:function(e,t,n){var i,o=e.getView();return n=n||{},o&&(i=o.context),function(o){return _.extend(o,n),o.source=e,t.call(void 0,i,o)}},_getHandlingKeyEventData:function(e){var t={};return t={source:this,key:e.which,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,nativeEventData:e}},_getHandlingMouseEventData:function(e){var t={};return t={source:this,button:e.which,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,nativeEventData:e}},_upperFirstSymbol:function(e){return e[0].toUpperCase()+e.substr(1)},setFocus:function(){this.control.setFocus()},renderTree:function(e){var e=e||"";if(console.log(e+"Name: "+this.getName(),this),void 0!==this.childElements){e+="_____";for(var t=0,n=this.childElements.length;n>t;t+=1)this.renderTree.call(this.childElements[t],e)}},renderFullTree:function(){for(var e=this.parent;e.parent&&void 0!==e.parent.parent;)e=e.parent;this.renderTree.call(e)}}),window.InfinniUI.Element=Element;var ElementBuilder=function(){};_.extend(ElementBuilder.prototype,{build:function(e,t){t=t||{};var n=this.createElement(t),i=_.extend(t,{element:n});return this.applyMetadata(i),t.parentView&&t.parentView.registerElement&&t.parentView.registerElement(n),t.parent&&t.parent.addChild&&t.parent.addChild(n),n},createElement:function(e){throw"Не перегружен абстрактный метод ElementBuilder.createElement()"},applyMetadata:function(e){var t=e.metadata,n=e.element;this.initBindingToProperty(e,"Text"),this.initBindingToProperty(e,"Visible",!0),this.initBindingToProperty(e,"Enabled",!0),this.initBindingToProperty(e,"HorizontalAlignment"),this.initBindingToProperty(e,"TextHorizontalAlignment"),this.initBindingToProperty(e,"VerticalAlignment"),this.initBindingToProperty(e,"TextStyle"),this.initBindingToProperty(e,"Foreground"),this.initBindingToProperty(e,"Background"),this.initBindingToProperty(e,"Style"),this.initBindingToProperty(e,"Tag"),this.initBindingToProperty(e,"Focusable",!0),t.ToolTip&&this.initToolTip(e),t.ContextMenu&&this.initContextMenu(e),"Name"in t&&n.setName(t.Name),t.OnLoaded&&n.onLoaded(function(){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnLoaded.Name||t.OnLoaded,{source:n})}),t.OnGotFocus&&n.onGotFocus(function(){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnGotFocus.Name||t.OnGotFocus,{source:n})}),t.OnLostFocus&&n.onLostFocus(function(){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnLostFocus.Name||t.OnLostFocus,{source:n})}),t.OnDoubleClick&&n.onDoubleClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnDoubleClick.Name||t.OnDoubleClick,e)}),t.OnClick&&n.onClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnClick.Name||t.OnClick,e)}),t.OnMouseEnter&&n.onMouseEnter(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseEnter.Name||t.OnMouseEnter,e)}),t.OnMouseLeave&&n.onMouseLeave(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseLeave.Name||t.OnMouseLeave,e)}),t.OnMouseMove&&n.onMouseMove(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseMove.Name||t.OnMouseMove,e)}),t.OnKeyDown&&n.onKeyDown(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnKeyDown.Name||t.OnKeyDown,e)}),t.OnKeyUp&&n.onKeyUp(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnKeyUp.Name||t.OnKeyUp,e)}),t.OnMouseDown&&n.onMouseDown(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseDown.Name||t.OnMouseDown,e)}),t.OnMouseUp&&n.onMouseUp(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseUp.Name||t.OnMouseUp,e)}),t.OnMouseWheel&&n.onMouseWheel(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnMouseWheel.Name||t.OnMouseWheel,e)})},initBindingToProperty:function(e,t,n){var i,o=e.metadata,r=o[t],a=e.element,l=this.lowerFirstSymbol(t);if(r&&"object"==typeof r){var s,u={parent:e.parent,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},d=e.builder.buildBinding(o[t],u);return n&&(d.setMode(InfinniUI.BindingModes.toElement),i=d.getConverter(),i||(i={}),i.toElement?(s=i.toElement,i.toElement=function(e,t){var n=s(e,t);return!!n}):i.toElement=function(e,t){return!!t.value},d.setConverter(i)),d.bindElement(a,l),d}return void 0!==r&&e.element["set"+t](r),null},initToolTip:function(e){var t,n=window.InfinniUI.global.messageBus,i=e.builder,o=e.element,r=e.metadata,a={parent:o,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty};t="string"==typeof r.ToolTip?i.buildType("Label",{Text:r.ToolTip},a):i.build(r.ToolTip,a),o.setToolTip(t),n.send(messageTypes.onToolTip.name,{source:o,content:t.render()})},initContextMenu:function(e){var t,n=window.InfinniUI.global.messageBus,i=e.builder,o=e.element,r=e.metadata,a={parent:o,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty};t=i.buildType("ContextMenu",{Items:r.ContextMenu.Items},a),o.setContextMenu(t),n.send(messageTypes.onContextMenu.name,{source:o,content:t.render()})},lowerFirstSymbol:function(e){return e[0].toLowerCase()+e.substr(1)}}),window.InfinniUI.ElementBuilder=ElementBuilder;var builderValuePropertyMixin={initValueProperty:function(e,t){var n=e.metadata;if("undefined"==typeof t&&(t=!1),void 0!==n.Value){var i=e.builder.build(e.view,n.Value,e.collectionProperty);if(i.setElement(e.element),null!=i){i.onPropertyValueChanged(function(t,n){e.element.setValue(i.getPropertyValue())});var o=i.getPropertyValue();null!==o&&"undefined"!=typeof o&&e.element.setValue(o),e.element.onValueChanged(function(e,t){i.setPropertyValue(t)})}return t&&i&&e.element.onLostFocus(function(){i.validate()}),i}}},buttonBuilderMixin={applyButtonMetadata:function(e){var t=e.element,n=e.metadata,i=e.builder;if(this.initTemplatingContent(e),n.Action){var o={parentView:e.parentView,parent:t,basePathOfProperty:e.basePathOfProperty},r=i.build(n.Action,o);t.onClick(function(){r.execute()})}},initTemplatingContent:function(e){var t,n,i=e.element,o=e.metadata,r=e.builder;"ContentTemplate"in o&&(t=this.buildContentTemplate(o.ContentTemplate,e),i.setContentTemplate(t)),"Content"in o&&(n=r.buildBinding(o.Content,{parentView:e.parentView,basePathOfProperty:e.basePathOfProperty}),n.bindElement(i,"content"))},buildContentTemplate:function(e,t){var n=(t.element,t.builder),i=t.basePathOfProperty;return function(o,r){var a={parent:t.element,parentView:t.parentView,basePathOfProperty:i};return n.build(e,a)}}},buttonMixin={buttonInit:function(){this.isFirstAction=!0},getContent:function(){return this.control.get("content")},setContent:function(e){this.control.set("content",e)},getContentTemplate:function(){return this.control.get("contentTemplate")},setContentTemplate:function(e){this.control.set("contentTemplate",e)},setAction:function(e){var t=this.control;t.set("action",e),this.isFirstAction&&(this.isFirstAction=!1,this.onClick(function(){var e=t.get("action");e&&e.execute()}))},getAction:function(){return this.control.get("action")},click:function(){this.control.click()},onClick:function(e){function t(t){var i=n.getEnabled();i&&e(t)}var n=this;Element.prototype.onClick.call(this,t)}},displayFormatBuilderMixin={buildDisplayFormat:function(e,t){function n(e,t){return t=t||{},t.value}var i,o=t.formatOptions,r=t.builder,a=n;return"string"==typeof e?(i=r.buildType("ObjectFormat",{Format:e}),a=function(e,t){return t=t||{},i.format(t.value)}):e&&"object"==typeof e&&(i=r.build(e),a=function(e,t){return t=t||{},i.format(t.value)}),i&&i.setOptions(o),a}},labelTextElementMixin={getLabelText:function(){return this.control.get("labelText")},setLabelText:function(e){this.control.set("labelText",e)}},routerServiceMixin={replaceParamsInHref:function(e,t,n,i){if(i){var o=i.split("?")[0],r=i.split("?")[1],a=o.split("/"),l=a.indexOf(":"+t);if(-1===l)throw new Error("Different param names in metadata and InfinniUI.config.Routes");return a=e.split("/"),a[l]=n,a=a.join("/"),r&&(a+="?"+r),a}return e.replace(":"+t,n)},replaceParamsInQuery:function(e,t,n,i){if(i){for(var o=e.split("?")[0],r=e.split("?")[1],a=i.split("?")[1],l=a.split("&"),s=-1,u=0,d=l.length;d>u;u+=1)-1!==l[u].indexOf(":"+t)&&(s=u);if(-1===s)throw new Error("Different query names in metadata and InfinniUI.config.Routes");l=r.split("&");var c=l[s].split("=");c[1]=n,l[s]=c.join("=");var h=o+"?"+l.join("&");return h}return e.replace(":"+t,n)},bindParams:function(e,t,n,i){var o=e.element,r=(e.builder,this),a={parent:e.parent,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},l=e.builder.buildBinding(n,a);l.bindElement({onPropertyChanged:function(){},setProperty:function(e,n){var a=o.getHref(),l=r.replaceParamsInHref(a,t,n,i);o.setHref(l)},getProperty:function(){}},"")},bindQuery:function(e,t,n,i){var o=e.element,r=(e.builder,this),a={parent:e.parent,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},l=e.builder.buildBinding(n,a);l.bindElement({onPropertyChanged:function(){},setProperty:function(e,n){var a=o.getHref(),l=r.replaceParamsInQuery(a,t,n,i);o.setHref(l)},getProperty:function(){}},"")}},valuePropertyMixin={getValue:function(){return this.control.get("value")},setValue:function(e){return this.control.set("value",e)},onValueChanged:function(e){this.control.onValueChanged(e)}},viewBuilderHeaderTemplateMixin={buildHeaderTemplate:function(e,t){var n,i=t.builder,o=t.metadata;return n=o.HeaderTemplate?function(n,r){var a={parent:e,parentView:e,basePathOfProperty:t.basePathOfProperty};return i.build(o.HeaderTemplate,a)}:function(t,n){var i=new Label;return i.setValue(e.getText()),e.onPropertyChanged("text",function(e,t){i.setValue(t.newValue)}),i}}};window.InfinniUI.Container=Container,_.inherit(Container,Element),Container.prototype.getItemTemplate=function(){return this.control.get("itemTemplate")},Container.prototype.setItemTemplate=function(e){if("function"!=typeof e)throw new Error("Function expected");this.control.set("itemTemplate",e)},Container.prototype.getItems=function(){return this.control.get("items")},Container.prototype.getGroupValueSelector=function(){return this.control.get("groupValueSelector")},Container.prototype.setGroupValueSelector=function(e){this.control.set("groupValueSelector",e)},Container.prototype.getGroupItemTemplate=function(){return this.control.get("groupItemTemplate")},Container.prototype.setGroupItemTemplate=function(e){this.control.set("groupItemTemplate",e)},Container.prototype.getGroupItemComparator=function(){return this.control.get("groupItemComparator")},Container.prototype.setGroupItemComparator=function(e){this.control.set("groupItemComparator",e)},window.InfinniUI.ContainerBuilder=ContainerBuilder,_.inherit(ContainerBuilder,ElementBuilder),_.extend(ContainerBuilder.prototype,{applyMetadata:function(e){var t;e.metadata,e.element;return ElementBuilder.prototype.applyMetadata.call(this,e),t=this.initItems(e),this.initGroup(e,t),{itemsBinding:t}},initItems:function(e){var t=e.metadata,n=null;return Array.isArray(t.Items)?this.initNotTemplatingItems(e):t.Items&&(n=this.initTemplatingItems(e)),n},initTemplatingItems:function(e){var t,n,i,o=e.metadata,r=e.element;return n=e.builder.buildBinding(o.Items,{parentView:e.parentView,basePathOfProperty:e.basePathOfProperty}),n.setMode(InfinniUI.BindingModes.toElement),this.bindElementItemsWithSorting(n,e),"ItemTemplate"in o?t=this.buildItemTemplate(o.ItemTemplate,e):"ItemFormat"in o?t=this.buildItemFormat(n,o.ItemFormat,e):"ItemSelector"in o?t=this.buildItemSelector(n,o.ItemSelector,e):(i="ItemProperty"in o?o.ItemProperty:"",t=this.buildItemProperty(n,i,e)),r.setItemTemplate(t),n},initNotTemplatingItems:function(e){var t=e.metadata.Items,n=e.element,i=t.slice(0);n.getItems().set(i);var o=this.buildItemTemplateForUniqueItem(i,e);n.setItemTemplate(o)},tuneItemsBinding:function(e){var t=e.getSource();"function"==typeof t.tryInitData&&t.tryInitData()},initGroup:function(e,t){this.hasGrouping(e)&&(this.initGroupValueSelector(e),this.initGroupItemTemplate(e,t))},hasGrouping:function(e){return e.metadata.GroupValueSelector||e.metadata.GroupValueProperty},initGroupValueSelector:function(e){var t,n=e.metadata,i=e.element;t=n.GroupValueSelector?function(e,t){var o=new ScriptExecutor(i.getScriptsStorage());return o.executeScript(n.GroupValueSelector.Name||n.GroupValueSelector,t)}:n.GroupValueProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,n.GroupValueProperty)}:null,i.setGroupValueSelector(t)},initGroupItemTemplate:function(e,t){var n,i=e.metadata,o=e.element;i.GroupItemTemplate?n=this.buildItemTemplate(i.GroupItemTemplate,e):i.GroupItemFormat?n=this.buildItemFormat(t,i.GroupItemFormat,e):i.GroupItemSelector?n=this.buildItemSelector(t,i.GroupItemSelector,e):i.GroupItemProperty&&(n=this.buildItemProperty(t,i.GroupItemProperty,e)),n&&o.setGroupItemTemplate(n)},buildItemProperty:function(e,t,n){return function(n,i){var o,r=i.index,a=new Label(this),l=e.getSource(),s=new DataBinding;return o=r.toString(),""!=e.getSourceProperty()&&(o=e.getSourceProperty()+"."+o),""!=t&&(o=o+"."+t),s.bindSource(l,o),s.bindElement(a,"value"),a}},buildItemFormat:function(e,t,n){var i=this.buildDisplayFormat(t,n);return function(t,n){var o=n.index,r=new Label(this),a=e.getSourceProperty(),l=e.getSource(),s=new DataBinding;return a=o.toString(),""!=e.getSourceProperty()&&(a=e.getSourceProperty()+"."+a),r.setDisplayFormat(i),s.bindSource(l,a),s.bindElement(r,"value"),r}},buildItemSelector:function(e,t,n){return function(i,o){var r=o.index,a=new Label(this),l=new ScriptExecutor(n.parentView),s=e.getSourceProperty(),u=e.getSource(),d=new DataBinding;return d.setMode(InfinniUI.BindingModes.toElement),s=r.toString(),""!=e.getSourceProperty()&&(s=e.getSourceProperty()+"."+s),d.setConverter({toElement:function(e,n){return l.executeScript(t.Name||t,n)}}),d.bindSource(u,s),d.bindElement(a,"value"),a}},buildItemTemplate:function(e,t){var n=(t.element,t.builder),i=t.basePathOfProperty||new BasePathOfProperty(""),o=t.metadata.Items.Property||"",r=this;return function(a,l){var s,u=l.index,d={parent:t.element,parentView:t.parentView};return void 0!==u&&null!==u&&(s=r.bindingIndexByItemsIndex(u,t),void 0!==s&&null!==s?d.basePathOfProperty=i.buildChild(o,s):d.basePathOfProperty=i.buildChild(o,u)),n.build(e,d)}},buildItemTemplateForUniqueItem:function(e,t){var n=t.element,i=t.builder,o=t.basePathOfProperty||new BasePathOfProperty("");return function(e,r){var a=r.index,l=n.getItems().getByIndex(a),s={parent:t.element,parentView:t.parentView,basePathOfProperty:o};return i.build(l,s)}},bindingIndexByItemsIndex:function(e,t){var n=t.element,i=n.getItems();return i.getProperty(e,"bindingIndex")},bindElementItemsWithSorting:function(e,t){var n,i=t.metadata,o=t.element,r=new ScriptExecutor(t.parent);i.ItemComparator&&(n=function(e,t){return r.executeScript(i.ItemComparator.Name||i.ItemComparator,{item1:e,item2:t})});var a=e.getSource();a.onPropertyChanged("*",function(e,t){var n=o.getItems();t.property&&t.property.match(/^\d+$/)&&n.replace(t.oldValue,t.newValue)}),e.bindElement({setProperty:function(e,t){var i,r=o.getItems();n?(i=r.set(t,!0),r.forEach(function(e,t,n){n.setProperty(t,"bindingIndex",t)}),i&&r.sort(n)):(i=r.set(t),r.forEach(function(e,t,n){n.setProperty(t,"bindingIndex",t)}))},onPropertyChanged:function(){}},"items")}},displayFormatBuilderMixin);var editorBaseBuilderMixin={initialize_editorBaseBuilder:function(){},applyMetadata_editorBaseBuilder:function(e,t){function n(e,t){return e=e||{},t=t||{},!e.toElement&&t.toElement&&(e.toElement=t.toElement),!e.toSource&&t.toSource&&(e.toSource=t.toSource),!e._element&&t._element&&(e._element=t._element),_.isEmpty(e)?null:e}var i=e.metadata,o=e.element;if(t=t||{},t.valueProperty=t.valueProperty||"value",o.setLabelFloating(i.LabelFloating),o.setHintText(i.HintText),o.setErrorText(i.ErrorText),o.setWarningText(i.WarningText),i.OnValueChanging&&o.onValueChanging(function(t,n){var o=new ScriptExecutor(e.parentView);return o.executeScript(i.OnValueChanging.Name||i.OnValueChanging,n)}),i.OnValueChanged&&o.onValueChanged(function(t,n){new ScriptExecutor(e.parentView).executeScript(i.OnValueChanged.Name||i.OnValueChanged,n)}),void 0!==i.Value)if(InfinniUI.Metadata.isBindingMetadata(i.Value)){var r={parentView:e.parentView,basePathOfProperty:e.basePathOfProperty},a=e.builder.buildBinding(i.Value,r),l=n(a.getConverter(),t.converter);l&&a.setConverter(l),t.mode&&a.setMode(t.mode),a.bindElement(e.element,t.valueProperty),this.initValidationResultText(o,a)}else e.element.setValue(i.Value);return{valueBinding:a}},initValidationResultText:function(e,t){function n(e,t){return e.filter(function(e){return o===e.property}).map(function(e){return e.message}).join(" ")}var i=t.getSource(),o=t.getSourceProperty();"function"==typeof i.onErrorValidator&&i.onErrorValidator(function(t,i){var o=i.value,r="";!o.isValid&&Array.isArray(o.items)&&(r=n(o.items)),e.setErrorText(r)}),"function"==typeof i.onWarningValidator&&i.onWarningValidator(function(t,i){var o=i.value,r="";!o.isValid&&Array.isArray(o.items)&&(r=n(o.items)),e.setWarningText(r)})}},editorBaseMixin={initialize_editorBase:function(){},getValue:function(){return this.control.getValue()},setValue:function(e){this.control.setValue(e)},getLabelFloating:function(){return this.control.get("labelFloating")},setLabelFloating:function(e){this.control.set("labelFloating",e)},getHintText:function(){return this.control.get("hintText")},setHintText:function(e){this.control.set("hintText",e)},getErrorText:function(){return this.control.get("errorText")},setErrorText:function(e){this.control.set("errorText",e)},getWarningText:function(){return this.control.get("warningText")},setWarningText:function(e){this.control.set("warningText",e)},validateValue:function(e){},convertValue:function(e){return e},onValueChanging:function(e){this.control.onValueChanging(this.createControlEventHandler(this,e,{property:"value"}))},onValueChanged:function(e){this.control.onValueChanged(this.createControlEventHandler(this,e,{property:"value"}))}};window.InfinniUI.ListEditorBase=ListEditorBase,_.inherit(ListEditorBase,Container),_.extend(ListEditorBase.prototype,{getMultiSelect:function(){return this.control.get("multiSelect")},setMultiSelect:function(e){this.control.set("multiSelect",e)},getValueSelector:function(){return this.control.get("valueSelector")},setValueSelector:function(e){this.control.set("valueSelector",e)},getDisabledItemCondition:function(){return this.control.get("disabledItemCondition")},setDisabledItemCondition:function(e){this.control.set("disabledItemCondition",e)},setValueItem:function(e){var t,n=this.getMultiSelect(),i=this.getValueSelector();if(n){t=[];for(var o=0,r=e.length;r>o;o++)t[o]=i(null,{value:e[o]})}else t=i(null,{value:e});this.setValue(t)},getSelectedItem:function(){return this.control.get("selectedItem")},setSelectedItem:function(e){this.control.set("selectedItem",e)},onSelectedItemChanged:function(e){this.control.onSelectedItemChanged(this.createControlEventHandler(this,e))}},editorBaseMixin),window.InfinniUI.ListEditorBaseBuilder=ListEditorBaseBuilder,_.inherit(ListEditorBaseBuilder,ContainerBuilder),_.extend(ListEditorBaseBuilder.prototype,{applyMetadata:function(e){var t,n=ContainerBuilder.prototype.applyMetadata.call(this,e),i=n.itemsBinding;return this.initSelecting(e,i),this.initDisabledItemCondition(e),this.initValueFeatures(e),t=this.applyMetadata_editorBaseBuilder(e),_.extend(n,t)},initSelecting:function(e,t){var n=e.metadata,i=e.element,o=t.getSource(),r=t.getSourceProperty(),a=""==r;a&&(o.setSelectedItem(null),o.onSelectedItemChanged(function(e,t){var n=i.getSelectedItem(),o=t.value;o!=n&&i.setSelectedItem(o)})),i.onSelectedItemChanged(function(e,t){var r=o.getSelectedItem(),l=t.value;a&&l!=r&&o.setSelectedItem(l),n.OnSelectedItemChanged&&new ScriptExecutor(i.getScriptsStorage()).executeScript(n.OnSelectedItemChanged.Name||n.OnSelectedItemChanged,t)})},initValueFeatures:function(e){var t=e.metadata,n=e.element;"undefined"!=typeof t.MultiSelect&&null!==t.MultiSelect&&n.setMultiSelect(t.MultiSelect),this.initValueSelector(e)},initValueSelector:function(e){var t,n=e.metadata,i=e.element;t=n.ValueSelector?function(t,i){var o=new ScriptExecutor(e.element.getScriptsStorage());return o.executeScript(n.ValueSelector.Name||n.ValueSelector,i)}:n.ValueProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,n.ValueProperty)}:function(e,t){return t.value},i.setValueSelector(t)},initDisabledItemCondition:function(e){var t,n=e.metadata,i=e.element;n.DisabledItemCondition&&(t=function(e,t){var o=new ScriptExecutor(i.getScriptsStorage());return o.executeScript(n.DisabledItemCondition.Name||n.DisabledItemCondition,t)}),i.setDisabledItemCondition(t)}},editorBaseBuilderMixin),window.InfinniUI.TextEditorBase=TextEditorBase,_.inherit(TextEditorBase,Element),_.extend(TextEditorBase.prototype,{setEditor:function(e){this.control.set("editor",e)},setDisplayFormat:function(e){this.control.set("displayFormat",e)},getDisplayFormat:function(){return this.control.get("displayFormat")},setEditMask:function(e){this.control.set("editMask",e)},getEditMask:function(){return this.control.get("editMask")},getRawValue:function(){function e(e){return null!==e&&"undefined"!=typeof e}var t=this.control.get("editor").getValue(),n=this.getEditMask();if(n){var i=n.getValue(),o=n.getText();e(i)?t=i:e(o)&&(t=o)}return t},getInputType:function(){return this.control.get("inputType")},setInputType:function(e){e&&this.control.set("inputType",e)}},editorBaseMixin,labelTextElementMixin),window.InfinniUI.TextEditorBaseBuilder=TextEditorBaseBuilder,_.inherit(TextEditorBaseBuilder,ElementBuilder),_.extend(TextEditorBaseBuilder.prototype,{applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e);var t=(e.metadata,e.element);this.initBindingToProperty(e,"LabelText"),t.setInputType(this.getCompatibleInputType(e)),this.initDisplayFormat(e).initEditMask(e).initEditor(e)},getCompatibleInputType:function(e){var t=e.metadata.Type,n=e.metadata.EditMask;return"undefined"==typeof t&&(t=e.element.getInputType()),n&&(t="text"),t},initEditor:function(e){var t=e.element,n=new TextEditor;return n.setDisplayFormat(t.getDisplayFormat()).setEditMask(t.getEditMask()).setValueConverter(function(){return t.convertValue.bind(t)}).setValidatorValue(t.validateValue.bind(t)),t.setEditor(n),n.onValueChanged(function(e){t.setValue(e)}),t.onValueChanged(function(e,t){n.setValue(t.newValue)}),n.setValue(t.getValue()),this},initDisplayFormat:function(e){var t=e.metadata,n=this.buildDisplayFormat(t.DisplayFormat,e);return e.element.setDisplayFormat(n),this},initEditMask:function(e){var t,n=e.metadata,i=e.builder;return n.EditMask&&(t=i.build(n.EditMask,{parentView:e.parentView,formatOptions:e.formatOptions})),e.element.setEditMask(t),this}},editorBaseBuilderMixin,displayFormatBuilderMixin);var TextEditor=function(){var e=new TextEditorModel;e.on("invalid",function(e,t){console.log("error",t)}),this._model=e};window.InfinniUI.TextEditor=TextEditor,TextEditor.prototype.setDisplayFormat=function(e){return this._model.set("displayFormat",e),this},TextEditor.prototype.setEditMask=function(e){return this._model.set("editMask",e),this},TextEditor.prototype.setValidatorValue=function(e){return this._model.set("validateValue",e),this},TextEditor.prototype.setValueConverter=function(e){return this._model.set("valueConverter",e),this},TextEditor.prototype.getValue=function(){return this._model.getValue()},TextEditor.prototype.render=function(e){this._view=new TextEditorView({model:this._model,el:e})},TextEditor.prototype.setValue=function(e){return this._model.set("originalValue",e,{originalValue:!0}),this},TextEditor.prototype.onValueChanged=function(e){this._model.on("change:originalValue",function(t,n,i){i.originalValue!==!0&&e.call(null,n)})},window.InfinniUI.ListBox=ListBox,_.inherit(ListBox,ListEditorBase),ListBox.prototype.createControl=function(e){return new ListBoxControl(e)},ListBox.prototype.setEnabled=function(e){_.isBoolean(e)&&(ListEditorBase.prototype.setEnabled.call(this,e),e?this.control.updateDisabledItem():this.control.disableAll())},window.InfinniUI.ListBoxBuilder=ListBoxBuilder,_.inherit(ListBoxBuilder,ListEditorBaseBuilder),_.extend(ListBoxBuilder.prototype,{createElement:function(e){return new ListBox(e.parent,e.metadata.ViewMode)},applyMetadata:function(e){ListEditorBaseBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.TextBox=TextBox,_.inherit(TextBox,TextEditorBase),_.extend(TextBox.prototype,{createControl:function(e){return new TextBoxControl(e)},getMultiline:function(){return this.control.get("multiline")},setMultiline:function(e){this.control.set("multiline",e)},getLineCount:function(){return this.control.get("lineCount")},setLineCount:function(e){this.control.set("lineCount",e)}}),window.InfinniUI.TextBoxBuilder=TextBoxBuilder,_.inherit(TextBoxBuilder,TextEditorBaseBuilder),TextBoxBuilder.prototype.createElement=function(e){return new TextBox(e.parent)},TextBoxBuilder.prototype.applyMetadata=function(e){TextEditorBaseBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata,i=n.LineCount;t.setMultiline(n.Multiline),(n.Multiline&&null===i||"undefined"==typeof i)&&(i=2),t.setLineCount(i)},window.InfinniUI.DateTimePicker=DateTimePicker,_.inherit(DateTimePicker,TextEditorBase),DateTimePicker.prototype.createControl=function(e){return new DateTimePickerControl(e)},DateTimePicker.prototype.getMinValue=function(){return this.control.get("minValue")},DateTimePicker.prototype.setMinValue=function(e){this.control.set("minValue",e)},DateTimePicker.prototype.getMaxValue=function(){return this.control.get("maxValue")},DateTimePicker.prototype.setMaxValue=function(e){this.control.set("maxValue",e)},DateTimePicker.prototype.getMode=function(){return this.control.get("mode")},DateTimePicker.prototype.setMode=function(e){this.control.set("mode",e)},DateTimePicker.prototype.getTimeZone=function(){return this.control.get("timeZone")},DateTimePicker.prototype.setTimeZone=function(e){_.isNumber(e)&&this.control.set("timeZone",e)},DateTimePicker.prototype.setDateFormat=function(e){this.control.set("format",e)},DateTimePicker.prototype.validateValue=function(e){if(null!==e&&""!==e&&"undefined"!=typeof e){var t=InfinniUI.DateUtils.restoreTimezoneOffset(this.getMinValue(),this.getTimeZone()),n=InfinniUI.DateUtils.restoreTimezoneOffset(this.getMaxValue(),this.getTimeZone()),i=InfinniUI.DateUtils.checkRangeDate(e,t,n);return i?void 0:"Неверное значение"}},window.InfinniUI.DateTimePickerBuilder=DateTimePickerBuilder,_.inherit(DateTimePickerBuilder,TextEditorBaseBuilder),DateTimePickerBuilder.prototype.createElement=function(e){return new DateTimePicker(e.parent)},DateTimePickerBuilder.prototype.applyMetadata=function(e){var t=e.element;this.applyDefaultMetadata(e);var n=e.metadata;TextEditorBaseBuilder.prototype.applyMetadata.call(this,e),t.setTimeZone(n.TimeZone),t.setMode(n.Mode),this.applyMinValue(t,n.MinValue),this.applyMaxValue(t,n.MaxValue)},DateTimePickerBuilder.prototype.applyMinValue=function(e,t){e.setMinValue(InfinniUI.DateUtils.parseISO8601toDate(t))},DateTimePickerBuilder.prototype.applyMaxValue=function(e,t){e.setMaxValue(InfinniUI.DateUtils.parseISO8601toDate(t))},DateTimePickerBuilder.prototype.applyDefaultMetadata=function(e){var t=e.metadata,n={Date:"{:d}",DateTime:"{:g}",Time:"{:T}"},i={Date:{DateTimeEditMask:{Mask:"d"}},DateTime:{DateTimeEditMask:{Mask:"g"}},Time:{DateTimeEditMask:{Mask:"T"}}};e.metadata=_.extend({},t),_.defaults(e.metadata,{Mode:"Date"}),_.defaults(e.metadata,{DisplayFormat:n[e.metadata.Mode],EditMask:i[e.metadata.Mode]})},DateTimePickerBuilder.prototype.initDisplayFormat=function(e){return TextEditorBaseBuilder.prototype.initDisplayFormat.call(this,this.applyTimeZone(e))},DateTimePickerBuilder.prototype.initEditMask=function(e){return TextEditorBaseBuilder.prototype.initEditMask.call(this,this.applyTimeZone(e)); +},DateTimePickerBuilder.prototype.applyTimeZone=function(e){var t=e.metadata,n={},i={};return"undefined"!=typeof t.TimeZone&&null!==t.TimeZone&&(i.TimeZone=t.TimeZone),_.defaults(n,e,{formatOptions:i}),n},window.InfinniUI.DatePicker=DatePicker,_.inherit(DatePicker,DateTimePicker),DatePicker.prototype.setTimeZone=function(){DateTimePicker.prototype.setTimeZone.call(this,0)},DatePicker.prototype.createControl=function(e){return new DatePickerControl(e)},DatePicker.prototype.convertValue=function(e){var t=null;return t="undefined"!=typeof e&&null!==e&&e.toString().length?InfinniUI.DateUtils.dateToTimestamp(e):null},window.InfinniUI.DatePickerBuilder=DatePickerBuilder,_.inherit(DatePickerBuilder,DateTimePickerBuilder),DatePickerBuilder.prototype.createElement=function(e){return new DatePicker(e.parent)},DatePickerBuilder.prototype.applyDefaultMetadata=function(e){e.metadata=_.extend({},e.metadata,{Mode:"DatePicker",TimeZone:0}),_.defaults(e.metadata,{DisplayFormat:"{:d}",EditMask:{DateTimeEditMask:{Mask:"d"}}})},window.InfinniUI.TimePicker=TimePicker,_.inherit(TimePicker,DateTimePicker),TimePicker.prototype.createControl=function(e){return new TimePickerControl(e)},TimePicker.prototype.setTimeZone=function(){DateTimePicker.prototype.setTimeZone.call(this,0)},TimePicker.prototype.convertValue=function(e){var t=null;return t="undefined"!=typeof e&&null!==e&&e.toString().length?InfinniUI.DateUtils.dateToTimestampTime(e):null},window.InfinniUI.TimePickerBuilder=TimePickerBuilder,_.inherit(TimePickerBuilder,DateTimePickerBuilder),TimePickerBuilder.prototype.createElement=function(e){return new TimePicker(e.parent)},TimePickerBuilder.prototype.applyDefaultMetadata=function(e){e.metadata=_.extend({},e.metadata,{Mode:"TimePicker",TimeZone:0}),_.defaults(e.metadata,{DisplayFormat:"{:T}",EditMask:{DateTimeEditMask:{Mask:"T"}}})},TimePickerBuilder.prototype.applyMinValue=function(e,t){var n=InfinniUI.DateUtils.parseTimeISO8601toDate(t,0);"undefined"!=typeof n&&e.setMinValue(n)},TimePickerBuilder.prototype.applyMaxValue=function(e,t){var n=InfinniUI.DateUtils.parseTimeISO8601toDate(t,0);"undefined"!=typeof n&&e.setMaxValue(n)},window.InfinniUI.StackPanel=StackPanel,_.inherit(StackPanel,Container),StackPanel.prototype.getOrientation=function(){return this.control.get("orientation")},StackPanel.prototype.setOrientation=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.StackPanelOrientation)&&this.control.set("orientation",e)},StackPanel.prototype.createControl=function(e){return new StackPanelControl(e)},window.InfinniUI.StackPanelBuilder=StackPanelBuilder,_.inherit(StackPanelBuilder,ContainerBuilder),_.extend(StackPanelBuilder.prototype,{createElement:function(e){return new StackPanel(e.parent,e.metadata.ViewMode)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setOrientation(t.Orientation),i}}),window.InfinniUI.Button=Button,_.inherit(Button,Element),_.extend(Button.prototype,{createControl:function(e){return new ButtonControl(e)},setType:function(e){this.control.setType(e)},getType:function(){return this.control.getType()}},buttonMixin),window.InfinniUI.ButtonBuilder=ButtonBuilder,_.inherit(ButtonBuilder,ElementBuilder),_.extend(ButtonBuilder.prototype,{createElement:function(e){var t=this.detectViewMode(e);return new Button(e.parent,t)},detectViewMode:function(e){var t=e.metadata.ViewMode,n=e.parent,i=!1;if(!t)for(;!i;)n?n instanceof PopupButton?(t="link",i=!0):n instanceof MenuBar?(t="menuItem",i=!0):n instanceof View?i=!0:n=n.parent:i=!0;return t},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyButtonMetadata(e),e.metadata.Type&&e.element.setType(e.metadata.Type)}},buttonBuilderMixin),window.InfinniUI.ButtonEdit=ButtonEdit,_.inherit(ButtonEdit,TextBox),ButtonEdit.prototype.createControl=function(e){return new ButtonEditControl(e)},ButtonEdit.prototype.setIcon=function(e){e&&e.toLowerCase&&(e=e.toLowerCase()),this.control.set("icon",e)},ButtonEdit.prototype.getIcon=function(){return this.control.get("icon")},ButtonEdit.prototype.setReadOnly=function(e){"undefined"!=typeof e&&null!==e&&this.control.set("readOnly",!!e)},ButtonEdit.prototype.getReadOnly=function(){return this.control.get("readOnly")},ButtonEdit.prototype.setShowClear=function(e){"undefined"!=typeof e&&null!==e&&this.control.set("showClear",!!e)},ButtonEdit.prototype.getShowClear=function(){return this.control.get("showClear")},ButtonEdit.prototype.onButtonClick=function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onButtonClick(n)},window.InfinniUI.ButtonEditBuilder=ButtonEditBuilder,_.inherit(ButtonEditBuilder,TextBoxBuilder),ButtonEditBuilder.prototype.createElement=function(e){return new ButtonEdit(e.parent)},ButtonEditBuilder.prototype.applyMetadata=function(e){TextBoxBuilder.prototype.applyMetadata.call(this,e),this.initBindingToProperty(e,"Icon"),this.initBindingToProperty(e,"ReadOnly",!0),this.initBindingToProperty(e,"ShowClear",!0),this.buildOnButtonClick(e),this.buildButtonAction(e)},ButtonEditBuilder.prototype.buildButtonAction=function(e){var t=e.element,n=e.metadata,i=e.builder;if(n.Action){var o={parentView:e.parentView,parent:t,basePathOfProperty:e.basePathOfProperty},r=i.build(n.Action,o);t.onButtonClick(function(){r.execute()})}},ButtonEditBuilder.prototype.buildOnButtonClick=function(e){var t=e.element,n=e.metadata,i=n.OnButtonClick;i&&t.onButtonClick(function(e){new ScriptExecutor(t.getScriptsStorage()).executeScript(i.Name||i,e)})},window.InfinniUI.CheckBox=CheckBox,_.inherit(CheckBox,Element),_.extend(CheckBox.prototype,{createControl:function(e){return new CheckBoxControl(e)}},editorBaseMixin),window.InfinniUI.CheckBoxBuilder=CheckBoxBuilder,_.inherit(CheckBoxBuilder,ElementBuilder),_.extend(CheckBoxBuilder.prototype,{createElement:function(e){return new CheckBox(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e)}},editorBaseBuilderMixin),window.InfinniUI.ComboBox=ComboBox,_.inherit(ComboBox,ListEditorBase),_.extend(ComboBox.prototype,labelTextElementMixin),ComboBox.prototype.createControl=function(){return new ComboBoxControl},ComboBox.prototype.setValueTemplate=function(e){this.control.set("valueTemplate",e)},ComboBox.prototype.getValueTemplate=function(){return this.control.get("valueTemplate")},ComboBox.prototype.getAutocomplete=function(){return this.control.get("autocomplete")},ComboBox.prototype.setAutocomplete=function(e){"boolean"==typeof e&&this.control.set("autocomplete",e)},ComboBox.prototype.setShowClear=function(e){"boolean"==typeof e&&this.control.set("showClear",e)},ComboBox.prototype.getShowClear=function(){return this.control.get("showClear")},ComboBox.prototype.getAutocompleteValue=function(){return this.control.get("autocompleteValue")},ComboBox.prototype.setAutocompleteValue=function(e){this.control.set("autocompleteValue",e)},window.InfinniUI.ComboBoxBuilder=ComboBoxBuilder,_.inherit(ComboBoxBuilder,ListEditorBaseBuilder),_.extend(ComboBoxBuilder.prototype,{createElement:function(e){return new ComboBox(e.parent)},applyMetadata:function(e){var t=e.element,n=this,i=ListEditorBaseBuilder.prototype.applyMetadata.call(this,e);if(this.initValueTemplate(i.valueBinding,e),this.initBindingToProperty(e,"LabelText"),t.setAutocomplete(e.metadata.Autocomplete),t.setShowClear(e.metadata.ShowClear),e.metadata.Autocomplete){var o=t.getName();o||(o=n.generateName(),t.setName(o))}},initValueTemplate:function(e,t){var n,i=t.metadata,o=t.element;n="ValueTemplate"in i?this.buildValueTemplate(i.ValueTemplate,t):"ValueFormat"in i?this.buildValueTemplateByFormat(e,i.ValueFormat,t):this.buildValueTemplateByDefault(e,t),o.setValueTemplate(n)},buildValueTemplate:function(e,t){var n=(t.element,t.builder),i=t.basePathOfProperty||new BasePathOfProperty("");return function(o,r){var a,l=r.index,s={parent:t.element,parentView:t.parentView};return void 0!==l&&null!==l&&(a=l,void 0!==a&&null!==a?s.basePathOfProperty=i.buildChild("",a):s.basePathOfProperty=i.buildChild("",l)),n.build(e,s)}},buildValueTemplateByFormat:function(e,t,n){var i=this.buildDisplayFormat(t,n);return function(e,t){var n=(t.index,t.value),o=new Label(this);return o.setHorizontalAlignment("Left"),o.setDisplayFormat(i),o.setValue(n),o}},buildValueTemplateByDefault:function(e,t){return function(e,t){var n=(t.index,t.value),i=new Label(this);return i.setHorizontalAlignment("Left"),i.setValue(n),i}},generateName:function(){return"combobox-"+guid()}}),window.InfinniUI.DataGrid=DataGrid,_.inherit(DataGrid,ListEditorBase),DataGrid.prototype.getColumns=function(){return this.control.get("columns")},DataGrid.prototype.setShowSelectors=function(e){"undefined"!=typeof e&&null!==e&&this.control.set("showSelectors",!!e)},DataGrid.prototype.getShowSelectors=function(){return this.control.get("showSelectors")},DataGrid.prototype.createRow=function(){return new DataGridRow(this)},DataGrid.prototype.setEnabled=function(e){_.isBoolean(e)&&this.control.setEnabled(e)},DataGrid.prototype.setCheckAllVisible=function(e){_.isBoolean(e)&&this.control.set("checkAllVisible",e)},DataGrid.prototype.getCheckAllVisible=function(){return this.control.get("checkAllVisible")},DataGrid.prototype.getCheckAll=function(){return this.control.get("checkAll")},DataGrid.prototype.onCheckAllChanged=function(e){this.control.onCheckAllChanged(this.createControlEventHandler(this,e))},DataGrid.prototype.createControl=function(){return new DataGridControl},DataGrid.prototype.onRowClick=function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onRowClick(n)},DataGrid.prototype.onRowDoubleClick=function(e){var t=this,n=function(n){var i=t._getHandlingMouseEventData(n);e(i)};return this.control.onRowDoubleClick(n)},window.InfinniUI.DataGridBuilder=DataGridBuilder,_.inherit(DataGridBuilder,ListEditorBaseBuilder),_.extend(DataGridBuilder.prototype,{createElement:function(e){return new DataGrid(e.parent)},applyMetadata:function(e){ListEditorBaseBuilder.prototype.applyMetadata.call(this,e);var t=e.metadata,n=e.element;n.setShowSelectors(t.ShowSelectors),n.setCheckAllVisible(t.CheckAllVisible),t.OnCheckAllChanged&&n.onCheckAllChanged(function(e,i){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnCheckAllChanged.Name||t.OnCheckAllChanged,i)}),t.OnRowClick&&n.onRowClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnRowClick.Name||t.OnRowClick,e)}),t.OnRowDoubleClick&&n.onRowDoubleClick(function(e){new ScriptExecutor(n.getScriptsStorage()).executeScript(t.OnRowDoubleClick.Name||t.OnRowDoubleClick,e)}),this.applyColumnsMetadata(e)},applyColumnsMetadata:function(e){var t=e.metadata,n=e.element,i=n.getColumns();if(Array.isArray(t.Columns)){var o=t.Columns.map(function(t){return this.buildColumn(t,e)},this);i.reset(o)}},buildColumn:function(e,t){return this.columnBuilder.build(t.element,e,t)},buildItemProperty:function(e,t,n){function i(e,t,i){var a=n.basePathOfProperty||new BasePathOfProperty(""),l={element:e,parent:o,builder:n.builder,metadata:n.metadata,parentView:n.parentView};l.basePathOfProperty=a.buildChild("",t),r.initBindingToProperty(l,i)}var o=n.element,r=this;return function(t,n){var r=o.createRow();r.setGrid(o),["RowStyle","RowBackground","RowForeground","RowTextStyle"].forEach(i.bind(null,r,n.index));var a=o.getColumns(),l=a.toArray().map(function(i,o){var r=i.getCellTemplate(),a=r(e);return a.bind(i,t,n)});return r.setCellTemplates(l),r.setMultiSelect(o.getMultiSelect()),r.setShowSelectors(o.getShowSelectors()),r}}}),DataGridColumn.prototype.setHeader=function(e){this.setProperty("header",e)},DataGridColumn.prototype.getHeader=function(){return this.getProperty("header")},DataGridColumn.prototype.setCellTemplate=function(e){this.setProperty("cellTemplate",e)},DataGridColumn.prototype.getCellTemplate=function(){return this.getProperty("cellTemplate")},DataGridColumn.prototype.setCellSelector=function(e){this.setProperty("cellSelector",e)},DataGridColumn.prototype.getCellSelector=function(){return this.getProperty("cellSelector")},DataGridColumn.prototype.setHeaderTemplate=function(e){this.setProperty("cellHeaderTemplate",e)},DataGridColumn.prototype.getHeaderTemplate=function(){return this.getProperty("cellHeaderTemplate")},DataGridColumn.prototype.setWidth=function(e){this.setProperty("width",e)},DataGridColumn.prototype.getWidth=function(e){return this.getProperty("width")},DataGridColumn.prototype.setSortable=function(e){this.setProperty("sortable",e)},DataGridColumn.prototype.getSortable=function(){return this.getProperty("sortable")},DataGridColumn.prototype.isSortable=function(){return this.getSortable()},DataGridColumn.prototype.setSortDirection=function(e){this.setProperty("sortDirection",e)},DataGridColumn.prototype.getSortDirection=function(){return this.getProperty("sortDirection")},DataGridColumn.prototype.setSortFunction=function(e){this.setProperty("sortFunction",e)},DataGridColumn.prototype.getSortFunction=function(){return this.getProperty("sortFunction")},DataGridColumn.prototype.setIsHeaderTemplateEmpty=function(e){this.setProperty("isHeaderTemplateEmpty",e)},DataGridColumn.prototype.getIsHeaderTemplateEmpty=function(){return this.getProperty("isHeaderTemplateEmpty")},DataGridColumn.prototype.onSort=function(e){var t=function(t){e(t)};this.on("onSort",t)},DataGridColumn.prototype.onPropertyChanged=function(e,t){this.on("change:"+e,t)},DataGridColumn.prototype.setProperty=function(e,t){var n=this._values[e];this._values[e]=t,n!==t&&this.trigger("change:"+e,null,{property:e,oldValue:n,newValue:t})},DataGridColumn.prototype.getProperty=function(e){return this._values[e]},_.extend(DataGridColumn.prototype,Backbone.Events),_.extend(DataGridColumnBuilder.prototype,displayFormatBuilderMixin),DataGridColumnBuilder.prototype.build=function(e,t,n){var i=new DataGridColumn;return this.buildHeader(i,t,n).buildHeaderTemplate(i,t,n).buildCellTemplate(i,t,n).buildWidth(i,t),t.Sortable&&(i.setSortable(!0),i.setSortDirection(null),!t.SortedDefault||"asc"!==t.SortedDefault&&"desc"!==t.SortedDefault||i.setSortDirection(t.SortedDefault),t.SortFunction&&i.onSort(function(n){new ScriptExecutor(e.getScriptsStorage()).executeScript(t.SortFunction.Name||t.SortFunction,n)})),i},DataGridColumnBuilder.prototype.buildWidth=function(e,t){var n=t.Width;return null!==n&&"undefined"!=typeof n&&e.setWidth(n),this},DataGridColumnBuilder.prototype.buildHeader=function(e,t,n){if(t.Header&&"object"==typeof t.Header){var i=n.builder,o=i.buildType("PropertyBinding",t.Header,{parent:n.element,parentView:n.parentView,basePathOfProperty:n.basePathOfProperty});o.bindElement(e,"header")}else e.setHeader(t.Header);return this},DataGridColumnBuilder.prototype.buildCellTemplate=function(e,t,n){var i;if("CellTemplate"in t)i=this.buildCellTemplateByTemplate(n,t.CellTemplate);else if("CellFormat"in t)i=this.buildCellTemplateByFormat(n,t.CellFormat);else if("CellSelector"in t)i=this.buildCellTemplateBySelector(n,t.CellSelector);else{var o="CellProperty"in t?t.CellProperty:"";i=this.buildCellTemplateByDefault(n,o)}return e.setCellTemplate(i),this},DataGridColumnBuilder.prototype.buildCellTemplateByTemplate=function(e,t){var n=e.element,i=e.builder,o=e.basePathOfProperty||new BasePathOfProperty("");return function(r){return function(r,a){var l=a.index,s={parent:n,parentView:e.parentView};return s.basePathOfProperty=o.buildChild("",l),i.build(t,s)}}},DataGridColumnBuilder.prototype.buildCellTemplateByFormat=function(e,t){var n=e.element,i=(n.parent,this.buildDisplayFormat(t,e));return function(e){return function(t,n){var o=n.index,r=new Label(this),a=e.getSourceProperty(),l=e.getSource(),s=new DataBinding;return a=o.toString(),""!=e.getSourceProperty()&&(a=e.getSourceProperty()+"."+a),r.setDisplayFormat(i),s.bindSource(l,a),s.bindElement(r,"value"),r}}},DataGridColumnBuilder.prototype.buildCellTemplateBySelector=function(e,t){var n=e.element,i=n.parent;return function(){return function(e,n){var o=new Label(this),r=new ScriptExecutor(i.getScriptsStorage()),a=r.executeScript(t.Name||t,{value:n.item});return o.setText(a),o}}},DataGridColumnBuilder.prototype.buildCellTemplateByDefault=function(e,t){var n=e.element,i=n.parent;return function(e){return function(n,o){var r,a=o.index,l=new Label(i),s=e.getSource(),u=new DataBinding;return r=a.toString(),""!=e.getSourceProperty()&&(r=e.getSourceProperty()+"."+r),""!=t&&(r=r+"."+t),u.bindSource(s,r),u.bindElement(l,"value"),l}}},DataGridColumnBuilder.prototype.buildCellSelector=function(e,t,n){var i;if(t.CellSelector)i=function(e,i){var o=new ScriptExecutor(n.parent);return o.executeScript(t.CellSelector.Name||t.CellSelector,i)};else if(t.CellProperty){var o=t.CellProperty;i=function(e){return InfinniUI.ObjectUtils.getPropertyValue(e,o)}}else i=function(e){return e};return e.setCellSelector(i),this},DataGridColumnBuilder.prototype.buildHeaderTemplate=function(e,t,n){var i,o=t.HeaderTemplate;return"undefined"==typeof o||_.isEmpty(o)?(i=this.buildHeaderTemplateByDefault(n),e.setIsHeaderTemplateEmpty(!0)):(i=this.buildHeaderTemplateByMetadata(o,n),e.setIsHeaderTemplateEmpty(!1)),e.setHeaderTemplate(i),this},DataGridColumnBuilder.prototype.buildHeaderTemplateByMetadata=function(e,t){var n=t.element,i=t.builder;return function(o,r){var a={parent:n,parentView:t.parentView};return i.build(e,a)}},DataGridColumnBuilder.prototype.buildHeaderTemplateByDefault=function(e){return function(e,t){var n=new Label(this);return n.setText(t.value),n}},window.InfinniUI.ContextMenu=ContextMenu,_.inherit(ContextMenu,Container),_.extend(ContextMenu.prototype,{createControl:function(){return new ContextMenuControl}}),window.InfinniUI.ContextMenuBuilder=ContextMenuBuilder,_.inherit(ContextMenuBuilder,ContainerBuilder),_.extend(ContextMenuBuilder.prototype,{createElement:function(e){return new ContextMenu(e.parent)},applyMetadata:function(e){ContainerBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.DataNavigation=DataNavigation,_.inherit(DataNavigation,Element),_.extend(DataNavigation.prototype,{createControl:function(){return new DataNavigationControl},getDataSource:function(){return this.control.get("dataSource")},setDataSource:function(e){this.control.set("dataSource",e)},getAvailablePageSizes:function(){return this.control.get("availablePageSizes")},setPageNumber:function(e){this.control.set("pageNumber",e)},getPageNumber:function(){return this.control.get("pageNumber")},onPageNumberChanged:function(e){this.control.onPageNumberChanged(this.createControlEventHandler(this,e))},setPageSize:function(e){this.control.set("pageSize",e)},getPageSize:function(){return this.control.get("pageSize")},onPageSizeChanged:function(e){this.control.onPageSizeChanged(this.createControlEventHandler(this,e))},getPageCount:function(){return this.control.get("pageCount")},setPageCount:function(e){this.control.set("pageCount",e)},getIsDataReady:function(){return this.control.get("isDataReady")},setIsDataReady:function(e){this.control.set("isDataReady",e)}}),window.InfinniUI.DataNavigationBuilder=DataNavigationBuilder,_.inherit(DataNavigationBuilder,ElementBuilder),_.extend(DataNavigationBuilder.prototype,{createElement:function(e){return new DataNavigation(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t,n=e.element,i=e.metadata,o=this;Array.isArray(i.AvailablePageSizes)&&n.getAvailablePageSizes().reset(i.AvailablePageSizes);var r=this.findDataSource(e);r?(t=r.getProperty(".pageSize"),n.setDataSource(r),n.setPageSize(t),r.onItemsUpdated(function(){o.onDataUpdated(n,r)}),r.isDataReady()&&this.onDataUpdated(n,r),n.onPageNumberChanged(function(e,t){r.setProperty(".pageNumber",t.value)}),n.onPageSizeChanged(function(e,t){r.setProperty(".pageSize",t.value)})):console.error("DataSource not found")},onDataUpdated:function(e,t){var n,i=t.getProperty(".totalCount"),o=t.getProperty(".pageSize"),r=t.getProperty(".pageNumber");"number"==typeof i&&(n=Math.ceil(i/o),e.setPageCount(n)),e.setPageNumber(r),e.setIsDataReady(!0)},findDataSource:function(e){var t,n,i=e.metadata.DataSource,o=e.parentView;return i&&o&&(t=o.getContext(),n=t.dataSources[i]),n}}),window.InfinniUI.ExtensionPanel=ExtensionPanel,_.inherit(ExtensionPanel,Container),_.extend(ExtensionPanel.prototype,{createControl:function(){var e=new ExtensionPanelControl;return e},setExtensionName:function(e){return this.control.set("extensionName",e)},setParameters:function(e){return this.control.set("parameters",e)},getParameters:function(){return this.control.get("parameters")},setContext:function(e){this.control.set("context",e)},setBuilder:function(e){this.control.set("builder",e)}}),window.InfinniUI.ExtensionPanelBuilder=ExtensionPanelBuilder,_.inherit(ExtensionPanelBuilder,ContainerBuilder),_.extend(ExtensionPanelBuilder.prototype,{applyMetadata:function(e){var t=e.metadata,n=e.element,i=e.parentView,o=e.builder;ContainerBuilder.prototype.applyMetadata.call(this,e),n.setExtensionName(t.ExtensionName);var r={};_.each(t.Parameters,function(t){var n=o.buildType("Parameter",t,{parentView:i,basePathOfProperty:e.basePathOfProperty});r[n.getName()]=n}),n.setParameters(r),n.setContext(i.getContext()),n.setBuilder(o)},createElement:function(e){var t=new ExtensionPanel(e.parent);return t}}),window.InfinniUI.Divider=Divider,_.inherit(Divider,Element),Divider.prototype.createControl=function(e){return new DividerControl(e)},window.InfinniUI.DividerBuilder=DividerBuilder,_.inherit(DividerBuilder,ElementBuilder),DividerBuilder.prototype.createElement=function(e){return new Divider(e.parent)},DividerBuilder.prototype.applyMetadata=function(e){ElementBuilder.prototype.applyMetadata.call(this,e)},window.InfinniUI.FileBox=FileBox,_.inherit(FileBox,Element),_.extend(FileBox.prototype,{getFile:function(){return this.control.get("file")},createControl:function(){return new FileBoxControl},getMaxSize:function(){return this.control.get("maxSize")},setMaxSize:function(e){this.control.set("maxSize",e)},getAcceptTypes:function(){return this.control.get("acceptTypes")},setAcceptTypes:function(e){var t=this.getAcceptTypes();Array.isArray(e)&&t.set(e)},setFile:function(e){this.control.set("file",e)},setFileName:function(e){return this.control.set("fileName",e),this},setFileSize:function(e){return this.control.set("fileSize",e),this},setFileTime:function(e){return this.control.set("fileTime",e),this},setFileType:function(e){return this.control.set("fileType",e),this}},editorBaseMixin,labelTextElementMixin),window.InfinniUI.FileBoxBuilder=FileBoxBuilder,_.inherit(FileBoxBuilder,ElementBuilder),_.extend(FileBoxBuilder.prototype,{createElement:function(e){return new FileBox(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata;Array.isArray(n.AcceptTypes)&&t.setAcceptTypes(n.AcceptTypes),null!==n.MaxSize&&"undefined"!=typeof n.MaxSize&&t.setMaxSize(n.MaxSize),this.initBindingToProperty(e,"LabelText");var i=new FileBoxValueConverter(t),o=this.applyMetadata_editorBaseBuilder(e,{mode:InfinniUI.BindingModes.toElement,converter:i}),r=o.valueBinding;if(r){var a=r.getSource();e.element.onPropertyChanged("file",function(e,t){var n=t.newValue;null===n?a.setProperty(r.getSourceProperty(),null):n instanceof File&&a.setProperty(r.getSourceProperty(),t.newValue)})}}},editorBaseBuilderMixin),window.InfinniUI.FileBoxValueConverter=FileBoxValueConverter,FileBoxValueConverter.prototype.toElement=function(e,t){var n=t.value,i=t.binding,o=i.getSource(),r=o.getFileProvider(),a=null;return n&&(r&&InfinniUI.BlobUtils.isFileInfo(n)?(a=r.getFileUrl(null,null,InfinniUI.BlobUtils.getContentId(n)),this._element.setFileName(InfinniUI.BlobUtils.getName(n)).setFileSize(InfinniUI.BlobUtils.getSize(n)).setFileTime(InfinniUI.BlobUtils.getTime(n)).setFileType(InfinniUI.BlobUtils.getType(n))):a="string"==typeof n?n:n),a},window.InfinniUI.Frame=Frame,_.inherit(Frame,Element),_.extend(Frame.prototype,{createControl:function(){return new FrameControl}},editorBaseMixin),window.InfinniUI.FrameBuilder=FrameBuilder,_.inherit(FrameBuilder,TextEditorBaseBuilder),_.extend(FrameBuilder.prototype,{applyMetadata:function(e){e.element;ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e)},createElement:function(e){var t=new Frame(e.parent);return t}},editorBaseBuilderMixin),window.InfinniUI.ImageBox=ImageBox,_.inherit(ImageBox,Element),_.extend(ImageBox.prototype,{getFile:function(){return this.control.get("file")},createControl:function(){return new ImageBoxControl},getMaxSize:function(){return this.control.get("maxSize")},setMaxSize:function(e){this.control.set("maxSize",e)},getAcceptTypes:function(){return this.control.get("acceptTypes")},setAcceptTypes:function(e){var t=this.getAcceptTypes();Array.isArray(e)&&t.set(e)}},editorBaseMixin),window.InfinniUI.ImageBoxBuilder=ImageBoxBuilder,_.inherit(ImageBoxBuilder,ElementBuilder),_.extend(ImageBoxBuilder.prototype,{createElement:function(e){return new ImageBox(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata;Array.isArray(n.AcceptTypes)&&t.setAcceptTypes(n.AcceptTypes),null!==n.MaxSize&&"undefined"!=typeof n.MaxSize&&t.setMaxSize(n.MaxSize);var i=new ImageBoxValueConverter(t),o=this.applyMetadata_editorBaseBuilder(e,{mode:InfinniUI.BindingModes.toElement,converter:i}),r=o.valueBinding;if(r){var a=r.getSource();e.element.onPropertyChanged("file",function(e,t){var n=t.newValue;(n instanceof File||null===n)&&a.setProperty(r.getSourceProperty(),t.newValue)})}}},editorBaseBuilderMixin),ImageBoxValueConverter.prototype.toElement=function(e,t){var n=t.value,i=t.binding,o=i.getSource(),r=o.getFileProvider(),a=null;return n&&(a=r&&InfinniUI.BlobUtils.isFileInfo(n)?r.getFileUrl(null,null,InfinniUI.BlobUtils.getContentId(n)):"string"==typeof n?n:n),a},window.InfinniUI.GridPanel=GridPanel,_.inherit(GridPanel,Container),_.extend(GridPanel.prototype,{createControl:function(){return new GridPanelControl}}),window.InfinniUI.GridPanelBuilder=GridPanelBuilder,_.inherit(GridPanelBuilder,ContainerBuilder),_.extend(GridPanelBuilder.prototype,{createElement:function(e){return new GridPanel(e.parent)},applyMetadata:function(e){e.metadata,e.element;ContainerBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.Icon=Icon,_.inherit(Icon,Element),_.extend(Icon.prototype,{createControl:function(){return new IconControl},setValue:function(e){this.control.set("value",e)},getValue:function(){return this.control.get("value")},onValueChanged:function(){}}),window.InfinniUI.IconBuilder=IconBuilder,_.inherit(IconBuilder,ElementBuilder),_.extend(IconBuilder.prototype,{createElement:function(e){return new Icon(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);e.metadata;this.initBindingToProperty(e,"Value")}}),window.InfinniUI.IndeterminateCheckBox=IndeterminateCheckBox,_.inherit(IndeterminateCheckBox,CheckBox),_.extend(IndeterminateCheckBox.prototype,{createControl:function(e){return new IndeterminateCheckBoxControl(e)}},editorBaseMixin),window.InfinniUI.IndeterminateCheckBoxBuilder=IndeterminateCheckBoxBuilder,_.inherit(IndeterminateCheckBoxBuilder,CheckBoxBuilder),_.extend(IndeterminateCheckBoxBuilder.prototype,{createElement:function(e){return new IndeterminateCheckBox(e.parent)}}),window.InfinniUI.Label=Label,_.inherit(Label,Element),_.extend(Label.prototype,{createControl:function(){return new LabelControl},setTextWrapping:function(e){"boolean"==typeof e&&this.control.set("textWrapping",e)},getTextWrapping:function(){return this.control.get("textWrapping")},setTextTrimming:function(e){"boolean"==typeof e&&this.control.set("textTrimming",e)},getTextTrimming:function(){return this.control.get("textTrimming")},getDisplayFormat:function(){return this.control.get("displayFormat")},setDisplayFormat:function(e){return this.control.set("displayFormat",e)},getDisplayValue:function(){return this.control.getDisplayValue()},getEscapeHtml:function(){return this.control.get("escapeHtml")},setEscapeHtml:function(e){_.isBoolean(e)&&this.control.set("escapeHtml",e)}},editorBaseMixin),window.InfinniUI.LabelBuilder=LabelBuilder,_.inherit(LabelBuilder,ElementBuilder),_.extend(LabelBuilder.prototype,{applyMetadata:function(e){var t=e.element;ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e),t.setTextWrapping(e.metadata.TextWrapping),t.setTextTrimming(e.metadata.TextTrimming),t.setEscapeHtml(e.metadata.EscapeHtml),this.initDisplayFormat(e),this.initScriptsHandlers(e)},initDisplayFormat:function(e){var t=e.metadata,n=this.buildDisplayFormat(t.DisplayFormat,e);e.element.setDisplayFormat(n)},initScriptsHandlers:function(e){var t=e.metadata;e.view&&t.OnLoaded&&e.element.onLoaded(function(){new ScriptExecutor(e.view).executeScript(t.OnLoaded.Name||t.OnLoaded)}),e.view&&t.OnValueChanged&&e.element.onValueChanged(function(){new ScriptExecutor(e.view).executeScript(t.OnValueChanged.Name||t.OnValueChanged)})},createElement:function(e){var t=new Label(e.parent,e.metadata.ViewMode);return t.getHeight=function(){return 34},t}},editorBaseBuilderMixin,displayFormatBuilderMixin),window.InfinniUI.Link=Link,_.inherit(Link,Button),Link.prototype.createControl=function(){return new LinkElementControl},Link.prototype.setHref=function(e){this.control.set("href",e)},Link.prototype.getHref=function(){return this.control.get("href")},Link.prototype.setTarget=function(e){this.control.set("target",e)},Link.prototype.getTarget=function(){return this.control.get("target")},window.InfinniUI.LinkBuilder=LinkBuilder,_.inherit(LinkBuilder,ButtonBuilder),_.extend(LinkBuilder.prototype,routerServiceMixin,{createElement:function(e){return new Link(e.parent)},applyMetadata:function(e){ButtonBuilder.prototype.applyMetadata.call(this,e);var t=e.metadata,n=e.element;if(t.Href&&"string"==typeof t.Href)n.setHref(t.Href);else if(t.Href){var i=t.Href.Name,o=t.Href.Params,r=t.Href.Query,a=routerService.getLinkByName(i,"no"),l=a;if(n.setHref(l),o)for(var s=0,u=o.length;u>s;s+=1)"string"==typeof o[s].Value?(n.getHref()!==l&&(l=n.getHref()),l=this.replaceParamsInHref(l,o[s].Name,o[s].Value),n.setHref(l)):this.bindParams(e,o[s].Name,o[s].Value,l);if(r)for(var s=0,u=r.length;u>s;s+=1)"string"==typeof r[s].Value?(n.getHref()!==l&&(l=n.getHref()),l=this.replaceParamsInQuery(l,r[s].Name,r[s].Value),n.setHref(l)):this.bindQuery(e,r[s].Name,r[s].Value,l)}t.Target&&n.setTarget(t.Target)}}),window.InfinniUI.Form=Form,_.inherit(Form,StackPanel),Form.prototype.createControl=function(e){return new FormControl(e)},Form.prototype.onSubmit=function(e){var t=function(t){e(t)};return this.control.onSubmit(t)},Form.prototype.setSubmitFunction=function(e){this.control.setSubmitFunction(e)},Form.prototype.getSubmitFunction=function(){return this.control.getSubmitFunction()},Form.prototype.setMethod=function(e){this.control.setMethod(e)},Form.prototype.getMethod=function(){return this.control.getMethod()},Form.prototype.setAction=function(e){this.control.setAction(e)},Form.prototype.getAction=function(){return this.control.getAction()},window.InfinniUI.FormBuilder=FormBuilder,_.inherit(FormBuilder,StackPanelBuilder),_.extend(FormBuilder.prototype,{createElement:function(e){return new Form(e.parent)},applyMetadata:function(e){var t=e.element,n=e.metadata;StackPanelBuilder.prototype.applyMetadata.call(this,e),n.OnSubmit&&t.onSubmit(function(){return new ScriptExecutor(t.getScriptsStorage()).executeScript(n.OnSubmit.Name||n.OnSubmit)}),n.Method&&t.setMethod(n.Method),n.Action&&t.setAction(n.Action)}}),window.InfinniUI.MenuBar=MenuBar,_.inherit(MenuBar,Container),_.extend(MenuBar.prototype,{createControl:function(e){return new MenuBarControl(e)},highlightItem:function(e){!function(t){var n=t.getChildElements();n.forEach(function(t){var n=_.isString(e)&&t.getName()===e,i=t.control;i&&i.setHighlight(n)})}(this)} +}),window.InfinniUI.MenuBarBuilder=MenuBarBuilder,_.inherit(MenuBarBuilder,ContainerBuilder),_.extend(MenuBarBuilder.prototype,{createElement:function(e){return new MenuBar(e.parent)}}),window.InfinniUI.NumericBox=NumericBox,_.inherit(NumericBox,TextEditorBase),NumericBox.prototype.createControl=function(e){return new NumericBoxControl(e)},NumericBox.prototype.getMinValue=function(){return this.control.get("minValue")},NumericBox.prototype.setMinValue=function(e){this.control.set("minValue",e)},NumericBox.prototype.getMaxValue=function(){return this.control.get("maxValue")},NumericBox.prototype.setMaxValue=function(e){this.control.set("maxValue",e)},NumericBox.prototype.getIncrement=function(){return this.control.get("increment")},NumericBox.prototype.setIncrement=function(e){this.control.set("increment",e)},NumericBox.prototype.setStartValue=function(e){this.control.set("startValue",e)},NumericBox.prototype.validateValue=function(e){var t,n=this.getMinValue(),i=this.getMaxValue();return e=this.convertValue(e),null===e||"undefined"==typeof e?t:(_.isNumber(e)?_.isNumber(n)?_.isNumber(i)?(n>e||e>i)&&(t="Значение должно быть от "+n+" до "+i):n>e&&(t="Значение должно быть больше "+n):_.isNumber(i)&&e>i&&(t="Значение должно быть меьше "+i):t="Значение должно быть числом",t)},NumericBox.prototype.convertValue=function(e){var t=null===e||""===e||"undefined"==typeof e?null:+e;return _.isNumber(t)?t:null},NumericBox.prototype.getStartValue=function(){return this.control.get("startValue")},window.InfinniUI.NumericBoxBuilder=NumericBoxBuilder,_.inherit(NumericBoxBuilder,TextEditorBaseBuilder),NumericBoxBuilder.prototype.createElement=function(e){return new NumericBox(e.parent)},NumericBoxBuilder.prototype.applyMetadata=function(e){TextEditorBaseBuilder.prototype.applyMetadata.call(this,e);var t=e.element,n=e.metadata;t.setMinValue(n.MinValue),t.setMaxValue(n.MaxValue),t.setIncrement(n.Increment),t.setStartValue(n.StartValue)},window.InfinniUI.Panel=Panel,_.inherit(Panel,Container),Panel.prototype.getCollapsible=function(){return this.control.get("collapsible")},Panel.prototype.setCollapsible=function(e){"undefined"!=typeof e&&this.control.set("collapsible",!!e)},Panel.prototype.getCollapsed=function(){return this.control.get("collapsed")},Panel.prototype.setCollapsed=function(e){"undefined"!=typeof e&&this.control.set("collapsed",!!e)},Panel.prototype.getHeaderTemplate=function(){return this.control.get("headerTemplate")},Panel.prototype.setHeaderTemplate=function(e){this.control.set("headerTemplate",e)},Panel.prototype.getHeader=function(){return this.control.get("header")},Panel.prototype.setHeader=function(e){this.control.set("header",e)},Panel.prototype.getCollapsibleArea=function(){return this.control.get("collapsibleArea")},Panel.prototype.setCollapsibleArea=function(e){this.control.set("collapsibleArea",e)},Panel.prototype.onExpanding=function(e){this.control.on("expanding",e)},Panel.prototype.onExpanded=function(e){this.control.on("expanded",e)},Panel.prototype.onCollapsing=function(e){this.control.on("collapsing",e)},Panel.prototype.onCollapsed=function(e){this.control.on("collapsed",e)},Panel.prototype.createControl=function(){return new PanelControl},window.InfinniUI.PanelBuilder=PanelBuilder,_.inherit(PanelBuilder,ContainerBuilder),_.extend(PanelBuilder.prototype,{createElement:function(e){return new Panel(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);n.setCollapsible(t.Collapsible),n.setCollapsed(t.Collapsed),n.setCollapsibleArea(t.CollapsibleArea);var o=this.buildHeaderTemplate(t.HeaderTemplate,e);if(n.setHeaderTemplate(o),t.Header&&"object"==typeof t.Header){var r=e.builder,a=r.buildType("PropertyBinding",t.Header,{parent:n,parentView:e.parentView,basePathOfProperty:e.basePathOfProperty});a.bindElement(n,"header")}else n.setHeader(t.Header);return this.initEventHandler(e),i},initEventHandler:function(e){function t(){return new ScriptExecutor(e.parentView)}var n=e.metadata,i=e.element;n.OnExpanding&&i.onExpanding(function(e,i){return t().executeScript(n.OnExpanding.Name||n.OnExpanding,i)}),n.OnExpanded&&i.onExpanded(function(e,i){return t().executeScript(n.OnExpanded.Name||n.OnExpanded,i)}),n.OnCollapsing&&i.onCollapsing(function(e,i){return t().executeScript(n.OnCollapsing.Name||n.OnCollapsing,i)}),n.OnCollapsed&&i.onCollapsed(function(e,i){return t().executeScript(n.OnCollapsed.Name||n.OnCollapsed,i)})},buildHeaderTemplate:function(e,t){var n;return n="undefined"==typeof e||_.isEmpty(e)?this.buildDefaultHeaderTemplate(t):this.buildMetadataHeaderTemplate(e,t)},buildDefaultHeaderTemplate:function(e){return function(e,t){var n=new Label(this);return n.setText(t.value),n}},buildMetadataHeaderTemplate:function(e,t){var n=t.element,i=t.builder;return function(o,r){var a={parent:n,parentView:t.parentView,basePathOfProperty:t.basePathOfProperty};return i.build(e,a)}}}),window.InfinniUI.PopupButton=PopupButton,_.inherit(PopupButton,Container),_.extend(PopupButton.prototype,{createControl:function(e){return new PopupButtonControl(e)}},buttonMixin),window.InfinniUI.PopupButtonBuilder=PopupButtonBuilder,_.inherit(PopupButtonBuilder,ContainerBuilder),_.extend(PopupButtonBuilder.prototype,{createElement:function(e){var t=this.detectViewMode(e);return new PopupButton(e.parent,t)},detectViewMode:function(e){var t=e.metadata.ViewMode,n=e.parent,i=!1;if(!t)for(;!i;)n?n instanceof MenuBar?(t="forMenu",i=!0):n=n.parent:i=!0;return t},applyMetadata:function(e){ContainerBuilder.prototype.applyMetadata.call(this,e),this.applyButtonMetadata.call(this,e)}},buttonBuilderMixin),window.InfinniUI.PasswordBox=PasswordBox,_.inherit(PasswordBox,Element),_.extend(PasswordBox.prototype,{setAutocomplete:function(e){"undefined"!=typeof e&&null!==e&&this.control.set("autocomplete",!!e)},getAutocomplete:function(){return this.control.get("autocomplete")},createControl:function(){return new PasswordBoxControl},getRawValue:function(){return this.control.get("rawValue")}},editorBaseMixin,labelTextElementMixin),window.InfinniUI.PasswordBoxBuilder=PasswordBoxBuilder,_.inherit(PasswordBoxBuilder,ElementBuilder),_.extend(PasswordBoxBuilder.prototype,{applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e);var t=e.metadata,n=e.element;this.initBindingToProperty(e,"LabelText"),n.setAutocomplete(t.Autocomplete)},createElement:function(e){var t=new PasswordBox(e.parent);return t}},editorBaseBuilderMixin),window.InfinniUI.RadioGroupBuilder=RadioGroupBuilder,_.inherit(RadioGroupBuilder,ListBoxBuilder),_.extend(RadioGroupBuilder.prototype,{createElement:function(e){var t=e.metadata.ViewMode||"checking";return new ListBox(e.parent,t)},applyMetadata:function(e){var t=e.element;ListBoxBuilder.prototype.applyMetadata.call(this,e),t.setMultiSelect(!1)}}),window.InfinniUI.ScrollPanel=ScrollPanel,_.inherit(ScrollPanel,Container),ScrollPanel.prototype.getHorizontalScroll=function(){return this.control.get("horizontalScroll")},ScrollPanel.prototype.setHorizontalScroll=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.ScrollVisibility)&&this.control.set("horizontalScroll",e)},ScrollPanel.prototype.getVerticalScroll=function(){return this.control.get("verticalScroll")},ScrollPanel.prototype.setVerticalScroll=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.ScrollVisibility)&&this.control.set("verticalScroll",e)},ScrollPanel.prototype.createControl=function(){return new ScrollPanelControl},window.InfinniUI.ScrollPanelBuilder=ScrollPanelBuilder,_.inherit(ScrollPanelBuilder,ContainerBuilder),_.extend(ScrollPanelBuilder.prototype,{createElement:function(e){return new ScrollPanel(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setHorizontalScroll(t.HorizontalScroll),n.setVerticalScroll(t.VerticalScroll),i}}),window.InfinniUI.TablePanel=TablePanel,_.inherit(TablePanel,Container),_.extend(TablePanel.prototype,{createControl:function(){return new TablePanelControl}}),window.InfinniUI.TablePanelBuilder=TablePanelBuilder,_.inherit(TablePanelBuilder,ContainerBuilder),_.extend(TablePanelBuilder.prototype,{createElement:function(e){return new TablePanel(e.parent)},applyMetadata:function(e){e.metadata,e.element;ContainerBuilder.prototype.applyMetadata.call(this,e)}}),window.InfinniUI.TabPanel=TabPanel,_.inherit(TabPanel,Container),TabPanel.prototype.getHeaderLocation=function(){return this.control.get("headerLocation")},TabPanel.prototype.setHeaderLocation=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.TabHeaderLocation)&&this.control.set("headerLocation",e)},TabPanel.prototype.getHeaderOrientation=function(){return this.control.get("headerOrientation")},TabPanel.prototype.setHeaderOrientation=function(e){InfinniUI.Metadata.isValidValue(e,InfinniUI.TabHeaderOrientation)&&this.control.set("headerOrientation",e)},TabPanel.prototype.setHeaderTemplate=function(e){this.control.set("headerTemplate",e)},TabPanel.prototype.getHeaderTemplate=function(){return this.control.get("headerTemplate")},TabPanel.prototype.setSelectedItem=function(e){return this.control.setSelectedItem(e)},TabPanel.prototype.getSelectedItem=function(){return this.control.get("selectedItem")},TabPanel.prototype.onSelectedItemChanged=function(e){this.control.on("change:selectedItem",e)},TabPanel.prototype.closeTab=function(e){var t=this.childElements.indexOf(e);if(-1===t)throw new Error("TabPage not found in TabPanel.childElements");this.getItems().removeAt(t)},TabPanel.prototype.createControl=function(){return new TabPanelControl},window.InfinniUI.TabPanelBuilder=TabPanelBuilder,_.inherit(TabPanelBuilder,ContainerBuilder),_.extend(TabPanelBuilder.prototype,{createElement:function(e){return new TabPanel(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setHeaderLocation(t.HeaderLocation),n.setHeaderOrientation(t.HeaderOrientation),this.initScriptHandlers(e),i},initScriptHandlers:function(e){var t=e.metadata,n=e.element;n.onSelectedItemChanged(function(e,t){var n=window.InfinniUI.global.messageBus;n.send("OnChangeLayout",{})}),t.OnSelectedItemChanged&&n.onSelectedItemChanged(function(n,i){return new ScriptExecutor(e.parentView).executeScript(t.OnSelectedItemChanged.Name||t.OnSelectedItemChanged,i)})}}),window.InfinniUI.ToggleButton=ToggleButton,_.inherit(ToggleButton,Element),_.extend(ToggleButton.prototype,{createControl:function(e){return new ToggleButtonControl(e)},getTextOn:function(){return this.control.get("textOn")},setTextOn:function(e){return this.control.set("textOn",e?e:"")},getTextOff:function(){return this.control.get("textOff")},setTextOff:function(e){return this.control.set("textOff",e?e:"")}},editorBaseMixin),window.InfinniUI.ToggleButtonBuilder=ToggleButtonBuilder,_.inherit(ToggleButtonBuilder,ElementBuilder),_.extend(ToggleButtonBuilder.prototype,{createElement:function(e){return new ToggleButton(e.parent)},applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e),this.applyMetadata_editorBaseBuilder(e);var t=e.element,n=e.metadata;t.setTextOff(n.TextOff),t.setTextOn(n.TextOn)}},editorBaseBuilderMixin);var ToolBar=function(e){_.superClass(ToolBar,this,e)};window.InfinniUI.ToolBar=ToolBar,_.inherit(ToolBar,Container),ToolBar.prototype.createControl=function(){return new ToolBarControl},window.InfinniUI.ToolBarBuilder=ToolBarBuilder,_.inherit(ToolBarBuilder,ContainerBuilder),_.extend(ToolBarBuilder.prototype,{createElement:function(e){return new ToolBar(e.parent)}}),window.InfinniUI.TreeView=TreeView,_.inherit(TreeView,ListEditorBase),TreeView.prototype.createControl=function(){return new TreeViewControl},TreeView.prototype.getKeySelector=function(){return this.control.get("keySelector")},TreeView.prototype.setKeySelector=function(e){this.control.set("keySelector",e)},TreeView.prototype.getParentSelector=function(){return this.control.get("parentSelector")},TreeView.prototype.setParentSelector=function(e){this.control.set("parentSelector",e)},window.InfinniUI.TreeViewBuilder=TreeViewBuilder,_.inherit(TreeViewBuilder,ListEditorBaseBuilder),_.extend(TreeViewBuilder.prototype,{createElement:function(e){return new TreeView(e.parent)},applyMetadata:function(e){ListEditorBaseBuilder.prototype.applyMetadata.call(this,e);this._initKeySelector(e),this._initParentSelector(e)},_initKeySelector:function(e){var t,n=e.element,i=e.metadata;t=i.KeySelector?function(e,t){var o=new ScriptExecutor(n.getScriptsStorage());return o.executeScript(i.KeySelector.Name||i.KeySelector,t)}:i.KeyProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,i.KeyProperty)}:function(e,t){return t.value},n.setKeySelector(t)},_initParentSelector:function(e){var t,n=e.element,i=e.metadata;t=i.ParentSelector?function(e,t){var o=new ScriptExecutor(n.getScriptsStorage());return o.executeScript(i.ParentSelector.Name||i.ParentSelector,t)}:i.ParentProperty?function(e,t){return InfinniUI.ObjectUtils.getPropertyValue(t.value,i.ParentProperty)}:function(e,t){return t.value},n.setParentSelector(t)}}),window.InfinniUI.View=View,_.inherit(View,Container),_.extend(View.prototype,{isView:!0,_initDataSourceHandlers:function(){var e=this,t=this.getContext().dataSources,n=[];this.control.onLoaded(function(){for(var i in t)n.push(t[i].getCurrentRequestPromise());n.length>0?$.when.apply($,n).done(function(){e._notifyAboutDsReady()}):e._notifyAboutDsReady()})},_notifyAboutDsReady:function(){this.handlers.onBeforeLoaded.resolve(),this.handlers.onLoaded.resolve()},createControl:function(){return new ViewControl},_initContext:function(){this.context={view:this,scripts:{},parameters:{},dataSources:{},controls:{},messageBus:new MessageBus(this),global:InfinniUI.global};var e=this;this.control.get("scripts").onChange(function(){e.context.scripts={};var t=e.getScripts();t.forEach(function(t){e.context.scripts[t.name]=t.func})}),this.control.get("parameters").onChange(function(){e.context.parameters={};var t=e.getParameters();t.forEach(function(t){e.context.parameters[t.name]=t,e.registerMember(t.name,t)})}),this.control.get("dataSources").onChange(function(){e.context.dataSources={};var t=e.getDataSources();t.forEach(function(t){e.context.dataSources[t.get("name")]=t,e.registerMember(t.name,t)})})},getApplicationView:function(){var e=this.control.get("isApplication"),t=this.parent;return e?this:_.isEmpty(t)?null:t.getApplicationView()},isApplication:function(e){var t=this.control.get("isApplication");return _.isBoolean(e)&&this.control.set("isApplication",e),t},registerElement:function(e){this.context.controls[e.name]=e,this.registerMember(e.name,e)},getContext:function(){return this.context},getScripts:function(){return this.control.get("scripts")},getParameters:function(){return this.control.get("parameters")},getDataSources:function(){return this.control.get("dataSources")},getDialogResult:function(){return this.control.get("dialogResult")},setDialogResult:function(e){return this.control.set("dialogResult",e)},open:function(e,t){var n=this.getContext(),i=this._getScriptArgs();this.eventManager.trigger("onOpening",i,n)?(this.openStrategy.open(),this.eventManager.trigger("onOpened",i,n),e&&e(n,i)):t&&t(n,i)},close:function(e,t,n){if(!this.isClosing){this.isClosing=!0;var i=this.getContext(),o=this._getScriptArgs();n||this.eventManager.trigger("onClosing",o,i)?(this.eventManager.trigger("onClosed",o,i),this.openStrategy.close(),e&&e(i,o)):t&&t(i,o)}},getScriptsStorage:function(){return this},setOpenStrategy:function(e){this.openStrategy=e},onBeforeLoaded:function(e){this.handlers.onBeforeLoaded.done(e)},onLoaded:function(e){this.handlers.onLoaded.done(e)},onOpening:function(e){this.eventManager.on("onOpening",e)},onOpened:function(e){this.eventManager.on("onOpened",e)},onClosing:function(e){this.eventManager.on("onClosing",e)},onClosed:function(e){this.eventManager.on("onClosed",e)},_getScriptArgs:function(){return{source:this}},setHeaderTemplate:function(e){this.headerTemplate=e},getHeaderTemplate:function(){return this.headerTemplate},setCloseButtonVisibility:function(e){"boolean"==typeof e&&this.control.set("closeButtonVisibility",e)},getCloseButtonVisibility:function(){return this.control.get("closeButtonVisibility")},noDataSourceOnView:function(){this._initDataSourceHandlers()},registerMember:function(e,t){this.members[e]=t,e in this.membersDeferreds&&this.membersDeferreds[e].resolve(t)},getDeferredOfMember:function(e){if(!(e in this.membersDeferreds)&&(this.membersDeferreds[e]=$.Deferred(),this.members[e])){var t=this.members[e];this.membersDeferreds[e].resolve(t)}return this.membersDeferreds[e]},setFocusOnControl:function(e){this.control.set("focusOnControl",e)},getFocusOnControl:function(){return this.control.get("focusOnControl")}}),window.InfinniUI.ViewBuilder=ViewBuilder,_.inherit(ViewBuilder,ContainerBuilder),_.extend(ViewBuilder.prototype,{createElement:function(e){return new View(e.parent)},applyMetadata:function(e){e.parentView;e=_.extend({},e),e.parentView=e.element;var t=e.metadata,n=e.element,i=e.builder,o=n.getScripts(),r=n.getParameters();if(t.Scripts)for(var a=0,l=t.Scripts.length;l>a;++a){var s=t.Scripts[a],u={name:s.Name,func:i.buildType("Script",s,{parentView:n})};o.add(u)}if(this.triggerStartCreatingEvent(e),t.Parameters)for(var d,c,h,p=e.params||{},a=0,l=t.Parameters.length;l>a;++a)d=t.Parameters[a].Name,h=p[d],h||(h=new Parameter({view:n}),h.setName(d),"DefaultValue"in t.Parameters[a]&&(c=t.Parameters[a].DefaultValue,h.setValue(c))),r.add(h),t.Parameters[a].OnPropertyChanged&&h.onPropertyChanged(function(){new ScriptExecutor(n).executeScript(t.Parameters[a].OnPropertyChanged)});if(t.DataSources&&t.DataSources.length){var m=i.buildMany(t.DataSources,{parentView:n,suspended:e.suspended});n.getDataSources().set(m),this.changeDataSourcesReadinessByPriority(m);for(var a=0,f=m.length;f>a;a++)m[a].isLazy()||m[a].tryInitData()}else n.noDataSourceOnView();if(t.NotificationSubscriptions){var g=InfinniUI.global.notificationSubscription;for(var y in t.NotificationSubscriptions)!function(){var e=t.NotificationSubscriptions[y];g.subscribe(y,function(t,i){new ScriptExecutor(n).executeScript(e,{context:t,message:i.message})},this)}();n.onClosing(function(){for(var e in t.NotificationSubscriptions)g.unsubscribe(e,this)})}this.initBindingToProperty(e,"CloseButtonVisibility",!0),n.setHeaderTemplate(this.buildHeaderTemplate(n,e)),t.OnOpening&&n.onOpening(function(){return new ScriptExecutor(n).executeScript(t.OnOpening.Name||t.OnOpening)}),t.OnOpened&&n.onOpened(function(){new ScriptExecutor(n).executeScript(t.OnOpened.Name||t.OnOpened)}),t.OnClosing&&n.onClosing(function(){return new ScriptExecutor(n).executeScript(t.OnClosing.Name||t.OnClosing)}),t.OnClosed&&n.onClosed(function(){new ScriptExecutor(n).executeScript(t.OnClosed.Name||t.OnClosed)}),ContainerBuilder.prototype.applyMetadata.call(this,e),n.setFocusOnControl(t.FocusOnControl)},triggerStartCreatingEvent:function(e){var t=e.element,n=e.metadata,i=n.OnStartCreating;i&&new ScriptExecutor(t).executeScript(i.Name||i,{})},changeDataSourcesReadinessByPriority:function(e){var t=_.groupBy(e,function(e){return e.getResolvePriority()}),n=function(e){if(_.keys(e).length){var t=_.chain(e).keys().max().value(),i=e[t],o=i.length,r=_.omit(e,t),a=0;_.each(i,function(e){e.onItemsUpdatedOnce(function(e,t){++a==o&&setTimeout(function(){n(r)},0)}),e.setIsWaiting(!1)})}};_.keys(t).length>1&&(_.each(e,function(e){e.setIsWaiting(!0)}),n(t))}},viewBuilderHeaderTemplateMixin),window.InfinniUI.ViewPanel=ViewPanel,_.inherit(ViewPanel,Element),_.extend(ViewPanel.prototype,{setLayout:function(e){var t=this.getLayout();t&&t.close(),this.control.set("layout",e)},getLayout:function(){return this.control.get("layout")},createControl:function(){return new ViewPanelControl}}),window.InfinniUI.ViewPanelBuilder=ViewPanelBuilder,_.inherit(ViewPanelBuilder,ElementBuilder),_.extend(ViewPanelBuilder.prototype,{applyMetadata:function(e){ElementBuilder.prototype.applyMetadata.call(this,e);var t=e.builder,n=e.element,i=e.metadata;e.parentView;if(_.isEmpty(i.Name)&&(i.Name=guid(),n.setName(i.Name)),InfinniUI.global.containers[i.Name]=n,"LinkView"in i){var o=t.build(i.LinkView,{parentView:e.parentView,parent:e.element});o.setOpenMode("Container"),o.setContainer(i.Name),o.createView(function(e){e.open()})}},createElement:function(e){return new ViewPanel(e.parent)}}),InfinniUI.global.containers={},_.inherit(DataGridRow,Element),_.extend(DataGridRow.prototype,{createControl:function(){return new DataGridRowControl},setCellTemplates:function(e){this.control.set("cellTemplates",e)},toggle:function(e){this.control.set("toggle",e)},getSelected:function(){this.control.get("selected")},setSelected:function(e){this.control.set("selected",e)},setMultiSelect:function(e){this.control.set("multiSelect",e)},setShowSelectors:function(e){this.control.set("showSelectors",e)},onToggle:function(e){this.control.onToggle(e)},setRowBackground:function(e){this.control.set("rowBackground",e)},getRowBackground:function(){return this.control.get("rowBackground")},setRowForeground:function(e){this.control.set("rowForeground",e)},getRowForeground:function(){return this.control.get("rowForeground")},setRowTextStyle:function(e){this.control.set("rowTextStyle",e)},getRowTextStyle:function(){return this.control.get("rowTextStyle")},setRowStyle:function(e){this.control.set("rowStyle",e)},getRowStyle:function(){return this.control.get("rowStyle")},setGrid:function(e){this.control.set("grid",e)},_transformRowProperties:function(e){for(var t in e)e.hasOwnProperty(t)&&(this.setProperty(e[t],this.getProperty(t)),this.onPropertyChanged(t,function(e,t){return function(n,i){e.setProperty(t,i.newValue)}}(this,e[t])))}}),_.inherit(Row,Container),_.extend(Row.prototype,{createControl:function(){return new RowControl}}),_.inherit(RowBuilder,ContainerBuilder),_.extend(RowBuilder.prototype,{createElement:function(e){return new Row(e.parent)},applyMetadata:function(e){e.metadata,e.element;ContainerBuilder.prototype.applyMetadata.call(this,e)}}),_.inherit(Cell,Container),_.extend(Cell.prototype,{createControl:function(){return new CellControl},getColumnSpan:function(){return this.control.get("columnSpan")},setColumnSpan:function(e){this.control.set("columnSpan",e)}}),_.inherit(CellBuilder,ContainerBuilder),_.extend(CellBuilder.prototype,{createElement:function(e){return new Cell(e.parent)},applyMetadata:function(e){var t=e.metadata;e.element;ContainerBuilder.prototype.applyMetadata.call(this,e),e.element.setColumnSpan(t.ColumnSpan)}}),_.inherit(TabPage,Container),TabPage.prototype.getIcon=function(){return this.control.get("icon")},TabPage.prototype.setIcon=function(e){this.control.set("icon",e)},TabPage.prototype.getCanClose=function(){return this.control.get("canClose")},TabPage.prototype.setCanClose=function(e){this.control.set("canClose",e)},TabPage.prototype.close=function(e,t){var n=this.getCanClose(),i=this,o=this.events;n&&this.events.trigger("closing").done(function(){i.parent&&i.parent.closeTab(i),"function"==typeof e&&e(),o.trigger("closed")}).fail(function(){"function"==typeof t&&t()})},TabPage.prototype.onClosing=function(e){this.events.on("closing",e)},TabPage.prototype.onClosed=function(e){this.events.on("closed",e)},TabPage.prototype.getSelected=function(){return this.control.get("selected")},TabPage.prototype.setSelected=function(e){this.control.set("selected",e)},TabPage.prototype.createControl=function(){return new TabPageControl},_.inherit(TabPageBuilder,ContainerBuilder),_.extend(TabPageBuilder.prototype,{createElement:function(e){return new TabPage(e.parent)},applyMetadata:function(e){var t=e.metadata,n=e.element,i=ContainerBuilder.prototype.applyMetadata.call(this,e);return n.setIcon(t.Icon),n.setCanClose(t.CanClose),this.initScriptHandlers(e),i},initScriptHandlers:function(e){var t=e.metadata,n=e.element;t.OnClosing&&n.onClosing(function(){return new ScriptExecutor(e.parentView).executeScript(t.OnClosing.Name||t.OnClosing,{})}),t.OnClosed&&n.onClosed(function(){return new ScriptExecutor(e.parentView).executeScript(t.OnClosed.Name||t.OnClosed,{})})}}),window.InfinniUI.BaseAction=BaseAction,_.extend(BaseAction.prototype,{defaults:{},setProperty:function(e,t){var n=this._properties;n[e]!==t&&(n[e]=t,this.trigger("change:"+e,this,t))},getProperty:function(e){return this._properties[e]},initDefaultValues:function(){},onExecutedHandler:function(e){var t=this.getProperty("onExecutedHandler");_.isFunction(t)&&t(e)}},Backbone.Events),InfinniUI.global.executeAction=function(e,t,n){var i=new ApplicationBuilder,o=i.build(t,{parentView:e.view});o.execute(n)};var BaseActionBuilderMixin={applyBaseActionMetadata:function(e,t){var n=t.metadata;"OnExecuted"in n&&e.setProperty("onExecutedHandler",function(t){new ScriptExecutor(e.parentView).executeScript(n.OnExecuted.Name||n.OnExecuted,t)})}},BaseFallibleActionBuilderMixin={applyBaseFallibleActionMetadata:function(e,t){var n=t.metadata;"OnSuccess"in n&&e.setProperty("onSuccessHandler",function(t){new ScriptExecutor(e.parentView).executeScript(n.OnSuccess.Name||n.OnSuccess,t)}),"OnError"in n&&e.setProperty("onErrorHandler",function(t){new ScriptExecutor(e.parentView).executeScript(n.OnError.Name||n.OnError,t)})}},BaseFallibleActionMixin={onSuccessHandler:function(e){var t=this.getProperty("onSuccessHandler");_.isFunction(t)&&t(e)},onErrorHandler:function(e){var t=this.getProperty("onErrorHandler");_.isFunction(t)&&t(e)}};window.InfinniUI.BaseEditAction=BaseEditAction,_.inherit(BaseEditAction,BaseAction),_.extend(BaseEditAction.prototype,{execute:function(e){var t=this,n=this.getProperty("linkView");this.setProperty("callback",e),n.createView(function(e){t.handleViewReady(e)})},handleViewReady:function(e){var t=this.getProperty("sourceSource"),n=e.getContext().dataSources[t],i=this.getProperty("destinationSource"),o=this.parentView.getContext().dataSources[i],r=this;this.setProperty("editDataSource",n),this.setProperty("destinationDataSource",o);var a=this.setSelectedItem();a?(e.open(),e.onClosed(function(){var t=e.getDialogResult();t==DialogResult.accepted&&r.handleClosingView()})):e.close()},handleClosingView:function(){var e=this.getProperty("callback");this.save(),this.onExecutedHandler(),_.isFunction(e)&&e()},_isObjectDataSource:function(e){return"setItems"in e}});var BaseEditActionBuilderMixin={applyBaseEditActionMetadata:function(e,t){var n=t.metadata,i=t.parentView,o=t.builder,r={};r[n.SourceValue.Source]="BaseEditAction";var a=o.build(n.LinkView,{parent:t.parent,parentView:i,basePathOfProperty:t.basePathOfProperty,suspended:r});e.setProperty("linkView",a),e.setProperty("sourceSource",n.SourceValue.Source),e.setProperty("destinationSource",n.DestinationValue.Source);var l=null!=t.basePathOfProperty?t.basePathOfProperty.resolveProperty(n.DestinationValue.Property):n.DestinationValue.Property;e.setProperty("destinationProperty",l)}};_.inherit(AddAction,BaseEditAction),_.extend(AddAction.prototype,{setSelectedItem:function(){var e=this.getProperty("editDataSource"),t=e.getView();return t.onBeforeLoaded(function(){e.createItem()}),!0},save:function(){var e=this.getProperty("editDataSource"),t=this.getProperty("destinationDataSource"),n=this.getProperty("destinationProperty")||"";if(this._isObjectDataSource(e)){var i=t.getProperty(n)||[],o=e.getSelectedItem();i=_.clone(i),i.push(o),t.setProperty(n,i)}else t.updateItems()}}),window.InfinniUI.AddAction=AddAction,_.extend(AddActionBuilder.prototype,BaseActionBuilderMixin,BaseEditActionBuilderMixin,{build:function(e,t){var n=new AddAction(t.parentView);return this.applyBaseActionMetadata(n,t),this.applyBaseEditActionMetadata(n,t),n}}),window.InfinniUI.AddActionBuilder=AddActionBuilder,_.inherit(AcceptAction,BaseAction),_.extend(AcceptAction.prototype,{execute:function(e){var t=this;this.parentView.onClosed(function(){t.onExecutedHandler(),e&&e()}),this.parentView.setDialogResult(DialogResult.accepted),this.parentView.close()}}),window.InfinniUI.AcceptAction=AcceptAction,_.extend(AcceptActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=new AcceptAction(t.parentView);return this.applyBaseActionMetadata(n,t),n}}),window.InfinniUI.AcceptActionBuilder=AcceptActionBuilder,_.inherit(CancelAction,BaseAction),_.extend(CancelAction.prototype,{execute:function(e){var t=this;this.parentView.onClosed(function(){t.onExecutedHandler(),e&&e()}),this.parentView.setDialogResult(DialogResult.canceled),this.parentView.close()}}),window.InfinniUI.CancelAction=CancelAction,_.extend(CancelActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=new CancelAction(t.parentView);return this.applyBaseActionMetadata(n,t),n}}),window.InfinniUI.CancelActionBuilder=CancelActionBuilder,_.inherit(DeleteAction,BaseAction),_.extend(DeleteAction.prototype,BaseFallibleActionMixin,{execute:function(e){var t=this.getProperty("accept"),n=this,i=this.getProperty("destinationSource"),o=this.getProperty("destinationProperty");i.getProperty(o)?t?new MessageBox({text:localized.strings.DeleteAction.warnMessage,buttons:[{name:localized.strings.DeleteAction.agree,type:"action",onClick:function(){n.remove(e)}},{name:localized.strings.DeleteAction.disagree}]}):this.remove(e):new MessageBox({text:localized.strings.DeleteAction.warnMessageNoItem,buttons:[{name:localized.strings.DeleteAction.cancel}]})},remove:function(e){var t=this.getProperty("destinationSource"),n=this.getProperty("destinationProperty");this._isDocument(n)?this._deleteDocument(t,n,e):this._deleteItem(t,n,e)},_deleteDocument:function(e,t,n){var i=this,o=function(t,o){e.updateItems(),i.onExecutedHandler(o),i.onSuccessHandler(o),_.isFunction(n)&&n()},r=function(e,t){i.onExecutedHandler(t),i.onErrorHandler(t),_.isFunction(n)&&n()},a=e.getProperty(t);e.deleteItem(a,o,r)},_deleteItem:function(e,t,n){var i=t.split("."),o=i.pop(),r=i.join("."),a=e.getProperty(r);a=_.clone(a),a.splice(o,1),e.setProperty(r,a),this.onExecutedHandler(),this.onSuccessHandler(),_.isFunction(n)&&n()},_isDocument:function(e){return"$"==e||_.isFinite(e)}}),window.InfinniUI.DeleteAction=DeleteAction,_.extend(DeleteActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.metadata,i=t.parentView,o=n.DestinationValue.Source,r=n.DestinationValue.Property||"$",a=new DeleteAction(i);this.applyBaseActionMetadata(a,t),this.applyBaseFallibleActionMetadata(a,t);var l=n.Accept!==!1,s=i.getContext().dataSources[o],u=null!=t.basePathOfProperty?t.basePathOfProperty.resolveProperty(r):r;return a.setProperty("accept",l),a.setProperty("destinationSource",s),a.setProperty("destinationProperty",u),a}}),window.InfinniUI.DeleteActionBuilder=DeleteActionBuilder,_.inherit(EditAction,BaseEditAction),_.extend(EditAction.prototype,{setSelectedItem:function(){var e=this.getProperty("editDataSource"),t=this.getProperty("destinationDataSource"),n=this.getProperty("destinationProperty"),i=t.getProperty(n);if(null==i){if(this._isRootItem(n)){var o=window.InfinniUI.global.logger,r=stringUtils.format('EditAction: edit item has not been found. {0} does not have item by path "{1}"',[t.getName(),n]);return o.error(r),!1}i=i||{}}return this._isObjectDataSource(e)?this._setItem(e,i):this._setDocument(e,i),!0},_resumeUpdateEditDataSource:function(){var e=this.getProperty("editDataSource");e.resumeUpdate("BaseEditAction")},_setDocument:function(e,t){var n=e.idOfItem(t);e.setIdFilter(n),e.tryInitData(),this._resumeUpdateEditDataSource()},_setItem:function(e,t){var n=_.clone(t);void 0!==n&&null!==n||(n={}),this._resumeUpdateEditDataSource(),e.setItems([n]),e.setSelectedItem(n)},save:function(){var e=this.getProperty("editDataSource"),t=this.getProperty("destinationDataSource"),n=this.getProperty("destinationProperty");if(this._isObjectDataSource(e)){var i=e.getSelectedItem(),o=this._getRootItem(t,n);this._isRootItem(n)&&(this._overrideOriginItem(o,i),t._includeItemToModifiedSet(o)), +t.setProperty(n,i),t.saveItem(o)}t.updateItems()},_overrideOriginItem:function(e,t){for(var n in e)delete e[n];for(var n in t)e[n]=_.clone(t[n])},_isRootItem:function(e){return!e.includes(".")},_getRootItem:function(e,t){var n=(t||"$").split(".")[0];return e.getProperty(n)}}),window.InfinniUI.EditAction=EditAction,_.extend(EditActionBuilder.prototype,BaseActionBuilderMixin,BaseEditActionBuilderMixin,{build:function(e,t){var n=new EditAction(t.parentView);return this.applyBaseActionMetadata(n,t),this.applyBaseEditActionMetadata(n,t),n}}),window.InfinniUI.EditActionBuilder=EditActionBuilder,_.inherit(OpenAction,BaseAction),_.extend(OpenAction.prototype,{execute:function(e){var t=this.getProperty("linkView"),n=this;t.createView(function(t){t.onLoaded(function(){n.onExecutedHandler(),e&&e(t)}),t.open()})}}),window.InfinniUI.OpenAction=OpenAction,_.extend(OpenActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=new OpenAction(t.parentView);this.applyBaseActionMetadata(n,t);var i=t.builder.build(t.metadata.LinkView,{parent:t.parent,parentView:t.parentView,basePathOfProperty:t.basePathOfProperty});return n.setProperty("linkView",i),n}}),window.InfinniUI.OpenActionBuilder=OpenActionBuilder,_.inherit(RouteToAction,BaseAction),_.extend(RouteToAction.prototype,{execute:function(e){var t=InfinniUI.AppRouter,n=this.getHref();t.navigate(n,{trigger:!0})},getHref:function(){return this.href},setHref:function(e){this.href=e}}),window.InfinniUI.RouteToAction=RouteToAction,_.extend(RouteToActionBuilder.prototype,BaseActionBuilderMixin,routerServiceMixin,{build:function(e,t){var n=new RouteToAction,i=routerService.getLinkByName(t.metadata.Name,"no"),o=t.metadata.Params,r=t.metadata.Query;if(n.setHref(i),t.element=n,o)for(var a=0,l=o.length;l>a;a+=1)"string"==typeof o[a].Value?(n.getHref()!==i&&(i=n.getHref()),i=this.replaceParamsInHref(i,o[a].Name,o[a].Value),n.setHref(i)):this.bindParams(t,o[a].Name,o[a].Value,i);if(r)for(var a=0,l=r.length;l>a;a+=1)"string"==typeof r[a].Value?(n.getHref()!==i&&(i=n.getHref()),i=this.replaceParamsInQuery(i,r[a].Name,r[a].Value),n.setHref(i)):this.bindQuery(t,r[a].Name,r[a].Value,i);return n}}),window.InfinniUI.RouteToActionBuilder=RouteToActionBuilder,_.inherit(SaveAction,BaseAction),_.extend(SaveAction.prototype,BaseFallibleActionMixin,{execute:function(e){var t=this.parentView,n=this.getProperty("dataSource"),i=this.getProperty("canClose"),o=this,r=function(n,r){i!==!1&&(t.setDialogResult(DialogResult.accepted),t.close()),o.onExecutedHandler(r),o.onSuccessHandler(r),_.isFunction(e)&&e(n,r)},a=function(t,n){o.onExecutedHandler(n),o.onErrorHandler(n),_.isFunction(e)&&e(t,n)},l=n.getSelectedItem();n.saveItem(l,r,a)}}),window.InfinniUI.SaveAction=SaveAction,_.extend(SaveActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.parentView,i=n.getContext().dataSources[t.metadata.DestinationValue.Source],o=new SaveAction(n);return this.applyBaseActionMetadata(o,t),this.applyBaseFallibleActionMetadata(o,t),o.setProperty("dataSource",i),o.setProperty("canClose",t.metadata.CanClose),o}}),window.InfinniUI.SaveActionBuilder=SaveActionBuilder,window.InfinniUI.DownloadExecutor=DownloadExecutor,DownloadExecutor.prototype.config=function(e){_.extend(this.options,e)},DownloadExecutor.prototype.run=function(e){var t=this.cleanup.bind(this),n=function(){"function"==typeof this.resultCallback&&this.resultCallback.apply(this,arguments)}.bind(this),i=function(e){"function"==typeof this.successCallback&&this.successCallback.call(this,e),n(e)}.bind(this),o=function(e){"function"==typeof this.successCallback&&this.successCallback.call(this,data),n(e)};this.waitResponse(t).always(function(){t()}).done(i).fail(o),this.openWindow(e)},DownloadExecutor.prototype.openWindow=function(e){var t=this.getName("window"),n=document.createElement("form");this.form=n,n.setAttribute("method",e.method),n.setAttribute("action",e.requestUrl),n.setAttribute("target",t),n.setAttribute("style","display: none;");var i=document.createElement("input");i.setAttribute("name","data"),i.setAttribute("value",JSON.stringify(e.args)),n.appendChild(i);var o=document.createElement("input");o.setAttribute("name","token"),o.setAttribute("value",this.getName("token")),n.appendChild(o),document.body.appendChild(n),this.popup=window.open("about:blank",t),n.submit()},DownloadExecutor.prototype.getName=function(e){return e+this.guid},DownloadExecutor.prototype.cleanup=function(){clearInterval(this.intervalId),clearTimeout(this.timeout),$.removeCookie(this.getName("token")),this.form&&(this.form.remove(),this.form=null),this.popup&&(this.popup.close(),this.popup=null)},DownloadExecutor.prototype.waitResponse=function(e){var t=this.getName("token"),n=$.Deferred(e);return this.intervalId=setInterval(function(){var e=$.cookie(t);e===t&&n.resolve()},this.options.poll),this.timeout=setTimeout(function(){n.reject()},this.options.timeout),n.promise()},_.inherit(ServerAction,BaseAction),_.extend(ServerAction.prototype,BaseFallibleActionMixin,{defaults:{contentType:"application/x-www-form-urlencoded; charset=utf-8",method:"GET",data:{}},updateContentTypeStrategy:function(){var e=this.getProperty("contentType");_.isString(e)&&e.includes("multipart")?this.contentTypeStrategy=serverActionContentTypeStrategy.File:this.contentTypeStrategy=serverActionContentTypeStrategy.Object},execute:function(e){var t=this,n=function(n){t.onExecutedHandler(n),_.isFunction(e)&&e(n)},i=function(e){t.onSuccessHandler(e)},o=function(e){t.onErrorHandler(e)};this.contentTypeStrategy.run(this.provider,this._getRequestData(),n,i,o)},setParam:function(e,t){this.setProperty("params."+e,t)},getParam:function(e){return this.getProperty("params."+e)},_getRequestData:function(){var e=this._replaceParamsInStr(this.getProperty("origin")),t=this._replaceParamsInStr(this.getProperty("path")),n=this.getProperty("method").toUpperCase(),i=this.getProperty("contentType"),o=this._replaceParamsInObject(this.getProperty("data")),r={};return r.requestUrl=e+t,r.method=n,r.contentType=i,_.isEmpty(o)||("GET"==n?r.requestUrl=r.requestUrl+"?"+stringUtils.joinDataForQuery(o):r.args=_.isString(i)&&i.includes("application/json")?JSON.stringify(o):o),r},_replaceParamsInStr:function(e){if(!e)return e;var t=this;return e.replace(/<%([\s\S]+?)%>/g,function(e,n){return t.getParam(n)})},_replaceParamsInObject:function(e){if(_.isEmpty(e))return e;var t=JSON.stringify(e),n=this._replaceParamsInStr(t);return JSON.parse(n)}}),window.InfinniUI.ServerAction=ServerAction,_.extend(ServerActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.builder,i=t.metadata,o=t.parentView,r=new ServerAction(o);if(this.applyBaseActionMetadata(r,t),this.applyBaseFallibleActionMetadata(r,t),r.setProperty("origin",i.Origin),r.setProperty("path",i.Path),i.Data&&r.setProperty("data",i.Data),i.Method&&r.setProperty("method",i.Method),(i.ContentType||i.ContentType===!1)&&r.setProperty("contentType",i.ContentType),i.Params)for(var a in i.Params){var l=i.Params[a];"object"!=typeof l?void 0!==l&&r.setParam(a,l):this._initBinding(a,l,r,o,n)}return r},_initBinding:function(e,t,n,i,o){var r={parent:i,parentView:i},a=o.buildBinding(t,r);a.setMode(InfinniUI.BindingModes.toElement),a.bindElement({setProperty:function(e,t){n.setParam(e,t)},onPropertyChanged:function(){}},e)}}),window.InfinniUI.ServerActionBuilder=ServerActionBuilder;var serverActionContentTypeStrategy={File:{run:function(e,t,n,i,o){e.download(t,n,i,o)}},Object:{run:function(e,t,n,i,o){e.request(t,n,i,o)}}};_.inherit(SelectAction,BaseAction),_.extend(SelectAction.prototype,{execute:function(e){var t=this.parentView,n=this.getProperty("linkView"),i=this,o=this.getProperty("sourceSource"),r=this.getProperty("sourceProperty"),a=this.getProperty("destinationSource"),l=this.getProperty("destinationProperty");n.createView(function(n){n.onClosed(function(s,u){var d=n.getDialogResult();if(d==DialogResult.accepted){var c=n.getContext().dataSources[o],h=t.getContext().dataSources[a],p=c.getProperty(r);h.setProperty(l,p)}i.onExecutedHandler(u),e&&e(s,u)}),n.open()})}}),window.InfinniUI.SelectAction=SelectAction,_.extend(SelectActionBuilder.prototype,BaseActionBuilderMixin,{build:function(e,t){var n=t.builder,i=t.metadata,o=t.parentView,r=new SelectAction(o);this.applyBaseActionMetadata(r,t);var a=n.build(i.LinkView,{parentView:o});return r.setProperty("linkView",a),r.setProperty("sourceSource",i.SourceValue.Source),r.setProperty("sourceProperty",i.SourceValue.Property),r.setProperty("destinationSource",i.DestinationValue.Source),r.setProperty("destinationProperty",i.DestinationValue.Property),r}}),window.InfinniUI.SelectActionBuilder=SelectActionBuilder,_.inherit(UpdateAction,BaseAction),_.extend(UpdateAction.prototype,BaseFallibleActionMixin,{execute:function(e){var t=this.getProperty("dataSource"),n=this,i=function(t,i){n.onExecutedHandler(i),n.onSuccessHandler(i),_.isFunction(e)&&e(t,i)},o=function(t,i){n.onExecutedHandler(i),n.onErrorHandler(i),_.isFunction(e)&&e(t,i)};t.updateItems(i,o)}}),window.InfinniUI.UpdateAction=UpdateAction,_.extend(UpdateActionBuilder.prototype,BaseActionBuilderMixin,BaseFallibleActionBuilderMixin,{build:function(e,t){var n=t.parentView.getContext().dataSources[t.metadata.DestinationValue.Source],i=new UpdateAction(t.parentView);return this.applyBaseActionMetadata(i,t),this.applyBaseFallibleActionMetadata(i,t),i.setProperty("dataSource",n),i}}),window.InfinniUI.UpdateActionBuilder=UpdateActionBuilder,_.extend(ApplicationBuilder.prototype,{builder:null,registerElementBuilders:function(){var e=this.builder;e.register("View",new ViewBuilder),e.register("InlineView",new InlineViewBuilder),e.register("AutoView",new MetadataViewBuilder),e.register("StackPanel",new StackPanelBuilder),e.register("GridPanel",new GridPanelBuilder),e.register("ScrollPanel",new ScrollPanelBuilder),e.register("Panel",new PanelBuilder),e.register("ScrollPanel",new ScrollPanelBuilder),e.register("ViewPanel",new ViewPanelBuilder),e.register("TabPanel",new TabPanelBuilder),e.register("TabPage",new TabPageBuilder),e.register("TablePanel",new TablePanelBuilder),e.register("Cell",new CellBuilder),e.register("Row",new RowBuilder),e.register("MenuBar",new MenuBarBuilder),e.register("DataGrid",new DataGridBuilder),e.register("DataGridColumn",new DataGridColumnBuilder),e.register("ListBox",new ListBoxBuilder),e.register("TextBox",new TextBoxBuilder),e.register("PasswordBox",new PasswordBoxBuilder),e.register("CheckBox",new CheckBoxBuilder),e.register("IndeterminateCheckBox",new IndeterminateCheckBoxBuilder),e.register("ImageBox",new ImageBoxBuilder),e.register("FileBox",new FileBoxBuilder),e.register("Label",new LabelBuilder),e.register("Link",new LinkBuilder),e.register("Form",new FormBuilder),e.register("Icon",new IconBuilder),e.register("DateTimePicker",new DateTimePickerBuilder),e.register("DatePicker",new DatePickerBuilder),e.register("TimePicker",new TimePickerBuilder),e.register("ToggleButton",new ToggleButtonBuilder),e.register("NumericBox",new NumericBoxBuilder),e.register("Button",new ButtonBuilder),e.register("ToolBar",new ToolBarBuilder),e.register("ToolBarButton",new ButtonBuilder),e.register("ComboBox",new ComboBoxBuilder),e.register("RadioGroup",new RadioGroupBuilder),e.register("ExtensionPanel",new ExtensionPanelBuilder),e.register("PopupButton",new PopupButtonBuilder),e.register("DataNavigation",new DataNavigationBuilder),e.register("TreeView",new TreeViewBuilder),e.register("Frame",new FrameBuilder),e.register("ButtonEdit",new ButtonEditBuilder),e.register("RestDataSource",new RestDataSourceBuilder),e.register("DocumentDataSource",new DocumentDataSourceBuilder),e.register("PropertyBinding",new DataBindingBuilder),e.register("ObjectDataSource",new ObjectDataSourceBuilder),e.register("Parameter",new ParameterBuilder),e.register("AcceptAction",new AcceptActionBuilder),e.register("AddAction",new AddActionBuilder),e.register("CancelAction",new CancelActionBuilder),e.register("DeleteAction",new DeleteActionBuilder),e.register("EditAction",new EditActionBuilder),e.register("OpenAction",new OpenActionBuilder),e.register("SaveAction",new SaveActionBuilder),e.register("SelectAction",new SelectActionBuilder),e.register("UpdateAction",new UpdateActionBuilder),e.register("ServerAction",new ServerActionBuilder),e.register("RouteToAction",new RouteToActionBuilder),e.register("BooleanFormat",new BooleanFormatBuilder),e.register("DateTimeFormat",new DateTimeFormatBuilder),e.register("NumberFormat",new NumberFormatBuilder),e.register("ObjectFormat",new ObjectFormatBuilder),e.register("DateTimeEditMask",new DateTimeEditMaskBuilder),e.register("NumberEditMask",new NumberEditMaskBuilder),e.register("TemplateEditMask",new TemplateEditMaskBuilder),e.register("RegexEditMask",new RegexEditMaskBuilder),e.register("Script",new ScriptBuilder),e.register("Divider",new DividerBuilder),e.register("ContextMenu",new ContextMenuBuilder);for(var t=ApplicationBuilder.registerQueue,n=0,i=t.length;i>n;n++)e.register(t[n].name,t[n].builder)},build:function(e,t){return this.builder.build(e,t)},buildType:function(e,t,n){return this.builder.buildType(e,t,n)},buildMany:function(e,t){return this.builder.buildMany(e,t)}}),ApplicationBuilder.registerQueue=[],ApplicationBuilder.addToRegisterQueue=function(e,t){ApplicationBuilder.registerQueue.push({name:e,builder:t})},window.InfinniUI.ApplicationBuilder=ApplicationBuilder,window.InfinniUI.Builder=Builder,InfinniUI.BindingModes={twoWay:"TwoWay",toSource:"ToSource",toElement:"ToElement"};var DataBinding=Backbone.Model.extend({defaults:{mode:InfinniUI.BindingModes.twoWay,converter:null,source:null,sourceProperty:null,element:null,elementProperty:null,defaultValue:null},getDefaultValue:function(){return this.get("defaultValue")},setDefaultValue:function(e){this.set("defaultValue",e)},setMode:function(e){this.set("mode",e)},getMode:function(){return this.get("mode")},setConverter:function(e){this.set("converter",e)},getConverter:function(){return this.get("converter")},bindSource:function(e,t){var n=window.InfinniUI.global.logger,i=this.getElement();if(null!=this.get("source")){var o=stringUtils.format("DataBinding. bindSource: повторная инициализация. {0} заменен на {1}",[this.get("source").getName(),e.getName()]);n.warn(o)}this.set("source",e),this.set("sourceProperty",t);var r=this;i&&this._initPropertyOnElement(),e.onPropertyChanged(t,function(e,t){r._onSourcePropertyChangedHandler(e,t)}),this._isWorkingWithSelectedItems(e)&&this._initBehaviorWithSelectedItem()},_isWorkingWithSelectedItems:function(e){return"function"==typeof e.onSelectedItemChanged},_initBehaviorWithSelectedItem:function(){var e=this.get("sourceProperty"),t=this.get("source"),n=this;this._isRelativeProperty(e)&&t.onSelectedItemChanged(function(i,o){var r={property:e,newValue:t.getProperty(e)};n._onSourcePropertyChangedHandler(i,r)})},_isRelativeProperty:function(e){return!/^\d/.test(e)&&""!=e},getSource:function(){return this.get("source")},getSourceProperty:function(){return this.get("sourceProperty")},bindElement:function(e,t){var n=this,i=window.InfinniUI.global.logger;if(null!=this.get("element")){var o=stringUtils.format("DataBinding. bindElement: повторная инициализация. {0} заменен на {1}",[this.get("element").getName(),e.getName()]);i.warn(o)}this.set("element",e),this.set("elementProperty",t),e.onPropertyChanged(t,function(e,t){n._onElementPropertyChangedHandler(e,t)}),this._initPropertyOnElement()},_initPropertyOnElement:function(){var e,t=this.get("sourceProperty"),n=this.get("source");if(this._shouldRefreshElement()&&n){if("function"==typeof n.isDataReady&&!n.isDataReady())return void("function"==typeof n.tryInitData&&(null!==this.getDefaultValue()&&this._setValueToElement(this.getDefaultValue(),!0),n.tryInitData()));e=n.getProperty(t),this._setValueToElement(e)}},getElement:function(){return this.get("element")},getElementProperty:function(){return this.get("elementProperty")},_onElementPropertyChangedHandler:function(e,t){this._shouldRefreshSource()&&this._setValueToSource(t.newValue,e)},_setValueToSource:function(e,t){var n=this.get("element"),i=this.get("source"),o=this.get("sourceProperty"),r=this.get("converter");null!=r&&r.hasOwnProperty("toSource")&&(e=r.toSource(t,{value:e,binding:this,source:n})),i.setProperty(o,e)},_onSourcePropertyChangedHandler:function(e,t){this._shouldRefreshElement()&&this._setValueToElement(t.newValue)},_setValueToElement:function(e,t){var n=this.get("source"),i=this.get("element"),o=this.get("elementProperty"),r=this.get("converter"),a=this._getContext();null==r||null==r.toElement||t||(e=r.toElement(a,{value:e,binding:this,source:n})),i.setProperty(o,e)},_getContext:function(){var e,t=this.getSource();return t.getView&&t.getView()&&(e=t.getView().getContext()),e},_shouldRefreshSource:function(){var e=this.get("mode");return e==InfinniUI.BindingModes.twoWay||e==InfinniUI.BindingModes.toSource},_shouldRefreshElement:function(){var e=this.get("mode");return e==InfinniUI.BindingModes.twoWay||e==InfinniUI.BindingModes.toElement}});window.InfinniUI.DataBinding=DataBinding;var DataBindingBuilder=function(){};window.InfinniUI.DataBindingBuilder=DataBindingBuilder,DataBindingBuilder.prototype.build=function(e,t){var n,i,o=new DataBinding,r=t.metadata,a=window.InfinniUI.global.logger,l={},s=this;if(null==r.Source)throw a.error("DataBindingBuilder: не указан источник."),new Error("DataBindingBuilder: not declared source in DataBinding metadata.");"DefaultValue"in r&&o.setDefaultValue(r.DefaultValue);var u=t.parentView.getDeferredOfMember(r.Source);return u.done(function(a){var u="undefined"==typeof r.Property||null===r.Property?"":r.Property;n=t.basePathOfProperty?t.basePathOfProperty.resolveProperty(u):u,r.Mode&&o.setMode(r.Mode),r.Converter&&(r.Converter.ToSource&&(i=r.Converter.ToSource,l.toSource=s.scriptByNameOrBody(i,e)),r.Converter.ToElement&&(i=r.Converter.ToElement,l.toElement=s.scriptByNameOrBody(i,e)),o.setConverter(l)),o.bindSource(a,n)}),o},DataBindingBuilder.prototype.isScriptBody=function(e){return e&&"{"==e.substr(0,1)},DataBindingBuilder.prototype.scriptByNameOrBody=function(e,t){if(this.isScriptBody(e)){var n=new ScriptExecutor(t.view);return n.buildScriptByBody(e)}return t.scripts[e]},window.InfinniUI.Providers.MetadataProviderREST=MetadataProviderREST,window.InfinniUI.Providers.QueryConstructorMetadata=QueryConstructorMetadata;var RequestExecutorDataStrategy=function(e){"undefined"==typeof this.strategies[e]?this.strategy=this.strategies.json:this.strategy=this.strategies[e]};window.InfinniUI.RequestExecutorDataStrategy=RequestExecutorDataStrategy,RequestExecutorDataStrategy.prototype.request=function(e,t,n){return this.strategy.apply(this,Array.prototype.slice.call(arguments))},RequestExecutorDataStrategy.prototype.strategies={json:function(e,t,n){return $.ajax({type:e.method||"post",url:e.requestUrl,xhrFields:{withCredentials:!0},beforeSend:this.onBeforeRequest(),success:this.onSuccessRequest(t),error:function(e){200===e.status?this.onSuccessRequest(t)():this.onErrorRequest(n)(e)}.bind(this),data:JSON.stringify(e.args),contentType:"application/json;charset=UTF-8"})},raw:function(e,t,n){var i=e.method||"post",o="GET"===i.toUpperCase();return $.ajax({type:i,url:e.requestUrl,xhrFields:{withCredentials:!0},beforeSend:this.onBeforeRequest(),success:this.onSuccessRequest(t),error:function(e){200===e.status?this.onSuccessRequest(t)():this.onErrorRequest(n)(e)}.bind(this),processData:o,contentType:!1,data:e.args})}},_.extend(RequestExecutorDataStrategy.prototype,ajaxRequestMixin),window.InfinniUI.providerRegister=new DataProviderRegister;var DocumentFileProvider=function(e,t,n){this.urlConstructor=e,this.successCallback=t,this.failCallback=n};window.InfinniUI.Providers.DocumentFileProvider=DocumentFileProvider,DocumentFileProvider.prototype.getFileUrl=function(e,t,n){return this.urlConstructor.getFileUrl(e,t,n)};var DocumentUploadQueryConstructor=function(e){this.host=e};window.InfinniUI.DocumentUploadQueryConstructor=DocumentUploadQueryConstructor,DocumentUploadQueryConstructor.prototype.getFileUrl=function(e,t,n){return stringUtils.format("{0}/blob/{1}",[this.host,n])};var ObjectDataProvider=function(e,t){this.items=e||[],this.idProperty=t||"_id"};_.extend(ObjectDataProvider.prototype,{setItems:function(e){this.items=e},getItems:function(e){e({data:this.items.slice()})},createItem:function(e){var t=this.createLocalItem(this.idProperty);e(t)},saveItem:function(e,t){var n=this.items,i=this._getIndexOfItem(e),o={isValid:!0};-1==i?n.push(e):n[i]=e,t(o)},deleteItem:function(e,t){var n=this.items,i=this._getIndexOfItem(e),o={isValid:!0};-1==i?(o.isValid=!1,o.message="Удаляемый элемент не найден"):n.splice(i,1),t(o)},createIdFilter:function(e){return[{Property:"_id",Value:e,CriteriaType:1}]},_getIndexOfItem:function(e){return _.indexOf(this.items,e)},createLocalItem:function(e){var t={};return t[e]=this._generateLocalId(),t},_generateLocalId:function(){return guid()}}),window.InfinniUI.Providers.ObjectDataProvider=ObjectDataProvider;var RestDataProvider=function(){this.requestParams={get:{method:"get",origin:null,path:"",data:{}},set:{method:"post",origin:null,path:"",data:{}},"delete":{method:"delete",origin:null,path:"",data:{}}}};_.extend(RestDataProvider.prototype,{getOrigin:function(e){return this.requestParams[e].origin},setOrigin:function(e,t){this.requestParams[e].origin=t},getPath:function(e){return this.requestParams[e].path},setPath:function(e,t){this.requestParams[e].path=t},getData:function(e){return this.requestParams[e].data},setData:function(e,t){this.requestParams[e].data=t},getMethod:function(e){return this.requestParams[e].method},setMethod:function(e,t){this.requestParams[e].method=t},send:function(e,t,n){var i,o=this.requestParams[e],r=o.origin+o.path,a=Math.round(1e5*Math.random()),l=this.extractFilesFromData(o.data);if(0==_.size(l.files))i={type:o.method,xhrFields:{withCredentials:!0},url:r,success:function(e){t({requestId:a,data:e})},error:function(e){return"function"!=typeof n?void InfinniUI.global.logger.error(e):void n({requestId:a,data:e})}},"get"!=o.method.toLowerCase()?(i.contentType="application/json",i.data=JSON.stringify(o.data)):_.size(o.data)>0&&(i.url=i.url+"?"+stringUtils.joinDataForQuery(o.data));else{var s=new FormData;s.append("document",JSON.stringify(l.dataWithoutFiles));for(var u in l.files)s.append(u,l.files[u]);i={type:o.method,url:r,xhrFields:{withCredentials:!0},data:s,cache:!1,contentType:!1,processData:!1,success:function(e){t({requestId:a,data:e})},error:function(e){n({requestId:a,data:e})}}}return $.ajax(i),a},getItems:function(e,t){return this.send("get",e,t)},saveItem:function(e,t,n){return this.requestParams.set.data=e,this.send("set",t,n)},deleteItem:function(e,t,n){return this.send("delete",t,n)},createItem:function(e,t){var n=this;setTimeout(function(){e(n.createLocalItem(t))},10)},createLocalItem:function(e){var t={};return t[e]=this._generateLocalId(),t},_generateLocalId:function(){return guid()},extractFilesFromData:function(e){function t(e,i){var o,r,a=Array.isArray(e)?[]:{};for(var l in e)if(e.hasOwnProperty(l))if(r=i.slice(),r.push(l),o=e[l],null!==o&&"object"==typeof o)if(o.constructor===Date)a[l]=o;else{if(o.constructor!==Object&&o.constructor!==Array){a[l]=null,n[r.join(".")]=o;continue}a[l]=t(o,r)}else a[l]=o;return a}var n=Object.create(null),i=t(e,[]);return{dataWithoutFiles:i,files:n}}}),window.InfinniUI.Providers.RestDataProvider=RestDataProvider;var ServerActionProvider=function(){};ServerActionProvider.prototype.request=function(e,t,n,i){var o=Math.round(1e5*Math.random());return $.ajax({type:e.method,url:e.requestUrl,xhrFields:{withCredentials:!0},data:e.args,contentType:e.contentType,success:function(e){var i={requestId:o,data:e};_.isFunction(t)&&t(i),_.isFunction(n)&&n(i)},error:function(e){var n={requestId:o,data:e};_.isFunction(t)&&t(n),_.isFunction(i)&&i(n)}}),o},ServerActionProvider.prototype.download=function(e,t,n,i){new DownloadExecutor(t,n,i).run(e)},window.InfinniUI.Providers.ServerActionProvider=ServerActionProvider;var DataProviderReplaceItemQueue=function(e){var t=e||[],n=[],i="__Id",o=function(e){var n=_.pick(e,t),o=_.isEmpty(e[i])?"Id":i;return n[o]=e[o],n},r=function(e){return _.findWhere(n,o(e))},a=function(e){return _.where(n,o(e))},l=function(e,t){var n=a(e);n.forEach(function(e){e.Id=t.Id,e.value.Id=t.Id})},s=function(e){var t=n.indexOf(e);-1===t&&console.error("DataProviderReplaceItemQueue: Не найден запрос в очереди"),n.splice(t,1);var i=r(e);u(i)},u=function(e){"undefined"!=typeof e&&null!==e&&e.request(e).done(l.bind(void 0,e)).always(s.bind(void 0,e))};this.append=function(e,t){var o=_.defaults(e,_.pick(e.value,["Id",i]));o.request=t;var r=a(o);if(n.push(o),0===r.length)u(e);else if(r.length>1)for(var l=1,s=r.length;s>l;l+=1){var d=n.indexOf(r[l]);n.splice(d,1)}}};window.InfinniUI.Providers.DataProviderReplaceItemQueue=DataProviderReplaceItemQueue;var ObjectDataSource=BaseDataSource.extend({initDataProvider:function(){var e=window.InfinniUI.providerRegister.build("ObjectDataSource");this.set("dataProvider",e)},setItems:function(e){this.get("dataProvider").setItems(e),this.updateItems()}});window.InfinniUI.ObjectDataSource=ObjectDataSource,_.inherit(ObjectDataSourceBuilder,BaseDataSourceBuilder),_.extend(ObjectDataSourceBuilder.prototype,{createDataSource:function(e){return new ObjectDataSource({view:e})},applyMetadata:function(e,t,n,i){if(BaseDataSourceBuilder.prototype.applyMetadata.call(this,e,t,n,i),!1 in n&&i.setIsLazy(!1),n.Items&&($.isArray(n.Items)&&i.setItems(n.Items),$.isPlainObject(n.Items))){var o=e.buildBinding(n.Items,{parentView:t});o.setMode(InfinniUI.BindingModes.toElement),o.bindElement(i,"")}}}),window.InfinniUI.ObjectDataSourceBuilder=ObjectDataSourceBuilder;var Parameter=Backbone.Model.extend({defaults:{name:null,view:null,value:void 0},initialize:function(){},onPropertyChanged:function(e,t){"function"==typeof e?(t=e,this.on("onPropertyChanged",t)):this.on("onPropertyChanged:"+e,t)},getName:function(){return this.get("name")},setName:function(e){this.set("name",e),this.name=e},getView:function(){return this.get("view")},getValue:function(){return this.getProperty("")},setValue:function(e){this.setProperty("",e)},getProperty:function(e){var t=this.get("value");return""==e?t:this._nullToUndefined(InfinniUI.ObjectUtils.getPropertyValue(t,e))},setProperty:function(e,t){var n=this.getValue(),i=this.getProperty(e);t!=i&&(""==e?this.set("value",t):InfinniUI.ObjectUtils.setPropertyValue(n,e,t),this._notifyAboutPropertyChanged(e,t,i))},_notifyAboutPropertyChanged:function(e,t,n){var i=this._getContext(),o={};o.property=e,o.newValue=t,o.oldValue=n,this.trigger("onPropertyChanged",i,o),this.trigger("onPropertyChanged:"+e,i,o)},_getContext:function(){var e=this.getView();return e?e.getContext():void 0},_nullToUndefined:function(e){return null===e?void 0:e}});window.InfinniUI.Parameter=Parameter,window.InfinniUI.ParameterBuilder=ParameterBuilder;var formatMixin={separator:", ",setOptions:function(e){this.options=_.extend({},this.options||{},e)},getOptions:function(){return this.options||{}},format:function(e,t,n){var i;if(null!==e&&"undefined"!=typeof e&&e.constructor===Array){for(var o=[],r=0,a=e.length;a>r;r+=1)o.push(this.formatValue(e[r],t,n));i=o.join(this.separator)}else i=this.formatValue.apply(this,arguments);return i},getFormat:function(){return this.getPropertyValue("formatRule",this.defaultFormat)},setFormat:function(e){this.formatRule=e},getPropertyValue:function(e,t){var n=this[e];return"undefined"==typeof n||null===n?t:n}};window.InfinniUI.FormatMixin=formatMixin,window.InfinniUI.DateTimeFormat=DateTimeFormat,_.extend(DateTimeFormat.prototype,{defaultFormat:"G",formatValue:function(e,t,n){if("undefined"==typeof e||null===e)return"";var i=this;t=t||new Culture(InfinniUI.config.lang);var o=this.createDate(e);return n=n||this.getFormat(),"undefined"!=typeof InfinniUI.localizations[t.name].patternDateFormats[n]&&(n=InfinniUI.localizations[t.name].patternDateFormats[n]),n.replace(this.rg,function(e){if('"'==e[0]||"'"==e[0]){var n=e.length;return e.substring(1,n-1)}return i.rules[e](o,t)})},createDate:function(e){var t,n=this.getOptions();return t=InfinniUI.DateUtils.createDate(e),InfinniUI.DateUtils.changeTimezoneOffset(t,n.TimeZone)},rg:new RegExp("\"[\\s\\S]*\"|'[\\s\\S]*'|yyyy|yy|%y|y|MMMM|MMM|MM|%M|M|dddd|ddd|dd|%d|d|HH|%H|H|hh|%h|h|mm|%m|m|ss|%s|s|tt|%t|t|zzz|zz|%z|z|:|/","g"),rules:{yyyy:function(e){return e.getFullYear().toString()},yy:function(e){var t=e.getFullYear().toString();return t.substring(2)},"%y":function(e){var t=e.getFullYear().toString();return t=t.substring(2),t=parseInt(t),t.toString()},y:function(e){var t=e.getFullYear().toString();return t=t.substring(2),t=parseInt(t),t.toString()},MMMM:function(e,t){var n=e.getMonth(),i=t.dateTimeFormatInfo.monthNames[n];return i},MMM:function(e,t){var n=e.getMonth(),i=t.dateTimeFormatInfo.abbreviatedMonthNames[n];return i},MM:function(e){var t=e.getMonth()+1;return 10>t?"0"+t.toString():t.toString()},"%M":function(e){var t=e.getMonth()+1;return t.toString()},M:function(e){var t=e.getMonth()+1;return t.toString()},dddd:function(e,t){var n,i=e.getDay();return i=0==i?6:i-1,n=t.dateTimeFormatInfo.dayNames[i]},ddd:function(e,t){var n,i=e.getDay();return i=0==i?6:i-1,n=t.dateTimeFormatInfo.abbreviatedDayNames[i]},dd:function(e){var t=e.getDate();return 10>t?"0"+t.toString():t.toString()},"%d":function(e){var t=e.getDate();return t.toString()},d:function(e){var t=e.getDate();return t.toString()},HH:function(e){var t=e.getHours();return 10>t?"0"+t.toString():t.toString()},"%H":function(e){var t=e.getHours();return t.toString()},H:function(e){var t=e.getHours();return t.toString()},hh:function(e){var t=e.getHours();return t>12&&(t-=12),10>t?"0"+t.toString():t.toString()},"%h":function(e){var t=e.getHours();return t>12&&(t-=12),t.toString()},h:function(e){var t=e.getHours();return t>12&&(t-=12),t.toString()},mm:function(e){var t=e.getMinutes();return 10>t?"0"+t.toString():t.toString()},"%m":function(e){var t=e.getMinutes();return t.toString()},m:function(e){var t=e.getMinutes();return t.toString()},ss:function(e){var t=e.getSeconds();return 10>t?"0"+t.toString():t.toString()},"%s":function(e){var t=e.getSeconds();return t.toString()},s:function(e){var t=e.getSeconds();return t.toString()},tt:function(e,t){var n=e.getHours();return 12>n?t.dateTimeFormatInfo.amDesignator:t.dateTimeFormatInfo.pmDesignator},"%t":function(e,t){var n=e.getHours();return 12>n?t.dateTimeFormatInfo.amDesignator.substr(0,1):t.dateTimeFormatInfo.pmDesignator.substr(0,1)},t:function(e,t){var n=e.getHours();return 12>n?t.dateTimeFormatInfo.amDesignator.substr(0,1):t.dateTimeFormatInfo.pmDesignator.substr(0,1)},zzz:function(e){var t,n,i=-e.getTimezoneOffset()/60;return t=100*(i-Math.floor(i)),i=Math.floor(i),0>i?(n="-",i=-i):n="+",t=10>t?"0"+t.toString():t.toString(),10>i?n+"0"+i.toString()+":"+t:n+i.toString()+":"+t},zz:function(e){var t,n=-e.getTimezoneOffset()/60;return n=Math.floor(n),0>n?(t="-",n=-n):t="+",10>n?t+"0"+n.toString():t+n.toString()},z:function(e,t){var n,i=-e.getTimezoneOffset()/60;return i=Math.floor(i),0>i?(n="-",i=-i):n="+",n+i.toString()},"%z":function(e,t){var n,i=-e.getTimezoneOffset()/60;return i=Math.floor(i),0>i?(n="-",i=-i):n="+",n+i.toString()},":":function(e,t){return t.dateTimeFormatInfo.timeSeparator},"/":function(e,t){return t.dateTimeFormatInfo.dateSeparator}}},formatMixin),window.InfinniUI.DateTimeFormatBuilder=DateTimeFormatBuilder;var BooleanFormat=function(){};window.InfinniUI.BooleanFormat=BooleanFormat,_.extend(BooleanFormat.prototype,{defaultTrueText:"True",defaultFalseText:"False",getFalseText:function(){return this.getPropertyValue("falseText",this.defaultFalseText)},setFalseText:function(e){this.falseText=e},getTrueText:function(){return this.getPropertyValue("trueText",this.defaultTrueText)},setTrueText:function(e){this.trueText=e},formatValue:function(e){return e===!1||null===e||"undefined"==typeof e?this.getFalseText():this.getTrueText(); +}},formatMixin),window.InfinniUI.BooleanFormatBuilder=BooleanFormatBuilder,window.InfinniUI.NumberFormat=NumberFormat,_.extend(NumberFormat.prototype,{defaultFormat:"n",formatValue:function(e,t,n){if("undefined"==typeof e||null===e)return"";var i=this;return t=t||new Culture(InfinniUI.config.lang),n=n||this.getFormat(),n.replace(this.rg,function(n,o,r){return r=void 0!==r&&""!=r?parseInt(r):void 0,i.rules[o].call(i,e,r,t)})},rg:/^([pnc])(\d*)$/gi,rules:{P:function(e,t,n){t=void 0!==t?t:n.numberFormatInfo.percentDecimalDigits;var i,o=e>=0,r=this.formatNumber(Math.abs(e),t,n.numberFormatInfo.percentGroupSeparator,n.numberFormatInfo.percentDecimalSeparator);return i=o?n.numberFormatInfo.percentPositivePattern.replace("p",r):n.numberFormatInfo.percentNegativePattern.replace("p",r),i=i.replace("%",n.numberFormatInfo.percentSymbol)},p:function(e,t,n){return e*=100,this.rules.P.call(this,e,t,n)},n:function(e,t,n){t=void 0!==t?t:n.numberFormatInfo.numberDecimalDigits;var i,o=e>=0,r=this.formatNumber(Math.abs(e),t,n.numberFormatInfo.numberGroupSeparator,n.numberFormatInfo.numberDecimalSeparator);return i=o?n.numberFormatInfo.numberPositivePattern.replace("n",r):n.numberFormatInfo.numberNegativePattern.replace("n",r)},N:function(){return this.rules.n.apply(this,arguments)},c:function(e,t,n){t=void 0!==t?t:n.numberFormatInfo.currencyDecimalDigits;var i,o=e>=0,r=this.formatNumber(Math.abs(e),t,n.numberFormatInfo.currencyGroupSeparator,n.numberFormatInfo.currencyDecimalSeparator);return i=o?n.numberFormatInfo.currencyPositivePattern.replace("c",r):n.numberFormatInfo.currencyNegativePattern.replace("c",r),i=i.replace("$",n.numberFormatInfo.currencySymbol)},C:function(){return this.rules.c.apply(this,arguments)}},formatNumber:function(e,t,n,i){e=e.toFixed(t);var o=e.toString(),r=o.split("."),a=this.formatIntPath(r[0],n),l=this.formatFractPath(r[1],i,t);return a+l},formatIntPath:function(e,t){return e.replace(/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g,"$1"+t)},formatFractPath:function(e,t,n){var i,o=e?e:"";return 0==n?"":o.length>=n?t+o.substr(0,n):(i=Math.pow(10,n-o.length),i=i.toString().substr(1),t+o+i)}},formatMixin),window.InfinniUI.NumberFormatBuilder=NumberFormatBuilder,window.InfinniUI.ObjectFormat=ObjectFormat,_.extend(ObjectFormat.prototype,{formatValue:function(e,t,n){t=t||new Culture(InfinniUI.config.lang),n=n||this.getFormat();var i=/{[^}]*}/g,o="";return o=n.replace(i,this.formatIterator.bind(this,e,t))},formatIterator:function(e,t,n){var i,o,r,a,l,s=/^{|}$/g;if(i=n,o=n.replace(s,""),l=o.split(":"),a="object"==typeof e?""===l[0]?e:InfinniUI.ObjectUtils.getPropertyValue(e,l[0]):e,2===l.length){for(var u=0,d=this.formatters.length;d>u;u+=1)if(r=new this.formatters[u](l[1]),r.setOptions(this.getOptions()),o=r.format(a,t),o!==l[1]){i=o;break}}else i=a;return"undefined"==typeof i||null===i?"":i}},formatMixin),window.InfinniUI.ObjectFormatBuilder=ObjectFormatBuilder;var editMaskMixin={reset:function(e){this.value=e,this.buildTemplate(e)},buildTemplate:function(){},getValue:function(){return this.value},getData:function(){return this.getValue()},moveToPrevChar:function(e){return!1},moveToNextChar:function(e){return!1},setNextValue:function(e){return!1},setPrevValue:function(e){return!1},deleteSelectedText:function(e,t){return!1},deleteCharRight:function(e){return!1},deleteCharLeft:function(e){return!1},setCharAt:function(e,t){return!1},pasteStringToMask:function(e,t){return!1},getNextItemMask:function(e){return!1},getText:function(){var e;return null!==this.value&&"undefined"!=typeof this.value&&(e=String(this.value)),e},formatMask:function(e,t){return null===e||"undefined"==typeof e?"":e},getNextIntValue:function(e,t){e=e||{};var n=null,i=null,o="undefined"!=typeof e.step?o:1;return"undefined"!=typeof e.min&&(n=e.min),"undefined"!=typeof e.max&&(i=e.max),t=parseInt(t,10),isNaN(t)?t=null===n?0:n:(t+=o,null!==i&&t>i&&(t=i)),t},getPrevIntValue:function(e,t){e=e||{};var n=null,i="undefined"!=typeof e.step?i:1;return"undefined"!=typeof e.min&&(n=e.min),t=parseInt(t,10),isNaN(t)?t=null===n?0:n:(t-=i,null!==n&&n>t&&(t=n)),t},formatInt:function(e,t){var n="undefined"!=typeof e.width?e.width:null;t=parseInt(t,10);var i,o;return isNaN(t)&&(t=""),i=t.toString(),o=i.length,null!==n&&n>o&&(i=Array(n-o+1).join("0")+i),i},getIsComplete:function(e){return!1}};window.InfinniUI.EditMaskMixin=editMaskMixin;var DateTimeMaskPartStrategy=function(){var e=/^(?:3[0-1]|[012]?[0-9]?)$/,t=/^(?:1[0-2]|0?[1-9]?)$/,n=/^\d{1,4}$/,i=/^\d{1,2}$/,o=/^(?:[2][0-3]|[01]?[0-9]?)$/,r=/^[0-5]?[0-9]$/;return{d:{init:function(){this.width=2,this.min=1,this.max=31},match:function(t){return e.test(t)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setDate(t),e}},dd:{init:function(){this.width=2,this.min=1,this.max=31},match:function(t){return e.test(t)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setDate(t),e}},M:{init:function(){this.width=2,this.min=1,this.max=12},match:function(e){return t.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMonth(parseInt(t,10)-1),e}},MM:{init:function(){this.width=2,this.min=1,this.max=12},match:function(e){return t.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMonth(parseInt(t,10)-1),e}},y:{init:function(){this.width=2,this.min=0,this.max=99},match:function(e){return i.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){var n=parseInt(t,10);if(!isNaN(n)){n="0000"+n;var i=new Date;e.setFullYear(i.getFullYear().toString().substr(0,2)+n.slice(-2))}return e}},yy:{init:function(){this.width=2,this.min=0,this.max=99},match:function(e){return i.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){var n=parseInt(t,10);if(!isNaN(n)){n="0000"+n;var i=new Date;e.setFullYear(i.getFullYear().toString().substr(0,2)+n.slice(-2))}return e}},yyyy:{init:function(){this.width=4,this.min=0,this.max=9999},match:function(e){return n.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setFullYear(t),e}},H:{init:function(){this.width=2,this.min=0,this.max=23},match:function(e){return o.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setHours(t),e}},HH:{init:function(){this.width=2,this.min=0,this.max=23},match:function(e){return o.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setHours(t),e}},m:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMinutes(t),e}},mm:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setMinutes(t),e}},s:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setSeconds(t),e}},ss:{init:function(){this.width=2,this.min=0,this.max=59},match:function(e){return r.test(e)},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevIntValue(e)},next:function(e){return this.getNextIntValue(e)},format:function(e){return this.padNumber(e)},apply:function(e,t){return e.setSeconds(t),e}},MMM:{init:function(){this.min=2,this.max=12,this.width=2},match:function(){return!1},validator:function(e){return this.rangeValidator(e)},prev:function(e){return this.getPrevMonthValue("MMM",e)},next:function(e){return this.getNextMonthValue("MMM",e)},apply:function(e,t){var n=this.getIndexMonthValue("MMM",t);return-1!==n&&e.setMonth(n),e}},MMMM:{init:function(){this.min=2,this.max=12,this.width=2},match:function(){return!1},validator:function(e){var t=this.getListForMask("MMMM");return t.indexOf(e)>-1},prev:function(e){return this.getPrevMonthValue("MMMM",e)},next:function(e){return this.getNextMonthValue("MMMM",e)},apply:function(e,t){var n=this.getIndexMonthValue("MMMM",t);return-1!==n&&e.setMonth(n),e}}}}(),DateTimeMaskPart=function(e){_.extend(this,DateTimeMaskPartStrategy[e]),this.init()};_.extend(DateTimeMaskPart.prototype,{init:function(){},match:function(e){return!0},validator:function(e){return!0},fulfilled:function(e){return this.match(e)&&this.validator(e)},prev:function(e){return e},next:function(e){return e},format:function(e){return e},applyPart:function(e,t){return e},padNumber:function(e){var t="undefined"!=typeof this.width?this.width:null;e=parseInt(e,10);var n,i;return n=isNaN(e)?n="":e.toString(),i=n.length,null!==t&&t>i&&(n=Array(t-i+1).join("0")+n),n},getNextIntValue:function(e){var t="undefined"!=typeof this.min?this.min:null,n="undefined"!=typeof this.max?this.max:null,i="undefined"!=typeof this.step?this.step:1;return e=parseInt(e,10),isNaN(e)?e=null===t?0:t:(e+=i,null!==n&&e>n&&(e=n)),e},getPrevIntValue:function(e){var t="undefined"!=typeof this.min?this.min:null,n="undefined"!=typeof this.step?this.step:1;return e=parseInt(e,10),isNaN(e)?e=null===t?0:t:(e-=n,null!==t&&t>e&&(e=t)),e},getListForMask:function(e){var t,n=new Culture(InfinniUI.config.lang),i=n.dateTimeFormatInfo;switch(e){case"MMMM":t=i.monthNames;break;case"MMM":t=i.abbreviatedMonthNames;break;case"dddd":t=i.dayNames;break;case"ddd":t=i.abbreviatedDayNames}return t},getNextListValueForMask:function(e,t){var n=this.getListForMask(e),i=n.indexOf(t);return"undefined"==typeof n?t:-1===i?n.length?n[0]:"":(i+=1,i=0?n[i]:t)},getIndexListValueForMask:function(e,t){var n=this.getListForMask(e);return"undefined"==typeof n?-1:n.indexOf(t)},getNextMonthValue:function(e,t){return this.getNextListValueForMask(e,t)},getPrevMonthValue:function(e,t){return this.getPrevListValueForMask(e,t)},getIndexMonthValue:function(e,t){return this.getIndexListValueForMask(e,t)},rangeValidator:function(e){return e=parseInt(e,10),!(isNaN(e)||ethis.max)}}),window.InfinniUI.DateTimeEditMask=DateTimeEditMask,_.extend(DateTimeEditMask.prototype,editMaskMixin),_.extend(DateTimeEditMask.prototype,{getNextItemMask:function(e){var t,n=this.getItemTemplate(e);return null!==n?(t=this.moveToNextChar(n.left+n.width),t>n.left+n.width&&(e=t)):e=this.moveToNextChar(e),e},setNextValue:function(e){var t,n,i,o=this.getItemTemplate(e);return null!==o?(t=o.item,i=this.masks[t.mask],"undefined"!=typeof i.next&&(n=i.next(t.text),"undefined"!=typeof i.format&&(n=i.format(n)),t.text=""+n,e=Math.min(o.left+t.text.length,e))):e=this.moveToNextChar(e),e},setPrevValue:function(e){var t,n,i,o=this.getItemTemplate(e);return null!==o?(t=o.item,i=this.masks[t.mask],"undefined"!=typeof i.prev&&(n=i.prev(t.text),"undefined"!=typeof i.format&&(n=i.format(n)),t.text=""+n,e=Math.min(o.left+t.text.length,e))):e=this.moveToNextChar(e),e},deleteSelectedText:function(e,t,n){var i,o,r,a,l,s=e,u=t;n=n||"";for(var d=e+n.length-1;(i=this.getItemTemplate(s))&&(l=s,o=s-i.left,r=i.item.text,a=this.masks[i.item.mask],r=r.substring(0,o)+n+r.substring(o+u),r.length&&!a.match(r)||(i.item.text=r),s=this.getNextItemMask(s),l!==s);)u=t-(s-e),n="";return this.moveToNextChar(d)},deleteCharLeft:function(e,t){var n,i,o=this.getItemTemplate(e);return t?e=this.deleteSelectedText(e,t):null!==o?o.index>0?(n=o.item,e--,i=n.text.slice(0,o.index-1)+n.text.slice(o.index),n.text=i):(o=this.getItemTemplate(o.left-1),e=o.left+o.item.text.length):e=this.moveToNextChar(e),e},deleteCharRight:function(e,t){var n,i,o=this.getItemTemplate(e);return t?e=this.deleteSelectedText(e,t):null!==o?(n=o.item,i=n.text.slice(0,o.index)+n.text.slice(o.index+1),n.text=i,0==n.text.length&&(e=this.getNextItemMask(e))):e=this.moveToNextChar(e),e},pasteStringToMask:function(e,t){function n(e){return Math.max(e.mask.length,e.text.length)}function i(n){for(var i=0,o=[],r=a;rn[r].position-i-t&&o.push(n[r]):i+=n[r].length;return o[o.length-1]}e=e.replace(/\D/gi,"");var o=e.split(""),r=this.getItemTemplate(t),a=this.template.indexOf(r.item),l=0,s=i(this.template);l=s?this.template.indexOf(s):a;for(var u=0,d=0,c=a;l+1>c;c++)if("object"==typeof this.template[c])if(c==a){d=n(this.template[c]),u=d-(t-this.template[c].position);var h=this.template[c].text.slice(0,t-this.template[c].position),p="";if(!h)for(var m=0;md&&o.splice(d,o.length),this.template[c].text=o.join("")+this.template[c].text.slice(o.length,d))},getItemTemplate:function(e){var t,n,i,o=this.template,r=0,a=null;if("undefined"==typeof o&&(this.reset(),o=this.template),!Array.isArray(o))return null;for(var l=0,s=o.length;s>l;l+=1)if(t=o[l],"string"==typeof t)r+=t.length;else{if(n=Math.max(this.masks[t.mask].width,t.text.length),r>e||e>=r&&r+n>=e){i=e-r,a={item:t,left:r,width:n,index:e-r};break}r+=n}return a},setCharAt:function(e,t){var n,i,o,r,a,l=this.getItemTemplate(t);if(null!==l)if(i=l.item,r=t-l.left,r>i.text.length&&(t=l.left),o=this.masks[i.mask],a=t-i.position,0>a&&(a=0),n=i.text.slice(a,a+1)?[i.text.slice(0,a),e,i.text.slice(a+1)].join(""):[i.text.slice(0,l.index),e,i.text.slice(l.index)].join(""),o.match(n))i.text=n,t=this.moveToNextChar(t),o.width===a+1&&(t=this.getNextItemMask(t));else{var s=this.template.indexOf(l.item)+1;this.template[s]===e&&(t=this.getNextItemMask(t))}else t=this.moveToNextChar(t);return t},moveToPrevChar:function(e){e-=1;for(var t,n,i,o=this.template,r=0,a=r,l=0,s=o.length;s>l;l+=1)if(t=o[l],"string"==typeof t)r+=t.length,"undefined"==typeof a&&(a=r);else{if(n=t.mask,i=Math.max(this.masks[n].width,t.text.length),e>=r&&r+i>e)break;if(r>e){e=a;break}r+=i,a=r}return l===s&&e>a&&(e=a),e},moveToNextChar:function(e){e+=1;for(var t,n,i,o,r=this.template,a=0,l=0,s=r.length;s>l;l+=1)if(t=r[l],"string"==typeof t)a+=t.length;else{if(i=t.mask,o=Math.max(this.masks[i].width,t.text.length),e>=a&&a+o>=e)break;if(a>e){e=a;break}a+=o,n=a}return l===s&&e>=n&&(e=n),e},getText:function(){var e,t,n=this.template,i=[];if(Array.isArray(n)){for(var o=0,r=n.length;r>o;o+=1)e=n[o],"string"==typeof e?i.push(e):(t=Array(this.masks[e.mask].width+1).join("_"),e.text.lengtht;t+=1)a=i.indexOf(o[t]),-1!==a&&(r=o[t].length,i=[i.substring(0,a),Array(r+1).join(" "),i.substring(a+r)].join(""),l.push({mask:o[t],position:a}));l.sort(function(e,t){return e.position-t.position});var s,u=[],d=0;for(t=0,n=l.length;n>t;t+=1)s=l[t],do;o+=1)if(e=n[o],"string"!=typeof e&&(t=this.masks[e.mask],!t.validator(e.text))){i=!1;break}return i},masks:{d:new DateTimeMaskPart("d"),dd:new DateTimeMaskPart("dd"),M:new DateTimeMaskPart("M"),MM:new DateTimeMaskPart("MM"),y:new DateTimeMaskPart("y"),yy:new DateTimeMaskPart("yy"),yyyy:new DateTimeMaskPart("yyyy"),H:new DateTimeMaskPart("H"),HH:new DateTimeMaskPart("HH"),m:new DateTimeMaskPart("m"),mm:new DateTimeMaskPart("mm"),s:new DateTimeMaskPart("s"),ss:new DateTimeMaskPart("ss"),MMM:new DateTimeMaskPart("MMM"),MMMM:new DateTimeMaskPart("MMMM")}}),window.InfinniUI.DateTimeEditMaskBuilder=DateTimeEditMaskBuilder;var TemplateMaskPartStrategy=function(){function e(e){return"undefined"==typeof e||""===e||null===e}var t=/^[a-zA-Zа-яА-ЯёЁ]$/,n=/^\d$/,i=/^[-+]$/;return{c:{required:!1,width:1,validator:function(e){return!0},regexp:".?"},C:{required:!0,width:1,validator:function(t){return!e(t)},regexp:"."},l:{required:!1,width:1,validator:function(n){return e(n)||t.test(n)},regexp:"[a-zA-Zа-яА-ЯёЁ]?"},L:{required:!0,width:1,validator:function(n){return!e(n)&&t.test(n)},regexp:"[a-zA-Zа-яА-ЯёЁ]"},a:{required:!1,width:1,validator:function(i){return e(i)||t.test(i)||n.test(i)},regexp:"[a-zA-Zа-яА-ЯёЁ0-9]?"},A:{required:!0,width:1,validator:function(i){return!e(i)&&(t.test(i)||n.test(i))},regexp:"[a-zA-Zа-яА-ЯёЁ0-9]?"},"#":{required:!1,width:1,validator:function(t){return e(t)||i.test(t)},regexp:"[-+]?"},9:{required:!1,width:1,validator:function(t){return e(t)||n.test(t)},regexp:"[0-9]?"},0:{required:!0,width:1,validator:function(t){return!e(t)&&n.test(t)},regexp:"[0-9]"}}}(),TemplateMaskPart=function(e){_.extend(this,TemplateMaskPartStrategy[e])};_.extend(TemplateMaskPart.prototype,{validate:function(e){return this.validator(e)},getIsComplete:function(e){return!this.required||""!==e&&"undefined"!=typeof e&&null!==e}}),window.InfinniUI.TemplateEditMask=TemplateEditMask,_.extend(TemplateEditMask.prototype,editMaskMixin),_.extend(TemplateEditMask.prototype,{buildTemplate:function(e){var t,n=[],i=this.mask,o=0;for(i.length;on;)e=this.mask.substr(n,1),"undefined"!=typeof this.masks[e]?l(this.masks[e].regexp):"\\"===e?(t=this.mask.substr(n+1,1),"undefined"!=typeof this.masks[t]?this.maskSaveLiteral&&(l(t,!0),n+=1):this.maskSaveLiteral&&l("\\\\",!0)):this.maskSaveLiteral&&l(a.test(e)?e.replace(a,"\\$1"):e,!0),n+=1;return new RegExp("^"+o.join("")+"$")},setValue:function(e){null!==e&&"undefined"!=typeof e||(e=""),e+="";var t,n,i,o,r,a=this.getRegExpForMask();for(t=a.test(e)?e.match(a).slice(1):[],i=0,o=this.template.length;o>i;i+=1)r=this.template[i],"string"!=typeof r&&(n=t.shift(),r.text="undefined"==typeof n?"":n[0])},getValue:function(){var e,t=this.template,n=[];if(Array.isArray(t)){for(var i=0,o=t.length;o>i;i+=1)"string"==typeof t[i]&&this.maskSaveLiteral?n.push(t[i]):(e=t[i].text,null!==e&&""!==e&&"undefined"!=typeof e&&n.push(e));return n.join("")}},moveToNextChar:function(e){e=Math.max(e,0);var t,n,i=this.template,o=i.slice(e),r=null,a=!1;for(t=0,n=o.length;n>t;t+=1){if("string"!=typeof o[t]){r=o[t].position-(a?1:0);break}a=!0}if(null===r)for(o=i.slice(0,e),t=o.length-1;t>=0;t-=1)if("string"!=typeof o[t]){r=o[t].position;break}return null===r?0:r+1},moveToPrevChar:function(e){e=Math.max(e,0);var t,n,i=this.template,o=i.slice(0,e),r=null,a=!1;for(t=o.length-1;t>=0;t-=1){if("string"!=typeof o[t]){r=o[t].position+(a?1:0);break}a=!0}if(null===r)for(o=i.slice(e),t=0,n=o.length;n>t;t+=1)if("string"!=typeof o[t]){r=o[t].position;break}return null===r?0:r},getItemTemplate:function(e){var t,n,i,o=this.template,r=0,a=null;if("undefined"==typeof o&&(this.reset(),o=this.template),!Array.isArray(o))return null;for(var l=0,s=o.length;s>l;l+=1)if(t=o[l],"string"==typeof t)r+=t.length;else{if(n=Math.max(this.masks[t.mask].width,t.text.length),r>e||e>=r&&r+n>=e){i=e-r,a={item:t,left:r,width:n,index:e-r};break}r+=n}return a},deleteCharRight:function(e,t){var n,i,o;if(t>0)return this.deleteSelectedText(e,t);for(i=0,o=this.template.length;o>i;i+=1)if(n=this.template[i],!("string"==typeof n||n.position0)return this.deleteSelectedText(e,t);for(i=this.template.length-1;i>=0;i-=1)if(n=this.template[i],!("string"==typeof n||n.position>=e)){e=n.position,n.text="";break}return e},pasteStringToMask:function(e,t){function n(e){return Math.max(e.mask.length,e.text.length)}function i(n){for(var i=0,o=[],r=a;rn[r].position-i-t&&o.push(n[r]):i+=n[r].length;return o[o.length-1]}e=e.replace(/\D/gi,"");var o=e.split(""),r=this.getItemTemplate(t),a=this.template.indexOf(r.item),l=0,s=i(this.template);l=s?this.template.indexOf(s):a;for(var u=0,d=0,c=a;l+1>c;c++)if("object"==typeof this.template[c])if(c==a){d=n(this.template[c]),u=d-(t-this.template[c].position);var h=this.template[c].text.slice(0,t-this.template[c].position);this.template[c].text=h+e.slice(0,u),o.splice(0,u)}else c!=l?(d=n(this.template[c]),this.template[c].text=o.join("").slice(0,d),o.splice(0,d)):(d=n(this.template[c]),o.length>d&&o.splice(d,o.length),this.template[c].text=o.join("")+this.template[c].text.slice(o.length,d))},clearText:function(e,t){for(var n,i,o=0,r=this.template.length;r>o;o+=1)n=this.template[o],"string"!=typeof n&&n.position>=e&&n.position0&&this.clearText(t,n);for(var a=0,l=r.length;l>a;a+=1){var s=r[a];if("string"!=typeof s){if(s.position===t){i=this.masks[s.mask],o=e.substr(0,1),i.validate(o)&&(s.text=o,t=this.getNextItemMask(t));break}if(s.position>t)break}}return t},deleteSelectedText:function(e,t,n){var i=this.clearText(e,t);return"undefined"!=typeof n&&(i=this.setCharAt(n,e)),i},getNextItemMask:function(e){var t,n,i;for(n=this.template.length-1;n>=0;n-=1)if(t=this.template[n],"string"!=typeof t){if(t.position<=e){e="undefined"==typeof i?this.moveToNextChar(e):i;break}i=t.position}return e},getText:function(){for(var e,t=this.template,n=[],i=0,o=t.length;o>i;i+=1)"string"==typeof t[i]?n.push(this.parseSpecialChars(t[i])):(e=t[i].text,"undefined"==typeof e||""===e||null===e?n.push(this.maskPlaceHolder):n.push(e));return n.join("")},getIsComplete:function(){var e,t,n,i,o=!0;for(e=0,t=this.template.length;t>e&&(n=this.template[e],"string"==typeof n||(i=this.masks[n.mask],o=i.getIsComplete(n.text),o));e+=1);return o},reset:function(e){this.value=null,"undefined"!=typeof e&&null!==e&&(this.value=e),this.buildTemplate(e)},parseSpecialChars:function(e){var t,n,i=InfinniUI.localizations[InfinniUI.config.lang],o={"/":i.dateTimeFormatInfo.dateSeparator,":":i.dateTimeFormatInfo.timeSeparator,"%":i.numberFormatInfo.percentSymbol,$:i.numberFormatInfo.currencySymbol},r=[];for(var a in o)if(o.hasOwnProperty(a)){for(r=e.split(""),t=0,n=r.length;n>t;t+=1)r[t]===a&&(r[t]=o[a]);e=r.join("")}return e},masks:{c:new TemplateMaskPart("c"),C:new TemplateMaskPart("C"),l:new TemplateMaskPart("l"),L:new TemplateMaskPart("L"),a:new TemplateMaskPart("a"),A:new TemplateMaskPart("A"),"#":new TemplateMaskPart("#"),9:new TemplateMaskPart("9"),0:new TemplateMaskPart("0")}}),window.InfinniUI.TemplateEditMaskBuilder=TemplateEditMaskBuilder,window.InfinniUI.NumberEditMask=NumberEditMask,_.extend(NumberEditMask.prototype,editMaskMixin),_.extend(NumberEditMask.prototype,{placeholder:"_",getDecimalSeparator:function(){var e,t=this.getItemTemplate(),n=t.item,i=/^[npc]/i,o=n.mask.match(i);if(o&&o.length>0)switch(o[0]){case"n":case"N":e=this.culture.numberFormatInfo.numberDecimalSeparator;break;case"p":case"P":e=this.culture.numberFormatInfo.percentDecimalSeparator;break;case"c":case"C":e=this.culture.numberFormatInfo.currencyDecimalSeparator}return e},getDecimalDigits:function(){var e=this.getItemTemplate(),t=e.item,n=/^([npc])(\d*)$/i,i=t.mask.match(n),o=0;if(i&&i.length>0)if(""!==i[2])o=+i[2];else switch(i[0]){case"n":case"N":o=this.culture.numberFormatInfo.numberDecimalDigits;break;case"p":case"P":o=this.culture.numberFormatInfo.percentDecimalDigits;break;case"c":case"C":o=this.culture.numberFormatInfo.currencyDecimalDigits}return o},reset:function(e){this.value=null,"undefined"!=typeof e&&null!==e&&""!==e&&(e=+e,isNaN(e)&&(e=null),this.value=e),this.template=this.buildTemplate(e)},buildTemplate:function(e){var t=/([npc])(\d*)/i,n=this.mask,i=[],o=this;return n.replace(t,function(t,n,r,a,l){i.push(l.slice(0,a)),i.push({mask:t,text:null===e?"":o.formatMask(e,t),value:e}),i.push(l.substring(a+t.length))}),this.template=i},getText:function(){var e,t=[];if(Array.isArray(this.template)){for(var n=0,i=this.template.length;i>n;n+=1)e=this.template[n],"string"==typeof e?t.push(e):"undefined"==typeof e.value||null===e.value?t.push(this.formatMask(0,e.mask).replace(/0/g,this.placeholder)):t.push(this.formatMask(e.value,e.mask));return t.join("")}},formatMask:function(e,t){return null===e||"undefined"==typeof e?"":this.format.format(e,void 0,t)},moveToPrevChar:function(e){e=e>0?e-1:0;var t,n,i=this.getItemTemplate(),o=i.item,r=o.text;if(ee?0:e+1;for(var t,n,i=this.getItemTemplate(),o=i.item,r=o.text+" ",a=Math.max(0,e-i.left),l=/\d/,s=0,u=0,d=r.length;d>u;u+=1)if(l.test(r[u])!==!1||(n=r[u-1],"undefined"==typeof n||l.test(n))){if(!(a>u)){t=u;break}s=u}return"undefined"==typeof t&&(t=s),e=i.left+t},setCharAt:function(e,t){var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text,l=this.getDecimalSeparator();if("-"===e&&null!==r.value)r.value=-r.value,r.text=this.formatMask(r.value,r.mask),t+=r.text.length-a.length;else if(t>=i.left&&t<=i.left+a.length)if(n=t-o,e==l)null===r.value&&(r.value=0,r.text=this.formatMask(r.value,r.mask)),-1!==r.text.indexOf(l)&&(t=o+r.text.indexOf(l)+l.length);else if(/\d/.test(e)){var s;s=a.indexOf(l)>-1&&n>a.indexOf(l),r.value=this.parseText([a.slice(0,n),e,a.slice(n)].join(""),r.value),r.text=this.formatMask(r.value,r.mask),""===a?t=this.moveToNextChar(o):(t=s?t+1:t+r.text.length-a.length,t=Math.min(t,o+this.getIndexOfEndDigit(r.text)))}return t},updateDigitValue:function(e,t){var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text;if(ei.left+a.length)return this.moveToNextChar(e);if(n=e-o,n>0){var l=a.substr(n-1,1);/\d/.test(l)&&(l=parseInt(l,10)+t,l>9&&(l=9),0>l&&(l=0),r.value=this.parseText([a.slice(0,n-1),l,a.slice(n)].join(""),r.value),r.text=this.formatMask(r.value,r.mask))}return e},setNextValue:function(e){return this.updateDigitValue(e,1)},setPrevValue:function(e){return this.updateDigitValue(e,-1)},deleteSelectedText:function(e,t,n){function i(e,t){return e.slice(0,t).split(" ").length-1}var o=this.getItemTemplate(),r=o.item,a=r.text,l=r.value.toString(),s=t+e;n||(n="");var u=a.slice(0,e),d=a.slice(0,s),c=u.split(" ").length-1,h=d.split(" ").length-1;e-=c,s-=h;var p=l.slice(0,e)+n+l.slice(s,l.length),m=this.formatMask(p,r.mask);return n?(e+=n.length+c,e+=i(m,e)):e+=i(m,e),_.isEmpty(p)&&(p=null),this.reset(p),p?e:0},deleteCharRight:function(e,t){if(t>0)return this.deleteSelectedText(e,t);var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text,l=this.getDecimalSeparator();if(ei.left+a.length)return this.moveToNextChar(0);if(a.length===t)return this.clearValue(r);n=e-o;var s=a.indexOf(l),u=a.substr(n).search(/\d/);if(0===r.value)r.value=null,r.text=this.formatMask(r.value,r.mask),e=o;else if(u>-1){u+=n;var d=a.split(l);n===d[0].length?r.value=this.parseText(d[0],r.value):r.value=this.parseText([a.substr(0,u),a.substr(u+1)].join(""),r.value),r.text=this.formatMask(r.value,r.mask),s>u&&(e=o+Math.min(u-(a.length-1-r.text.length),r.text.indexOf(l)))}return e},clearValue:function(e){return e.value=null,e.text=this.formatMask(e.value,e.mask),0},deleteCharLeft:function(e,t){var n,i=this.getItemTemplate(),o=i.left,r=i.item,a=r.text,l=this.getDecimalSeparator(),s=a.indexOf(l);if(ei.left+a.length)return this.moveToNextChar(0);var u=this.getDecimalDigits();if(n=e-o,a.length===t)return this.clearValue(r);var d=!1;if(0>=n)return e;s>-1&&(d=n>s,n===a.length-u&&(n-=l.length,e-=l.length));var c=a.slice(0,n),h=/\d/.test(c)?c.length-c.split("").reverse().join("").search(/\d/)-1:0;return r.value=this.parseText(a.slice(0,h)+a.slice(h+1),r.value),r.text=this.formatMask(r.value,r.mask),e=d?e-1:e+r.text.length-a.length,0===r.value&&1>=e&&(r.value=null,r.text=this.formatMask(r.value,r.mask),e=o),e},getValue:function(){var e,t=this.getItemTemplate();return t&&(e=t.item.value),e},getIndexOfEndDigit:function(e){var t=e.split("").reverse().join("").search(/\d/);return-1===t?t:e.length-t},parseText:function(e,t){var n,i=this.getItemTemplate(),o=i.item,r=o.mask,a=this.getDecimalSeparator(),l=this.getDecimalDigits(),s=e.split(a);return s=s.map(function(e,t){var n=e.replace(/[^\d]/g,"");return 1===t?n.substr(0,l):n}),e=s.join("."),""===e?n=null:(n=+e,0>t&&(n=-n),/^p/.test(r)&&(n/=100)),n},getItemTemplate:function(){var e,t=this.template,n=0,i=null;if("undefined"==typeof t&&(this.reset(),t=this.template),!Array.isArray(t))return null;for(var o=0,r=t.length;r>o;o+=1){if(e=t[o],"string"!=typeof e){i={item:e,left:n};break}n+=e.length}return i},getIsComplete:function(){return!0}}),window.InfinniUI.NumberEditMaskBuilder=NumberEditMaskBuilder, +window.InfinniUI.RegexEditMask=RegexEditMask,_.extend(RegexEditMask.prototype,editMaskMixin),_.extend(RegexEditMask.prototype,{getIsComplete:function(e){var t;return this.value=e,null!==this.mask?(t=new RegExp(this.mask),t.test(e)):!1}}),window.InfinniUI.RegexEditMaskBuilder=RegexEditMaskBuilder;var openModeAutoFocusMixin={applyAutoFocus:function(){function e(){clearInterval(i)}var t=this.view,n=t&&t.getFocusOnControl();if(n){var i=setInterval(function(){var i=t.findAllChildrenByName(n);if(Array.isArray(i)&&i.length>0){var o=i[0];if(!jQuery.contains(document,o.control.controlView.el))return;o.setFocus&&o.setFocus(),e()}},1e3/3);setTimeout(e,3e3)}}};_.extend(LinkViewBuilderBase.prototype,{build:function(e,t){var n=t.metadata,i=this.getParentViewByOpenMode(t,n.OpenMode),o=new LinkView(i),r=this.getViewTemplate(t,i);return o.setViewTemplate(r),"OpenMode"in n&&o.setOpenMode(n.OpenMode),"Container"in n&&o.setContainer(n.Container),"DialogWidth"in n&&o.setDialogWidth(n.DialogWidth),o},getViewTemplate:function(){throw"LinkViewBuilderBase.getViewTemplate: В потомке LinkViewBuilderBase не переопределен метод getViewTemplate."},buildViewByMetadata:function(e,t,n,i){var o=e.builder,r=this.buildParameters(e);if(null!=t){var a=o.buildType("View",t,{parentView:n,parent:n,params:r,suspended:e.suspended});i(a)}else window.InfinniUI.global.logger.error("LinkViewBuilderBase.buildViewByMetadata: view metadata for "+e.metadata+" not found.")},buildParameters:function(e){var t,n=e.metadata.Parameters,i=e.builder,o=e.parentView,r={};if("undefined"!=typeof n&&null!==n)for(var a=0;a'),e.find(".lastfocuselementinmodal").on("focusin",function(){e.find(".firstfocuselementinmodal").focus()}),e.keydown(function(t){$(document.activeElement).hasClass("lastfocuselementinmodal")&&9==(t.which||t.keyCode)&&(t.preventDefault(),e.find(".firstfocuselementinmodal").focus()),$(document.activeElement).hasClass("firstfocuselementinmodal")&&9==(t.which||t.keyCode)&&t.shiftKey&&(t.preventDefault(),e.find(".lastfocuselementinmodal").focus())})},close:function(){this.$modal&&this.$modal.modal("hide")},cleanup:function(){this.view.remove(),this.$modal.remove(),InfinniUI.ModalWindowService.modalWasClosed(this.$modal)}}),window.InfinniUI.AutoHeightService={windowHeight:0,clientHeight:0,exchange:null,times:[],setOuterHeight:function(e,t,n){var i=0;"border-top-width,border-bottom-width,padding-top,padding-bottom,margin-top,margin-bottom".split(",").forEach(function(t){i+=parseInt(e.css(t))});var o=t-i;return n&&(o+=n),e.height(o),o},getModalSelector:function(){return".modal-scrollable"},getSelector:function(){return".verticalAlignmentStretch:not(:hidden)"},buildTree:function(e,t,n,i,o){var e=_.where(o,{parent:t}),r=this;return{isElement:-1!==_.indexOf(i,t),element:t,$element:n,child:_.map(e,function(t){return r.buildTree(e,t.element,t.$element,i,o)})}},formTree:function(e,t,n){for(var i,o,r,a=[],l=0,s=e.length;s>l;l+=1){r=e[l],o=$(r);do{i=o.parent();var u=_.findWhere(a,{element:r});if("undefined"!=typeof u)break;a.push({element:r,$element:o,parent:i.get(0),$parent:i}),o=i,r=i.get(0)}while(r!==t)}return this.buildTree(a,t,n,e,a)},setHeight:function(e,t){var n=e.$element.attr("data-height-original");return""===n&&e.$element.attr("data-height-original",e.element.style.height),this.setOuterHeight(e.$element,t)},defineWay:function(e,t){var n=this.setHeight(e,t),i=this;e.$element.hasClass("pl-scroll-panel")||e.$element.hasClass("modal-scrollable")||(e.$element.hasClass("tab-content")?_.each(e.child,function(e){i.defineWay(e,n)}):e.child.length>0&&this.goThroughTree(e,n))},goThroughTree:function(e,t){var n=this;e.$element.parentsUntil(".modal").length&&e.$element.attr("data-height-original",e.element.style.height);var i=e.$element.children(":not(:hidden):not(.modal-scrollable):not(.modal-backdrop):not(.pl-dropdown-container)"),o=_.chain(i).filter(function(e){var t=$(e).css("position");return-1===["absolute","fixed"].indexOf(t)}).groupBy("offsetTop").value(),r=[];_.each(o,function(t,n){var i=[];_.each(t,function(t){var n=_.find(e.child,function(e){return e.element===t});n&&i.push(n)}),r.push(i.length?0:_.reduce(t,function(e,t){return Math.max(e,$(t).outerHeight(!0))},0)),o[n]=i},this);var a=_.reduce(r,function(e,t){return e+t},0),l=_.reduce(o,function(e,t){return t.length?e+1:e},0),s=Math.floor((t-a)/l);_.each(o,function(e){0!==e.length&&_.each(e,function(e){n.defineWay(e,s)},this)},this)},resize:function(e,t){var n=Date.now(),i=$(e),o=(this.setOuterHeight(i,t),i.find(this.getSelector()));if(0!==o.length){var r=this.formTree(o,e,i);this.defineWay(r,t);var a=Date.now();this.timeWatcher(a-n)}},timeWatcher:function(e){e>=20&&this.times.push(e)},getTimes:function(){return this.times},resizeView:function(e,t){var n=$("#page-content",e),i=this.setOuterHeight(n,t);this.resize(n.get(0),i)},resizeDialog:function(){var e=this;$(this.getModalSelector()).each(function(t,n){e._resizeDialog($(n)),e.resetDialogHeight($(n))})},resetDialogHeight:function(e){if(e.children()){var t=e.children(),n=$(".modal-header",t),i=$(".modal-body",t),o=$(this.getSelector(),e);o.parentsUntil(".modal").css("height","auto"),t.css("top",(this.windowHeight-n.outerHeight(!0)-i.outerHeight(!0))/2),e.children(".modal:not(.messagebox)").height(i.outerHeight(!0)+n.outerHeight(!0))}},_resizeDialog:function(e){var t=10,n=e.children();n.css("margin-top",0);var i=$(".modal-header",n),o=$(".modal-body",n),r=i.outerHeight(!0);o.css("max-height",this.windowHeight-r),n.css("margin-top",0);var a=$(this.getSelector(),e);if(0!==a.length){var l=this.setOuterHeight(e,this.windowHeight-2*t),s=this.setOuterHeight(n,l)-i.outerHeight();this.resize(o[0],s)}},recalculation:function(e){return window.InfinniUI.config.disableAutoHeightServicer===!0?!1:(e=e||document,$("#page-content").addClass("page-content-overflow-hidden"),this.windowHeight=$(window).height(),this.onChangeLayout(e),void(null===this.exchange&&(this.exchange=window.InfinniUI.global.messageBus,this.exchange.subscribe("OnChangeLayout",_.debounce(this.onChangeLayout.bind(this),42)))))},slidingRecalculation:function(e){for(var t=this,n=3;n>=0;n--)setTimeout(function(){t.recalculation(e)},500+300*n)},onChangeLayout:function(e){_.isEmpty(e)&&(e=document);var t=this.windowHeight-$("#page-top:not(:hidden)",e).outerHeight()-$("#page-bottom:not(:hidden)",e).outerHeight()-$("#menu-area:not(:hidden)",e).outerHeight();this.resizeView(e,t),this.resizeDialog()}},window.InfinniUI.openHomePage=function(e){var t=new ApplicationBuilder,n=new SpecialApplicationView;n.open(e),InfinniUI.AutoHeightService.slidingRecalculation(),subscribeRecalculationOnWindowResize(),getHomePageLinkViewPromise().done(function(e){var i=t.buildType("OpenAction",e,{parentView:n});i.execute()})},null!=InfinniUI.config.configName&&(document.title=InfinniUI.config.configName),moment.locale(InfinniUI.config.lang&&InfinniUI.config.lang.substr(0,2)),InfinniUI.providerRegister.register("ObjectDataSource",InfinniUI.Providers.ObjectDataProvider),InfinniUI.providerRegister.register("MetadataDataSource",function(e){return InfinniUI.AutoHeightService.slidingRecalculation(),new InfinniUI.Providers.MetadataProviderREST(new InfinniUI.Providers.QueryConstructorMetadata(InfinniUI.config.serverUrl,e))}),InfinniUI.providerRegister.register("DocumentDataSource",InfinniUI.Providers.RestDataProvider),InfinniUI.providerRegister.register("RestDataSource",InfinniUI.Providers.RestDataProvider),InfinniUI.providerRegister.register("ServerActionProvider",function(){return new InfinniUI.Providers.ServerActionProvider}),InfinniUI.ModalWindowService=function(){function e(){var e=window.InfinniUI.global.messageBus;e.send("OnChangeLayout",{})}var t=[];return{modalWasOpened:function(e){if(0!=t.length){var n=t[t.length-1];n.modal.hide(),n.background.hide()}t.push(e)},modalWasClosed:function(n){for(var i=0,o=t.length;o>i;i++)if(t[i].modal==n){if(i==o-1&&0!=i){var r=t[i-1];r.modal.show(),r.background.show(),e()}t.splice(i,1);break}}}}();var notificationSubscription=function(){var e,t,n,i,o,r={},a=!1,l=function(a,l,s){i=l||i,o=s||o,t=a||t,n=$.hubConnection(window.InfinniUI.config.serverUrl),e=n.createHubProxy(t),_.size(r)>0&&(u("on"),h())},s=function(t,n,i){r[t]||(r[t]=[],e&&e.on(t,c(t))),r[t].push({context:i,callback:n}),!a&&e&&h()},u=function(t){for(var n in r)"on"===t?e.on(n,c(n)):e.off(n)},d=function(t,n){if(n){for(var i=r[t],o=0,a=i.lenght;a>o;o+=1)i[o].context==n&&i.splice(o,1);if(0!==i.length)return}r[t]&&(delete r[t],e&&e.off(t)),f()},c=function(e){return function(t){var n=r[e];if(n)for(var i=0,o=n.length;o>i;i+=1)n[i].callback(n[i].context,{message:t})}},h=function(){a=!0,n.start().done(function(){console.log("signalR: connection is started"),"function"==typeof i&&i()}).fail(function(){console.log("signalR: connection fail"),a=!1,"function"==typeof o&&o()})},p=function(){e&&(a=!1,u("off"),e=null,n.stop())},m=function(){n&&e&&p(),l()},f=function(){0===_.size(r)&&p()},g=function(e,t){n||console.error("Необходимо сначала установить соединение с сервером"),n[e]&&n[e](t)},y=function(){return $.connection.isDisconnecting(n)};return{startConnection:l,reconnection:m,subscribe:s,unsubscribe:d,stopConnection:p,on:g,isDisconnected:y}}();InfinniUI.global.notificationSubscription=notificationSubscription,InfinniUI.NotifyService=function(){var e=window.InfinniUI.global.messageBus;e.subscribe(messageTypes.onNotifyUser,function(e,t){var n,i=t.value.messageText,o=t.value.messageType||"info";switch(o){case"success":case"error":case"warning":case"info":n=o;break;default:n="info"}"undefined"!=typeof toastr&&toastr[n](i)})}(),window.InfinniUI.ScriptBuilder=ScriptBuilder,ScriptBuilder.prototype.build=function(e,t){var n=t.metadata,i=n.Name,o=n.Body,r=new Function("context","args",o);return function(e,t){var n;try{n=r.call(void 0,e,t)}catch(a){console.groupCollapsed("%2$s: %1$c%3$s","color: #ff0000",i,a.message),console.error(o),console.groupEnd()}return n}},window.InfinniUI.ScriptExecutor=ScriptExecutor,ScriptExecutor.prototype.executeScript=function(e,t){var n,i,o,r=this.parent,a=r.getContext();return"{"==e.substr(0,1)?(i=e.substr(1,e.length-2),o=this.buildScriptByBody(i)):(o=r.getScripts().getById(e),o&&(o=o.func)),a&&o&&(n=o.call(void 0,a,t)),n},ScriptExecutor.prototype.buildScriptByBody=function(e){var t=this.parent.getContext(),n={metadata:{Body:e,Name:"InlineScript"}},i=new ScriptBuilder;return i.build(t,n)};var AjaxLoaderIndicator=function(e,t){var n={delay:50},i=_.defaults({},t,n),o=new AjaxLoaderIndicatorModel({},i),r=new AjaxLoaderIndicatorView({model:o}),a=r.render().$el;e.append(a)},AjaxLoaderIndicatorModel=Backbone.Model.extend({defaults:{requests:0,progress:!1},initialize:function(e,t){var n=window.InfinniUI.global.messageBus;n.subscribe(messageTypes.onDataLoaded,this.onDataLoaded.bind(this)),n.subscribe(messageTypes.onDataLoading,this.onDataLoading.bind(this));var i=t.delay>0?_.debounce(this.onRequestsChanged.bind(this),50):this.onRequestsChanged.bind(this);this.on("change:requests",i)},onDataLoading:function(){var e=this.get("requests");this.set("requests",e+1)},onDataLoaded:function(){var e=this.get("requests");this.set("requests",e-1)},onRequestsChanged:function(e,t){this.set("progress",t>0)}}),AjaxLoaderIndicatorView=Backbone.View.extend({className:"pl-ajaxloader",template:InfinniUI.Template["services/ajaxLoaderIndicator/template/template.tpl.html"],hiddenClassName:"hidden",initialize:function(){this.listenTo(this.model,"change:progress",this.updateProgress)},render:function(){return this.$el.html(this.template()),this.updateProgress(),this},updateProgress:function(){var e=this.model.get("progress");this.$el.toggleClass(this.hiddenClassName,!e)}}),MessageBox=Backbone.View.extend({tagName:"div",className:"modal fade messagebox",UI:{firstfocuselementinmodal:".firstfocuselementinmodal",lastfocuselementinmodal:".lastfocuselementinmodal"},events:{"click .btn":"onClickButtonHandler","focusin .lastfocuselementinmodal":"onFocusinLastElement",keydown:"onKeydownHandler"},template:InfinniUI.Template["services/messageBox/template/default.tpl.html"],initialize:function(e){this.setOptions(e),$(document.activeElement).blur(),this.render(),this.bindUIElements(),this.$el.modal({show:!0})},setOptions:function(e){this.options=this.applyDefaultOptions(e)},onFocusinLastElement:function(){this.ui.firstfocuselementinmodal.focus()},onKeydownHandler:function(e){document.activeElement===this.ui.lastfocuselementinmodal[0]&&9==(e.which||e.keyCode)&&(e.preventDefault(),this.ui.firstfocuselementinmodal.focus()),document.activeElement===this.ui.firstfocuselementinmodal[0]&&9==(e.which||e.keyCode)&&e.shiftKey&&(e.preventDefault(),this.ui.lastfocuselementinmodal.focus())},render:function(){var e=this.options.$parent||$("body"),t=this.template(this.options);return this.$el.html(t),this.subscribeToDialog(),e.append(this.$el),this},subscribeToDialog:function(){var e=this;this.$el.on("shown.bs.modal",function(t){e.ui.firstfocuselementinmodal.focus()}),this.$el.on("hidden.bs.modal",function(){e.remove()})},onClickButtonHandler:function(e){e.preventDefault();var t=$(e.target),n=parseInt(t.data("index"),10),i=this.options.buttons[n].onClick;i&&i.apply(null),this.close()},close:function(){"function"==typeof this.options.onClose&&this.options.onClose.call(null),this.$el.modal("hide")},applyDefaultOptions:function(e){var t=_.defaults({},e,{type:"default",buttons:[]});return this.applyDefaultButtonsOptions(t),t},applyDefaultButtonsOptions:function(e){return e.buttons.filter(function(e){return"undefined"==typeof e.type}).forEach(function(e){e.type="default"}),e}});_.extend(MessageBox.prototype,bindUIElementsMixin),InfinniUI.MessageBox=MessageBox,InfinniUI.ContextMenuService=function(){function e(e){return e.control.controlView.$el}function t(e,t){e.on("contextmenu",function(e){e.preventDefault(),n.send(messageTypes.onOpenContextMenu.name,{x:e.pageX,y:e.pageY})})}var n=window.InfinniUI.global.messageBus;n.subscribe(messageTypes.onContextMenu.name,function(n,i){var o=i.value;t(e(o.source),o.content)})}();var routerService=function(e){if(!e)return null;var t=function(e){var t={};t.routes={};for(var n=0,o=e.length;o>n;n+=1){if(e[n].originalPath=e[n].Path,-1!==e[n].Path.search("<%"))for(var r,a,l=/\<\%[\sa-zA-Z0-9]+\%\>/g;r=l.exec(e[n].Path);)a=r[0].replace(/\s+/g,"").slice(2,-2),e[n].Path=e[n].Path.slice(0,r.index)+":"+a+e[n].Path.slice(r.index+r[0].length),l.lastIndex=r.index+a.length;t.routes[e[n].Path.slice(1)]=e[n].Name,t[e[n].Name]=i(e[n].Name,e[n].Action)}return t},n=function(t,n){for(var i=n||"yes",o=0,r=e.length;r>o;o+=1)if(e[o].Name===t)return"yes"===i?e[o].originalPath:e[o].Path},i=function(e,t){return function(){var n=_.extend(Array.prototype.slice.call(arguments),{routeParams:u._params});new ScriptExecutor({getContext:function(){return u._context||"No context"}}).executeScript(t,{name:e,params:n})}},o=t(e),r=function(){if(InfinniUI.AppRouter)console.log("Попытка повторно запустить routerService");else{var e=Backbone.Router.extend(o);InfinniUI.AppRouter=new e,Backbone.history=Backbone.history||new Backbone.History({}),Backbone.history.start(InfinniUI.config.HistoryAPI)}},a=function(e){this._context=e},l=function(e){this._params=e},s=function(e){this._params=_.extend(this._params||{},e)},u={getLinkByName:n,startRouter:r,setContext:a,setParams:l,addParams:s};return u}(InfinniUI.config.Routes);window.InfinniUI.RouterService=routerService,InfinniUI.ToolTipService=function(){function e(e){return e.control.controlView.$el}function t(e,t){e.tooltip({html:!0,title:t,placement:"auto top",container:"body"}).tooltip("show")}var n=window.InfinniUI.global.messageBus;n.subscribe(messageTypes.onToolTip.name,function(n,i){var o=i.value;t(e(o.source),o.content)})}();})(); \ No newline at end of file diff --git a/out/templates.js b/out/templates.js index 984b3a4..2b3fd57 100644 --- a/out/templates.js +++ b/out/templates.js @@ -79,16 +79,16 @@ this["InfinniUI"]["Template"]["controls/textBox/template/oneline.tpl.html"] = fu this["InfinniUI"]["Template"]["controls/toggleButton/template/toggleButton.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '
\r\n
\r\n \r\n  \r\n \r\n
\r\n
';}return __p}; -this["InfinniUI"]["Template"]["controls/toolBar/template/toolBar.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '
';}return __p}; - -this["InfinniUI"]["Template"]["controls/toolBar/template/toolBarItem.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '
';}return __p}; - this["InfinniUI"]["Template"]["controls/treeView/template/node-checkbox.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
';}return __p}; this["InfinniUI"]["Template"]["controls/treeView/template/node-radio.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
';}return __p}; this["InfinniUI"]["Template"]["controls/treeView/template/treeview.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '';}return __p}; +this["InfinniUI"]["Template"]["controls/toolBar/template/toolBar.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '
';}return __p}; + +this["InfinniUI"]["Template"]["controls/toolBar/template/toolBarItem.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '
';}return __p}; + this["InfinniUI"]["Template"]["services/ajaxLoaderIndicator/template/template.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '';with (obj) {__p += '
';}return __p}; this["InfinniUI"]["Template"]["services/messageBox/template/default.tpl.html"] = function(obj) {obj || (obj = {});var __t, __p = '', __j = Array.prototype.join;function print() { __p += __j.call(arguments, '') }with (obj) {__p += '';}return __p};