function addMeeting()
{

    var MeetingCreateForm;
    var MeetingCreateWindow;

    var FnameField;
    var LnameField;
    var BirthdayField;
    var MailField;
    var TelField;
    var ExamenField;
    var RdvDateField;
    var RdvHourField;

    FnameField = new Ext.form.TextField(
    {
        id          : 'fname',
        fieldLabel  : 'Prénom',
        name        : 'fname',
        maxLength   : 20,
        allowBlank  : false,
        anchor      : '95%'
    });

    LnameField = new Ext.form.TextField(
    {
        id          : 'lname',
        fieldLabel  : 'Nom',
        name        : 'fname',
        maxLength   : 20,
        allowBlank  : false,
        anchor      : '95%'
    });

    BirthdayField = new Ext.form.DateField(
    {
        id          : 'birthday',
        fieldLabel  : 'Date de naissance',
        name        : 'birthday',
        altFormats  : 'd-m-Y',
        allowBlank  : false,
        anchor      : '95%'
    });

    MailField = new Ext.form.TextField(
    {
        id          : 'mail',
        fieldLabel  : 'e-Mail',
        name        : 'mail',
        maxLength   : 50,
        allowBlank  : true,
        anchor      : '95%'
    });

    TelField = new Ext.form.TextField(
    {
        id          : 'tel',
        fieldLabel  : 'Tél',
        name        : 'tel',
        maxLength   : 14,
        allowBlank  : true,
        anchor      : '95%'
    });

    var examensStore = new Ext.data.JsonStore({
        url     : baseUrl + '/admin/examen/json',
        root    : 'records',
        fields  : ['id', 'name']
    });

    ExamenField = new Ext.form.ComboBox({
        store           : examensStore,
        fieldLabel      : 'Examen',
        id              : 'examen',
        selectOnFocus   : true,
        triggerAction   : 'all',
        name            : 'examen',
        displayField    : 'name'
    });

    RdvDateField = new Ext.form.DateField(
    {
        id          : 'rdvDate',
        fieldLabel  : 'Date',
        name        : 'rdvDate',
        minValue    : new Date().clearTime(),
        altFormats  : 'd-m-Y',
        disabledDays: [0],
        allowBlank  : false,
        anchor      : '95%'
    });

    RdvHourField = new Ext.form.TextField(
    {
        id          : 'rdvHour',
        fieldLabel  : 'Heure',
        name        : 'rdvHour',
        allowBlank  : false,
        anchor      : '95%'
    });

    
    MeetingCreateForm = new Ext.FormPanel(
    {
        labelAlign  : 'top',
        baseCls     : 'x-plain',
        bodyStyle   : 'padding:5px',
        width       : 600,
        items       : [{
            layout  : 'column',
            border  : false,
            items   : [{
                columnWidth : 0.5,
                layout      : 'form',
                border      :false,
                items       : [FnameField, LnameField, BirthdayField, TelField, MailField]
            },{
                columnWidth    : 0.5,
                layout         : 'form',
                border         : false,
                items          : [ExamenField, RdvDateField, RdvHourField]
            }]
        }],
        buttons     : [{
            text    : 'Save and Close',
            handler : function()
            {
                createMeeting();
            }
        },{
            text    : 'Cancel',
            handler : function()
            {
                MeetingCreateWindow.hide();
                var redirect = baseUrl + '/';
                window.location = redirect;
            }
        }]
    });

    MeetingCreateWindow = new Ext.Window(
    {
        id          : 'MeetingCreateWindow',
        title       : 'Creating a New Meeting',
        closable    : true,
        width       : 610,
        listeners: {
          close: function() {
            var redirect = baseUrl + '/';
            window.location = redirect;
          }
        },
        height      : 350,
        plain       : true,
        layout      : 'fit',
        items       : MeetingCreateForm
    });

    // reset the Form before opening it
    function resetMeetingForm()
    {
        LnameField.setValue('');
        FnameField.setValue('');
        BirthdayField.setValue('');
        MailField.setValue('');
        TelField.setValue('');
        RdvDateField.setValue('');
        RdvHourField.setValue('');
    }

    // check if the form is valid
    function isMeetingFormValid(){
        return(LnameField.isValid() &&
            FnameField.isValid() &&
            BirthdayField.isValid() &&
            MailField.isValid() &&
            ExamenField.isValid() &&
            TelField.isValid() &&
            RdvDateField.isValid() &&
            RdvHourField.isValid());
    }

    // display or bring forth the form
    function displayFormWindow(){
        if(!MeetingCreateWindow.isVisible()){
            resetMeetingForm();
            MeetingCreateWindow.show();
        } else {
            MeetingCreateWindow.toFront();
        }
    }

    function createMeeting(){
        if(isMeetingFormValid()){
            Ext.Ajax.request({
                waitMsg: 'Please wait...',
                url: baseUrl + '/admin/meeting/add',
                params: {
                    task            : "CREATEVC",
                    fname           : FnameField.getValue(),
                    lname           : LnameField.getValue(),
                    birthday        : BirthdayField.getValue(),
                    mail            : MailField.getValue(),
                    tel             : TelField.getValue(),
                    examen          : ExamenField.getValue(),
                    rdvDate         : RdvDateField.getValue(),
                    rdvHour         : RdvHourField.getValue()
                },
                success: function(response){
                    var result=eval(response.responseText);
                    switch(result){
                        case 1:
                            Ext.MessageBox.alert('Creation OK', 'The meeting was created successfully.');
                            MeetingCreateWindow.hide();
                            var redirect = baseUrl + '/';
                            window.location = redirect;
                            break;
                        default:
                            Ext.MessageBox.alert('Warning', 'Could not create the meeting.');
                            break;
                    }
                },
                failure: function(response){
                    var result=response.responseText;
                    Ext.MessageBox.alert('error', 'could not connect to the database. retry later');
                }
            });
        } else {
            Ext.MessageBox.alert('Warning', 'Your Form is not valid!');
        }
    }

    MeetingCreateWindow.show();
    return;
};

