lessonplansRetrieveGrid = function(){

   var colSelect = new Ext.grid.CheckboxSelectionModel({singleSelect: true});

    var columns = [
      colSelect,
      //{header: 'Course', id:'course', width: 75, sortable: true, dataIndex: 'course'},
      {header: 'Course ID', width: 50, sortable: true, dataIndex: 'courseid', id: 'courseid'}, //groupField
      {header: 'Week', sortable: true, dataIndex: 'weekno', id: 'weekno'},
      {header: 'From', width: 120, sortable: true, dataIndex: 'datefrom', id: 'datefrom'},
      {header: 'To', width: 120, sortable: true, dataIndex: 'dateto', id: 'dateto'}
    ];
      
   lessonplansRetrieveGrid.superclass.constructor.call(this, {
        tbar: {
            xtype: 'toolbar',
            defaults: {
                style: 'margin-left: 5px;'
            },
            items: [
                {
                    xtype: 'label',
                    text: 'Teacher:'
                },
                new SchoolDynamics.apprenticeCombo({
                    id: 'lp_retrieve_teacher',
                    width: 150,
                    storeArray: ['lp_retrieve_store'],
                    listeners: {
                        select: function(combobox, record, index) {
                            var gridstore = this.ownerCt.ownerCt.store;
                            gridstore.baseParams.weekof = Ext.getCmp('lessonplan_weekof').value;
                            gridstore.load();
                        }
                    }
                })
            ]
        },
      store: new Ext.data.GroupingStore({
         storeId: 'lp_retrieve_store',
         url : 'teacher_tools/lessonplans_data.json.php',
         baseParams: {command: 'retrieveLessonPlans'},
         reader: new Ext.data.JsonReader({root: 'lastyear'},[
               {name: 'lplanid'}, 
               {name: 'course'}, 
               {name: 'courseid'}, 
               {name: 'datefrom'}, 
               {name: 'dateto'}, 
               {name: 'weekno', type:'int'}
         ]),
         autoLoad : false,
         groupField:'courseid',
         sortInfo:{field: 'courseid', direction: "ASC"},
         listeners: {
            load: function (store, records, options) {
               var grid = Ext.getCmp('lp_retrieve_grid');
               var courseid = Ext.getCmp('lessonplan_course').getValue();
               
               if (!courseid) {
                  grid.getView().collapseAllGroups();
                  return true;
               }
               
               var groups = grid.getView().getGroups();
               for (var i=0, len = groups.length; i < len; i++) {
                  if (groups[i].id.match(courseid)) grid.getView().toggleGroup(groups[i], true);
               }
            }
         }
      }),
      id: 'lp_retrieve_grid',
      sm: colSelect,
      columns: columns,
      border: false,
      view: new Ext.grid.GroupingView({
         autoHeight: true,
         enableColumnHide: false,
         enableColumnMove: false,
         enableColumnResize: false,
         stripeRows: true,
         showGroupName: false,
         enableNoGroups:false, // REQUIRED!
         hideGroupedColumn: true,
         groupTextTpl: '{[values.rs[0].data["course"]]} <span class="floatRight">{text}</span>',
         listeners: {
             toggleGroup: function(view, group, expanded){
                 if(expanded){
                     var groups = this.getGroups();
                     for (var i=0, len = groups.length; i < len; i++) {
                        if (!groups[i].id.match(group.id)) {
                           this.toggleGroup(groups[i], false);
                        }
                     }
                 }
             }
         }
      }),
      autoScroll: true,
      autoExpandColumn: 'weekno',
      listeners: {
         rowdblclick: function (grid, rowIndex, e) {
            Ext.getCmp('lp_retrieve').fireEvent('click');
         }
      }
   });
}

Ext.extend(lessonplansRetrieveGrid, Ext.grid.GridPanel);
