/*
 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
CKEDITOR.dialog.add('hiddenfield', function (editor) {
    return {
        title: editor.lang.hidden.title,
        hiddenField: null,
        minWidth: 350,
        minHeight: 110,
        onShow: function () {
            delete this.hiddenField;

            var editor = this.getParentEditor(),
                selection = editor.getSelection(),
                element = selection.getSelectedElement();

            if (element && element.data('cke-real-element-type') && element.data('cke-real-element-type') == 'hiddenfield') {
                this.hiddenField = element;
                element = editor.restoreRealElement(this.hiddenField);
                this.setupContent(element);
                selection.selectElement(this.hiddenField);
            }
        },
        onOk: function () {
            var name = this.getValueOf('info', '_cke_saved_name'),
                value = this.getValueOf('info', 'value'),
                editor = this.getParentEditor(),
                element = CKEDITOR.env.ie && !( CKEDITOR.document.$.documentMode >= 8 ) ?
                    editor.document.createElement('<input name="' + CKEDITOR.tools.htmlEncode(name) + '">')
                    : editor.document.createElement('input');

            element.setAttribute('type', 'hidden');
            this.commitContent(element);
            var fakeElement = editor.createFakeElement(element, 'cke_hidden', 'hiddenfield');
            if (!this.hiddenField)
                editor.insertElement(fakeElement);
            else {
                fakeElement.replace(this.hiddenField);
                editor.getSelection().selectElement(fakeElement);
            }
            return true;
        },
        contents: [
            {
                id: 'info',
                label: editor.lang.hidden.title,
                title: editor.lang.hidden.title,
                elements: [
                    {
                        id: '_cke_saved_name',
                        type: 'text',
                        label: editor.lang.hidden.name,
                        'default': '',
                        accessKey: 'N',
                        setup: function (element) {
                            this.setValue(
                                element.data('cke-saved-name') ||
                                    element.getAttribute('name') ||
                                    '');
                        },
                        commit: function (element) {
                            if (this.getValue())
                                element.setAttribute('name', this.getValue());
                            else {
                                element.removeAttribute('name');
                            }
                        }
                    },
                    {
                        id: 'value',
                        type: 'text',
                        label: editor.lang.hidden.value,
                        'default': '',
                        accessKey: 'V',
                        setup: function (element) {
                            this.setValue(element.getAttribute('value') || '');
                        },
                        commit: function (element) {
                            if (this.getValue())
                                element.setAttribute('value', this.getValue());
                            else
                                element.removeAttribute('value');
                        }
                    }
                ]
            }
        ]
    };
});
