'use strict';

pandora.ui.entityDialog = function() {

    var ui = pandora.user.ui,

        $content = Ox.Element()
            .css({overflowY: 'auto'}),

        that = Ox.Dialog({
            buttons: (pandora.hasCapability('canManageEntities') ? [
                Ox.Button({
                    id: 'edit',
                    title: Ox._('Edit Entity...')
                })
                .bindEvent({
                    click: function() {
                        var id = ui.part.entities;
                        that.close();
                        pandora.api.getEntity({
                            id: id
                        }, function(result) {
                            var type = result.data.type;
                            pandora.UI.set(Ox.extend({
                                entitiesType: type
                            }, 'entitiesSelection.' + type, [id]));
                        });
                        pandora.$ui.entitiesDialog = pandora.ui.entitiesDialog().open();
                    }
                }),
                {}
            ] : []).concat([
                Ox.Button({
                    id: 'close',
                    title: Ox._('Close')
                })
                .bindEvent({
                    click: function() {
                        that.close();
                    }
                })
            ]),
            closeButton: true,
            content: $content, 
            fixedSize: true,
            height: 416,
            keys: {escape: 'close'},
            padding: 0,
            removeOnClose: true,
            title: '',
            width: 560,
        })
        .bindEvent({
            close: function() {
                pandora.UI.set({
                    'part.entities': '',
                    page: ''
                });
                delete pandora.$ui.entityDialog;
            },
            'pandora_part.entities': function(data) {
                if (data.value) {
                    setTitle();
                    setContent();
                } else {
                    that.close();
                }
            }
        });

    setTitle();
    setContent();

    function setContent() {
        ui.part.entities && pandora.entity({
            id: ui.part.entities,
            view: 'entity'
        }, function(html) {
            $content.html(html);
            pandora.createLinks($content);
        });
    }

    function setTitle() {
        ui.part.entities && pandora.api.getEntity({
            id: ui.part.entities
        }, function(result) {
            that.options({title: result.data.name});
        });
    }

    return that;

};
