(function() {
    function referenceFootnotesDialog( editor, isEdit ) {
        return {
            title : Drupal.t('Reference Footnotes Dialog'),
            minWidth : 500,
            minHeight : 50,
            contents : [
                {
                    id: 'info',
                    label: Drupal.t('Add a reference footnote'),
                    title: Drupal.t('Add a reference footnote'),
                    elements:
                        [
                          {
                            id: 'reference',
                            type: 'select',
                            items: editor.config.referenceFootnotes_list,
                            label: Drupal.t('Reference Footnote item:'),
                            setup: function (element) {
                              if (isEdit)
                                this.setValue(element.getAttribute('reference'));
                            }
                          },
                          {
                            id: 'footnote',
                            type: 'textarea',
                            label: Drupal.t('Or add free-form footnote text :'),
                            setup: function (element) {
                                if (isEdit) {
                                  var text = element.getText();

                                  this.setValue(text);

                                }
                            }
                          },
                          {
                            id: 'page',
                            type: 'text',
                            labelLayout: 'horizontal',
                            label: Drupal.t('Page(s):'),
                            style: 'float:left:width:50px',
                            setup: function (element) {
                              if (isEdit) {
                                this.setValue(element.getAttribute('page'));
                              }
                            }
                          },
                            {
                                id: 'value',
                                type: 'text',
                                label: Drupal.t('Value :'),
                                labelLayout: 'horizontal',
                                style: 'float:left;width:200px;',
                                setup: function (element) {
                                    if (isEdit)
                                        this.setValue(element.getAttribute('value'));
                                }
                            }
                        ],
                }
            ],
            onShow : function() {
                if (isEdit) {
                    this.fakeObj = CKEDITOR.plugins.reference_footnotes.getSelectedFootnote( editor );
                    this.realObj = editor.restoreRealElement( this.fakeObj );
                }
                this.setupContent( this.realObj );
            },
            onOk : function() {
                var referenceNote = this.getValueOf('info', 'reference');
                var textNote = this.getValueOf('info', 'footnote');
                var page = this.getValueOf('info', 'page');
                CKEDITOR.plugins.reference_footnotes.createFootnote( editor, this.realObj, textNote, this.getValueOf('info', 'value'), referenceNote, page);
                delete this.fakeObj;
                delete this.realObj;
            }
        }
    }

    CKEDITOR.dialog.add( 'createreferencefootnotes', function( editor ) {
        return referenceFootnotesDialog( editor );
    });
    CKEDITOR.dialog.add( 'editreferencefootnotes', function( editor ) {
        return referenceFootnotesDialog( editor, 1 );
    });
})();