function blurbs()
{

    var BlurbCreateForm;
    var BlurbCreateWindow;

    var NameField;
    
    var store;
    var BlurbListingSelectedRow;

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

    DescriptionField = new Ext.form.TextArea(
    {
        id          : 'description',
        fieldLabel  : 'Description',
        name        : 'description',
        allowBlank  : true,
        anchor      : '95%'
    });

    store = new Ext.data.JsonStore({
        url     : baseUrl + '/admin/blurb/json',
        root    : 'records',
        fields  : ['id', 'name', 'description']
    });
    
    var cm = new Ext.grid.ColumnModel([
        {
            header      : "Nom",
            width       : 100,
            dataIndex   : 'name',
            editor      : NameField
        }, {
            header      : "Description",
            width       : 200,
            dataIndex   : 'description',
            editor      : DescriptionField
        }
    ]);
    cm.defaultSortable= true;


    BlurbListingEditorGrid =  new Ext.grid.EditorGridPanel(
    {
        id              : 'BlurbListingEditorGrid',
        store           : store,
        cm              : cm,
        enableRowHeightSync : true,
        trackMouseOver  : true,
        enableColLock   : true,
        selModel        : new Ext.grid.RowSelectionModel(
        {
            singleSelect:false
        }),
        border          : false,
        collapsible     : false,
        titleCollapse   : true,
        tbar            : [{
            text    : 'Add a blurb',
            iconCls : 'add',
            handler : displayFormWindow
        }, '-', {
            text    : 'Delete selection',
            handler : confirmDeleteBlurbs,
            iconCls : 'remove'
        }]
    });

    function onBlurbListingEditorGridContextMenu(grid, rowIndex, e)
    {  
        e.stopEvent();
        var coords = e.getXY();
        BlurbListingContextMenu.rowRecord = grid.store.getAt(rowIndex);
        grid.selModel.selectRow(rowIndex);
        BlurbListingSelectedRow=rowIndex;
        BlurbListingContextMenu.showAt([coords[0], coords[1]]);
    }

    function modifyBlurbContextMenu(){
        BlurbListingEditorGrid.startEditing(BlurbListingSelectedRow,1);
    }

    function deleteBlurbContextMenu(){
        confirmDeleteBlurbs();
    }

    BlurbListingContextMenu = new Ext.menu.Menu({
        id      : 'BlurbListingEditorGridContextMenu',
        items   : [
        {
            text    : 'Modify this Blurb',
            handler : modifyBlurbContextMenu
        },

        {
            text    : 'Delete this Blurb',
            handler : deleteBlurbContextMenu
        }
        ]
    });

    BlurbListingEditorGrid.addListener('rowcontextmenu', onBlurbListingEditorGridContextMenu);

    var selections = BlurbListingEditorGrid.selModel.getSelections();
    var prez = [];
    for(i = 0; i< BlurbListingEditorGrid.selModel.getCount(); i++){
        prez.push(selections[i].json.id);
    }
    var encoded_array = Ext.encode(prez);

    BlurbCreateForm = new Ext.FormPanel(
    {
        labelAlign  : 'top',
        bodyStyle   : 'padding:5px',
        width       : 600,
        items       : [NameField, DescriptionField],
        buttons     : [{
            text    : 'Save and Close',
            handler : createBlurb
        },{
            text    : 'Cancel',
            handler : function()
            {
                BlurbCreateWindow.hide();
            }
        }]
    });

    BlurbCreateWindow= new Ext.Window(
    {
        id          : 'BlurbCreateWindow',
        title       : 'Creating a New Blurb',
        closable    : true,
        width       : 610,
        height      : 350,
        plain       : true,
        layout      : 'fit',
        items       : BlurbCreateForm
    });

    // reset the Form before opening it
    function resetBlurbForm()
    {
        NameField.setValue('');
        DescriptionField.setValue('');
    }

    // check if the form is valid
    function isBlurbFormValid(){
        return(NameField.isValid() &&
        DescriptionField.isValid());
    }

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

    function confirmDeleteBlurbs(){
        if(BlurbListingEditorGrid.selModel.getCount() == 1){
            Ext.MessageBox.confirm('Confirmation','Delete this blurb?', deleteBlurbs);
        } else {
            Ext.MessageBox.alert('Erreur','Select one only !');
        }
    }


    function saveBlurb(oGrid_event)
    {
        Ext.Ajax.request({
            waitMsg: 'Please wait...',
            url: baseUrl + '/admin/blurb/edit',
            params: {
                task         : "UPDATEVC",
                id           : oGrid_event.record.data.id,
                name         : oGrid_event.record.data.name,
                description  : oGrid_event.record.data.description
            },
            success: function(response){
                var result=eval(response.responseText);
                switch(result){
                    case 1:
                        store.commitChanges();
                        Ext.MessageBox.alert('Success !', 'Blurb saved.');
                        store.reload();
                        break;
                    default:
                        Ext.MessageBox.alert('Error !','We couldn\'t save him...');
                        break;
                }
            },
            failure: function(response){
                var result=response.responseText;
                Ext.MessageBox.alert('error','could not connect to the database. retry later');
            }
        });
    }

    function createBlurb(){
        if(isBlurbFormValid()){
            Ext.Ajax.request({
                waitMsg: 'Please wait...',
                url: baseUrl + '/admin/blurb/add',
                params: {
                    task            : "CREATEVC",
                    name            : NameField.getValue(),
                    description     : DescriptionField.getValue()
                },
                success: function(response){
                    var result=eval(response.responseText);
                    switch(result){
                        case 1:
                            Ext.MessageBox.alert('Creation OK', 'The blurb was created successfully.');
                            store.reload();
                            BlurbCreateWindow.hide();
                            break;
                        default:
                            Ext.MessageBox.alert('Warning', 'Could not create the blurb.');
                            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!');
        }
    }

    function deleteBlurbs(btn){
        if(btn=='yes'){
            var selections = BlurbListingEditorGrid.selModel.getSelections();
            var id = selections[0].json.id;
            
            Ext.Ajax.request({
                waitMsg: 'Please Wait',
                url: baseUrl + '/admin/blurb/delete',
                params: {
                    task: "DELETEVCS",
                    id:  id
                },
                success: function(response){
                    var result=eval(response.responseText);
                    switch(result){
                        case 1:  // Success : simply reload
                            Ext.MessageBox.alert('Success !', 'Blurb deleted.');
                            store.reload();
                            break;
                        default:
                            Ext.MessageBox.alert('Warning','Could not delete the entire selection.');
                            break;
                    }
                },
                failure: function(response){
                    var result=response.responseText;
                    Ext.MessageBox.alert('error','could not connect to the database. retry later');
                }
            });
        }
    }


    BlurbListingEditorGrid.on('afteredit', saveBlurb);
    store.load();

    var win = new Ext.Window({
        title       : 'Présenations',
        layout      : 'fit',
        width       : 400,
        height      : 400,
        closable    : true,
        resizable   : true,
        autoScroll  : true,
        plain       : true,
        listeners: {
          close: function() {
            var redirect = baseUrl + '/blurb';
            window.location = redirect;
          }
        },
        border      : false,
        items       : [BlurbListingEditorGrid]
	});

    win.show();
    return;
};

