/*
var attendancetools = {
  regionTitle: 'Attendance Tools',
  defaults: {autoHeight: true, cls: 'toolbox', frame: true},
  items:[{
    title: 'Print Options',
    items: [
      {
        xtype: 'link',
        iconCls: 'print',
        text: 'Print attendance report for:'
      },
      {
        xtype: 'datefield',
        width: 150
      },
      {
        xtype: 'link',
        iconCls: 'print',
        text: 'Print homeroom roster'
      }
    ]
  }]
};
*/

var attendance = {
  id: 'attendance-panel',	
  layout : "border",
  border: false,
  items: [
    {
      region : "north",
      title:"Attendance",       
      border:true,
      xtype: 'form',
      id: 'takeAttendance',
      layout: 'fit',
      height:300,
      split : true,
      tbar: {
        xtype: 'toolbar',
        id: 'takeAttendanceOptions',
        items: [
            {
                xtype: 'tbspacer',
                width: 5
            },
            {
                xtype: 'label',
                text: 'Time period:'
            },
            {
                xtype: 'tbspacer',
                width: 5
            },
            {
                xtype: 'combo',
                width: 80,
                mode: 'local',
                typeAhead: false,
                triggerAction: 'all',
                value: 'Daily',
                id: 'attendanceby',
                store: new Ext.data.ArrayStore({
                    fields: ['Attendancetype'],
                    data: [['Daily'], ['Period']]
                }),
                displayField: 'Attendancetype',
                listeners: {
                    select: function(combobox, record, index){
                        var attendanceCard = Ext.getCmp('attendanceCard');
                        var attendanceGrid = Ext.getCmp('takeAttendanceGrid');
                        var gridstore = attendanceGrid.store;
                        if(record.data.Attendancetype == "Daily") {
                           Ext.getCmp('attendancecourse').hide();
                           gridstore.baseParams.command = 'takeDailyAttendance';
                           attendanceCard.getLayout().setActiveItem(0);
                           
                        } else {
                           Ext.getCmp('attendancecourse').show();
                           gridstore.baseParams.command = 'takePeriodAttendance';
                           gridstore.baseParams.courseid = Ext.getCmp('attendancecourse').getValue();
                           Ext.getCmp('periodAttendanceGrid').store.baseParams.date = Ext.getCmp('todaydate').value;
                           attendanceCard.getLayout().setActiveItem(1);
                        }
                        gridstore.removeAll();
                        gridstore.load();
                    }
                }
            },
            {
                xtype: 'tbspacer',
                width: 5
            },
            {
                xtype: 'tbseparator'
            },
            {
                xtype: 'tbspacer',
                width: 5
            },
            {
                xtype: 'label',
                text: 'Date:'
            },
            {
                xtype: 'tbspacer',
                width: 5
            },
            { 
                xtype: 'datefield', 
                width:100, 
                id: 'todaydate',
                listeners: {
                    setValue: function(datefield, newvalue, oldvalue){
                        Ext.getCmp('takeAttendanceGrid').store.baseParams.date = datefield.value;
                    }
                }
            },
            {
                xtype: 'tbspacer',
                width: 5
            },
            {
                xtype: 'tbseparator',
                id: 'attendancecourseseperator',
                hidden: true
            },
            {
                xtype: 'tbspacer',
                width: 5,
                id: 'attendancecoursespacer1'
            },
            {
                xtype: 'label',
                text: 'Course:',
                id: 'attendancecourselabel',
                hidden: true
            },
            {
                xtype: 'tbspacer',
                width: 5,
                id: 'attendancecoursespacer2'
            },
           new SchoolDynamics.coursesCombo({
               id:'attendancecourse',
               hidden: true,
               listeners: {
                  select: function(combo, record, index) {
                     var gridstore = Ext.getCmp('takeAttendanceGrid').store;
                     periodAttendanceGrid = Ext.getCmp('periodAttendanceGrid');
                     gridstore.baseParams.command = 'takePeriodAttendance';
                     gridstore.baseParams.courseid = Ext.getCmp('attendancecourse').getValue();
                     periodAttendanceGrid.store.baseParams.courseid = this.getValue();
                     gridstore.load();
                     periodAttendanceGrid.store.load();
                  },
                  hide: function(combo) {
                     Ext.getCmp('attendancecourseseperator').hide();
                     Ext.getCmp('attendancecoursespacer1').hide();
                     Ext.getCmp('attendancecourselabel').hide();
                     Ext.getCmp('attendancecoursespacer2').hide();
                  },
                  show: function(combo) {
                     Ext.getCmp('attendancecourseseperator').show();
                     Ext.getCmp('attendancecoursespacer1').show();
                     Ext.getCmp('attendancecourselabel').show();
                     Ext.getCmp('attendancecoursespacer2').show();
                  }
               }
           })
        ]
    },
    
      items: new takeAttendanceGrid(),
      bbar: [
        { xtype:'tbfill'},
        {
          text:'Absent',
          iconCls: 'status_busy',
          listeners: {
              click: function(button){
                isPeriod = Ext.getCmp('attendanceby').getValue() == "Period";
                courseID = '';
                if (isPeriod) {
                  courseCombo = Ext.getCmp('attendancecourse');
                  courseComboRec = courseCombo.store.getAt(courseCombo.store.findExact("courseid",courseCombo.getValue()));
                  courseID = courseComboRec.data.courseid;
                }
                takeAttendanceGrid = Ext.getCmp('takeAttendanceGrid');
                periodAttendance = Ext.getCmp('periodAttendanceGrid');              
                                  
                selections = takeAttendanceGrid.selModel.selections.items;
                stuIDs = [];
                for (i=0; i < selections.length; i++){
                  stuIDs.push(selections[i].data.studentid);           
                }
                

              	Ext.Ajax.request({
                  url: 'teacher_tools/attendance_data.json.php',
                  method: 'POST',
                  params: {command: ((isPeriod) ? 'markperiodabsent' :'markabsent'), stuids: Ext.encode(stuIDs), date: Ext.getCmp('todaydate').value, courseid: courseID},
                  success: function() {
                  },
                  failure: function() {
                      Ext.Msg.alert('Status', 'Unable to mark absent.');
                  }
                });
                    

                
                takeAttendanceGrid.selModel.clearSelections(true);
                takeAttendanceGrid.getView().refresh();
                //Ext.getCmp('dailyAttendanceGrid').store.load();
                if (isPeriod) {
                  periodAttendance.store.load();
                } else {
                  Ext.getCmp('dailyAttendanceGrid').store.load();
                }
              }
            }
        },
        {
          text:'Tardy',
          iconCls: 'status_away',
          listeners: {
              click: function(button){
                isPeriod = Ext.getCmp('attendanceby').getValue() == "Period";
                courseID = '';
                if (isPeriod) {
                  courseCombo = Ext.getCmp('attendancecourse');
                  courseComboRec = courseCombo.store.getAt(courseCombo.store.findExact("courseid",courseCombo.getValue()));
                  courseID = courseComboRec.data.courseid;
                }
                takeAttendanceGrid = Ext.getCmp('takeAttendanceGrid');
                periodAttendance = Ext.getCmp('periodAttendanceGrid');              
                                  
                selections = takeAttendanceGrid.selModel.selections.items;
                stuIDs = [];
                for (i=0; i < selections.length; i++){
                  stuIDs.push(selections[i].data.studentid);           
                }
                

              	Ext.Ajax.request({
                  url: 'teacher_tools/attendance_data.json.php',
                  method: 'POST',
                  params: {command: ((isPeriod) ? 'markperiodtardy' :'marktardy'), stuids: Ext.encode(stuIDs), date: Ext.getCmp('todaydate').value, courseid: courseID},
                  success: function() {
                  },
                  failure: function() {
                      Ext.Msg.alert('Status', 'Unable to mark absent.');
                  }
                });
                    

                
                takeAttendanceGrid.selModel.clearSelections(true);
                takeAttendanceGrid.getView().refresh();
                //Ext.getCmp('dailyAttendanceGrid').store.load();
                if (isPeriod) {
                  periodAttendance.store.load();
                } else {
                  Ext.getCmp('dailyAttendanceGrid').store.load();
                }
            }
          }
        },
        { 
          text:'Check Out',
          iconCls: 'status_out',
          listeners: {
              click: function(button){
                isPeriod = Ext.getCmp('attendanceby').getValue() == "Period";
                courseID = '';
                if (isPeriod) {
                  courseCombo = Ext.getCmp('attendancecourse');
                  courseComboRec = courseCombo.store.getAt(courseCombo.store.findExact("courseid",courseCombo.getValue()));
                  courseID = courseComboRec.data.courseid;
                }
                takeAttendanceGrid = Ext.getCmp('takeAttendanceGrid');
                periodAttendance = Ext.getCmp('periodAttendanceGrid');              
                                  
                selections = takeAttendanceGrid.selModel.selections.items;
                stuIDs = [];
                for (i=0; i < selections.length; i++){
                  stuIDs.push(selections[i].data.studentid);           
                }
                

              	Ext.Ajax.request({
                  url: 'teacher_tools/attendance_data.json.php',
                  method: 'POST',
                  params: {command: ((isPeriod) ? 'markperiodcheckout' :'markcheckout'), stuids: Ext.encode(stuIDs), date: Ext.getCmp('todaydate').value, courseid: courseID},
                  success: function() {
                  },
                  failure: function() {
                      Ext.Msg.alert('Status', 'Unable to mark absent.');
                  }
                });
                    

                
                takeAttendanceGrid.selModel.clearSelections(true);
                takeAttendanceGrid.getView().refresh();
                //Ext.getCmp('dailyAttendanceGrid').store.load();
                if (isPeriod) {
                  periodAttendance.store.load();
                } else {
                  Ext.getCmp('dailyAttendanceGrid').store.load();
                }
            }
            }
        }
      ] 
    },
    {
      region : "center",      
      border:true,
      id: 'attendanceCard',
      layout: 'card',
      activeItem: 0,
      items: [
        new dailyAttendanceGrid(),
        new periodAttendanceGrid()
      ]
    }
  ],
  listeners: {
    render: function(panel) {
    },
    show: function(panel) {
         Ext.getCmp('todaydate').setValue(new Date());
         Ext.getCmp('periodDate').setValue(new Date());
         Ext.getCmp('takeAttendanceGrid').store.load();
         Ext.getCmp('dailyAttendanceGrid').store.load();
         
    }
  }                                                            
};
