Expedition = Class.create(ModalEditable, {

    name: 'expedition',
    validFields: [], // this must be specified in every class
    validationFields: ["name", "ci"],

    initialize: function ($super) {       
        this.template = new Template(
           '<dd class="right"><strong>Semnatura de primire:</strong></dd> \
            <dd id="invoice-expedition-name"><strong>Numele delegatului:</strong> <span>#{name}</span></dd> \
            <dd id="invoice-expedition-ci"><strong>B.I./C.I.</strong> <span>#{ci}</span></dd> \
            <dd id="invoice-expedition-transport"><strong>Mijloc de transport:</strong> <span>#{transport}</span></dd> \
            <dd id="invoice-expedition-date"><strong>Data expeditiei:</strong> <span>#{date}</span></dd> \
            <dd><strong>Semnatura:</strong></dd>'
        );

        this.attachDialog();

        $super();
    },

    attachDialog: function () {
        this.dialog = new Dialog({
            handle: '#edit-expedition-handle',
            title: $('edit-expedition-handle').title,
            target: {
                id: 'edit-expedition',
                auto: true
            },

            /**
             * Destroy validation instances
             */
            beforeClose: (function () {
                this.destroyValidations();
            }).bind(this),

            /**
             * Attach validation instances
             */
            afterOpen: (function () {
                this.form  = $('dialog-content').down('#invoice-expedition-form');

                new Control.DatePicker(this.form.down('input[name="date"]'), {
                    locale: 'ro_RO',
                    icon: APP.path.images + 'calendar.png',
                    showOnFocus: true
                });

                this.addValidations();
                this.populateForm();                
            }).bind(this)
        });
    },

    update: function ($super, data) {
        $super(data);

        $('invoice-expedition').down('dl.details').update(this.template.evaluate(data));

        for (var field in this.data) {
            if (!this.data[field]) {
                var container = $('invoice-expedition' + '-' + field);
                if (container) {
                    container.addClassName('empty');
                }
            }

            $('expedition_' + field).value = this.data[field];
        }
    }
});