//#region Заявитель
function CreatorItemData(observer) {
    var that = this;

    var args = [];
    args.push(observer);
    args.push({
        group: 'CreatorItemData',
        name: 'creatorid',
        selector: '#creatorid',
        useDefaultEvent: true,
        //initConflictAfterSubmit: {
        //    compareEqualsCurrentWithSubmitValue: false,
        //    canConflict: false
        //},
    });
    ItemData.apply(this, args);
}
CreatorItemData.prototype = Object.create(ItemData.prototype);

CreatorItemData.prototype.InitTaskRightsDisplayType = function () {
    this.taskRightsDisplayType = ItemDataHelper.TaskRightsDisplayType[$('#creatortaskrightsdisplaytype').attr(ItemData.taskRightsDisplayTypeKey)] || ItemDataHelper.TaskRightsDisplayType.None;
}

CreatorItemData.prototype.GetBlockTitle = function () {
    return $('[taskcreatortitle]').clone().children().remove().end().text().trim();
}
//part2 - пользовательская
CreatorItemData.prototype.Append2 = function (userConnectionId, userId, userName, data, existUserConnectionId) {
    var $parent = $('[taskcreatortitle]').parent();
    $parent.find('span.taskFormHub-blockInfo').remove();
    var $span = this.GetSpanTemplate(userConnectionId, userId);
    $parent.append($span);
    this.Highlight();
}

//удалить инфу о всех юзерах которые изменили блок
//вызывает при дисконекте
CreatorItemData.prototype.ResetAll = function () {
    this.usersEditThisBlock = [];
    var $parent = $('[taskcreatortitle]').parent();
    //удалить текущий span
    $parent.find('span.taskFormHub-blockInfo').remove();
    this.Unhighlight();
}
//part2 - пользовательская
CreatorItemData.prototype.Reset2 = function (userConnectionId, userId, userName) {
    var $parent = $('[taskcreatortitle]').parent();
    //удалить текущий span
    $parent.find('span.taskFormHub-blockInfo').remove();
    //если есть еще пользователи которые редактируют блок
    if (this.usersEditThisBlock.length > 0 && this.TaskRightsDisplayType() != ItemDataHelper.TaskRightsDisplayType.None) {
        //сделать новый span
        var $span = this.GetSpanTemplate(userConnectionId, userId);
        $parent.append($span);
        //подстветить
        this.Highlight();
    }
    else {
        this.Unhighlight();
    }
}
//функция подсветки блока
CreatorItemData.prototype.Highlight = function () {
    $('#creator').addClass('taskFormHub-highlightBlock');
}
//функция убирает подсветку блока
CreatorItemData.prototype.Unhighlight = function () {
    $('#creator').removeClass('taskFormHub-highlightBlock');
}
CreatorItemData.prototype.GetSubmitVal = function (submitData) {
    if (submitData) {
        return submitData.CreatorId;
    }
    return 0;
}
CreatorItemData.prototype.GetCurrentVal = function () {
    var q = ItemData.prototype.GetCurrentVal.apply(this);
    return q;
}
CreatorItemData.prototype.GetOldValue = function () {
    var q = ItemData.prototype.GetOldValue.apply(this);
    return q;
}
CreatorItemData.prototype.GetSelectorType = function () {
    return 'creatoritemdata';
}
CreatorItemData.prototype.RemoveConflictMessage = function () {
    var $parent = $('[taskcreatortitle]').parent();
    $parent.find('[conflict-block="' + this._options.name + '"]').remove();
}
//создать сообщение что нет конфликта и обновить блок данными
CreatorItemData.prototype.AppendNotConflict = function (submitData) {
    var that = this;

    var $notconflictMessage = $(this.tmpl_notconflictMessageBase({ blockName: this._options.name }));

    //добавить новую инфу
    $('[taskcreatortitle]').parent().append($notconflictMessage);
    _creatorSelected(submitData.CreatorId, submitData.CreatorName, submitData.CompanyName).then(function () {
        that.SetOldValue();
        that.SendBlockChange();
    });
    
}
//куда добавляем сообщение
CreatorItemData.prototype.AppendConflict2 = function ($conflictMessage) {
    //добавить новую инфу
    $('[taskcreatortitle]').parent().append($conflictMessage);
}
CreatorItemData.prototype.ConflictDialogContent = function (selectorType, submitData) {
    var that = this;
    return $(
            '<div>\
                <label>\
                    <input type="radio" name="conflictradioresolve-' + that._options.name + '" value="1" checked />' + TaskFormHubResources.ConflictDialogContent_UseOldValue + '\
                </label>\
                <div name="conflictradioresolve-' + that._options.name + '-value1">'+ $('#creator .users a:first').text() + '</div>\
            </div><hr>\
            <div>\
                <label>\
                    <input type="radio" name="conflictradioresolve-' + that._options.name + '" value="0" />' + TaskFormHubResources.ConflictDialogContent_UseNewValue + '\
                </label>\
                <div name="conflictradioresolve-' + that._options.name + '-value0" conflictvalue=\'' + JSON.stringify(submitData) + '\'>' + submitData.CreatorName + '</div>\
            </div>\
            ');
}
CreatorItemData.prototype.ConflictDialogOkCallback = function () {
    var that = this;

    var $content = GLOBAL_taskFormHubDialog.getContent();
    var checkedVal = $content.find('[name="conflictradioresolve-' + that._options.name + '"]:checked').val();
    //если оставили то ничего не делаем
    if (checkedVal == 1) {
    }
    else {
        var $resolvecontent = $content.find('[name="conflictradioresolve-' + that._options.name + '-value0"]');
        if ($resolvecontent.is('[emptyvalue]')) {

        }
        else {
            var conflictvalue = JSON.parse($resolvecontent.attr('conflictvalue'));
            _creatorSelected(conflictvalue.CreatorId, conflictvalue.CreatorName, conflictvalue.CompanyName).then(function () {
                that.SetOldValue();
                that.SendBlockChange();
            });
        }
    }

    //удаляем инфу о конфликте
    that.isConflict = false;
    that.$conflictMessageElement = undefined;
    that.RemoveConflictMessage();

    GLOBAL_taskFormHubDialog.closeDialog();
}
//#endregion