inkinru.Module_Feedback = function ()
{
}

    inkinru.Module_Feedback.inherits(inkinru.Module_Abstract);

    inkinru.Module_Feedback.prototype.init = function ()
    {
        var that = this;

        this.form = this.getElementById('form');
        this.dataSaver = new inkinru.FormDataSaver([this.form]);
        inkinru.page.addDataSaver(this, this.dataSaver);

        this.dataSaver.addListener({onSaveSuccess: function () { that.onSuccess(); }});

        inkinru.page.validateForm(this.form, this.variables.validationOptions);

        if (!this.variables.successText)
            this.variables.successText = '';

        inkinru.page.getControl(this.variables.saveButtonId).dataSaver = this.dataSaver;
    }

    inkinru.Module_Feedback.prototype.onSuccess = function ()
    {
        if (this.variables.onSuccess)
            this.variables.onSuccess.apply(this);

        if (this.form)  //  Might be destroyed in onSuccess callback.
        {
            $(this.form).hide();

            if (this.successDiv)
                $(this.successDiv).show();
            else
            {
                this.successDiv = document.createElement('div');
                this.successDiv.innerHTML = this.variables.successText;
                this.form.parentNode.appendChild(this.successDiv);
            }
        }
    }

    inkinru.Module_Feedback.prototype.setFieldValue = function (name, value)
    {
        var e;

        for (var i in this.variables.fields)
        {
            var field = this.variables.fields[i];

            if (field.name == name)
            {
                switch (field.type)
                {
                    case 'range':
                        //  ...
                        break;
                    case 'static':
                        e = this.getElementById('field-' + field.id);
                        this.getElementById('field-' + field.id + '-div').innerHTML = value;
                        e.value = value;
                        this.dataSaver.markControlAsNotChanged(e);
                        break;
                    default:
                        e = this.getElementById('field-' + field.id);
                        e.value = value;
                        this.dataSaver.markControlAsNotChanged(e);
                }
            }
        }

//        for (var i in this.form.elements)
//        {
//            var e = this.form.elements[i];
//
//            if (e.name == name)
//            {
//                e.value = value;
//                this.dataSaver.markControlAsNotChanged(e);
//                break;
//            }
//        }
    }

    inkinru.Module_Feedback.prototype.reset = function ()
    {
        if (this.form)
        {
            $(this.form).show();

            if (this.successDiv)
                $(this.successDiv).hide();

            this.form.reset();

//            for (var i in this.form.elements)
//                this.dataSaver.markControlAsNotChanged(this.form.elements[i]);
            for (var i = 0; i < this.form.elements.length; i++)
                this.dataSaver.markControlAsNotChanged(this.form.elements[i]);
        }
    }
