/******************************************************************************************
 * This popup could have dual use as an "add" and "edit" popup for lesson plan assignments 
 *
 */
var lessonplansManageAssignmentPopup = new Ext.Window({
	title: 'Add Assignment',
	width: 500,
	modal: true,
	bodyStyle: 'background-color: white;',
	layout: 'fit',
	padding: '10 10 0 10',
	resizable: false,
	autoHeight: true,
	closeAction: 'hide',
	tools: [{
		id: 'help',
		handler: function(btn) {
			helppopup.loadHelpFile("Lesson Plans: Add Assignment", 500, 455);
		}
	}],
	enableGradeFields: function() {
		var course = Ext.getCmp('lessonplan_course').store.getById(Ext.getCmp('lessonplan_course').getValue()).data;
		var weightField = Ext.getCmp("lp_gradebook_weight");
		var pointsField = Ext.getCmp("lp_gradebook_points");
		switch (course.gradingMethod) {
		case "percent":
			weightField.enable();
			break;
		case "truepoints":
			pointsField.enable();
			break;
		case "autocalc":
			pointsField.enable();
			weightField.enable();
			break;
		}
	},
	items: [{
		xtype: 'form',
		border: false,
		autoHeight: true,
		labelWidth: 70,
		monitorValid: true,
		id: 'lp_assignment_form',
		defaults: {
			anchor: '100%'
		},
		items: [{
			xtype: 'container',
			layout: 'hbox',
			items: [{
				xtype: 'container',
				flex: 1,
				layout: 'form',
				labelWidth: 60,
				margins: '0 5 0 0',
				items: [{
					xtype: 'textfield',
					fieldLabel: 'Title',
					anchor: '100%',
					allowBlank: false,
					id: 'lp_assignment_title'
				}]
			},
			{
				xtype: 'container',
				flex: 1,
				layout: 'form',
				labelWidth: 55,
				margins: '0 0 0 5',
				width: 165,
				items: [{
					xtype: 'datefield',
					fieldLabel: 'Due date',
					anchor: '100%',
					id: 'lp_assignment_date'
				}]
			}]
		},
		{
			xtype: 'fieldset',
			title: 'Add to Gradebook',
			checkboxToggle: true,
			labelWidth: 90,
			animCollapse: true,
			collapsed: true,
			checkboxName: 'lp_isgraded',
			id: 'lp_gradebook_options',
			defaults: {
				anchor: '100%'
			},
			items: [{
				xtype: 'textfield',
				fieldLabel: 'Gradebook title',
				allowBlank: false,
				disabled: true,
				id: 'lp_gradebook_title'
			},
			{
				xtype: 'combo',
				fieldLabel: 'Category',
				anchor: '100%',
				valueField: 'category',
				editable: false,
				typeAhead: true,
				triggerAction: 'all',
				allowBlank: false,
				disabled: true,
				displayField: 'category',
				id: 'lp_gradebook_category',
				store: new Ext.data.Store({
					url: 'schooldynamics_data.json.php',
					baseParams: {
						command: 'getCourseCategories'
					},
					reader: new Ext.data.JsonReader({
						root: 'getCourseCategories'
					}, [{
						name: 'category'
					},
					{
						name: 'percentage'
					}]),
					autoLoad: false,
					sortInfo: {
						field: 'category',
						direction: 'ASC'
					}
				})
			},
			{
				xtype: 'container',
				layout: 'hbox',
				items: [{
					xtype: 'container',
					flex: 1,
					layout: 'form',
					labelWidth: 90,
					margins: '0 5 0 0',
					items: [{
						xtype: 'numberfield',
						fieldLabel: 'Weight',
						anchor: '100%',
						value: 1,
						disabled: true,
						allowBlank: false,
						id: 'lp_gradebook_weight'
					}]
				},
				{
					xtype: 'container',
					flex: 1,
					layout: 'form',
					labelWidth: 90,
					margins: '0 0 0 5',
					items: [{
						xtype: 'numberfield',
						fieldLabel: 'Points',
						anchor: '100%',
						value: 1,
						disabled: true,
						allowBlank: false,
						id: 'lp_gradebook_points'
					}]
				}]
			}],
			listeners: {
				expand: function(fieldset) {
					popup = lessonplansManageAssignmentPopup;
					popup.setSize(450, (popup.isnew ? 250 : 270));
					lessonplansManageAssignmentPopup.enableGradeFields();
					Ext.getCmp('lp_gradebook_category').enable();
					Ext.getCmp('lp_gradebook_title').enable();
				},
				collapse: function(fieldset) {
					popup = lessonplansManageAssignmentPopup;
					popup.setSize(450, (popup.isnew ? 170 : 190));
					Ext.getCmp('lp_gradebook_points').disable();
					Ext.getCmp('lp_gradebook_weight').disable();
					Ext.getCmp('lp_gradebook_category').disable();
					Ext.getCmp('lp_gradebook_title').disable();
				}
			}
		}],
		listeners: {
			clientValidation: function(form, isValid) {
				if (isValid) {
					Ext.getCmp('lp_assignment_submit').enable();
				} else {
					Ext.getCmp('lp_assignment_submit').disable();
				}
			}
		}
	}],
	fbar: {
		xtype: 'toolbar',
		buttonAlign: 'left',
		items: [{
			xtype: 'button',
			text: 'Delete',
			id: 'lp_assignment_delete',
			handler: function(btn) {
				//delete assignment
				Ext.Msg.show({
					title: 'Delete Assignment',
					msg: 'Are you sure you want to delete this assignment for ' + lessonplansManageAssignmentPopup.day + '?',
					buttons: Ext.Msg.YESNO,
					icon: Ext.MessageBox.WARNING,
					fn: function(btn) {
						if (btn == 'yes') {
							var grid = Ext.getCmp(lessonplansManageAssignmentPopup.day + 'LP_grid');
							var records = grid.selModel.selections.items;
							for (var i = 0, len = records.length; i < len; i++) {
								grid.store.remove(records[i]);
							}
						}
					}
				});
			}
		},
		{
			xtype: 'tbfill'
		},
		{
			xtype: 'button',
			text: 'Submit',
			disabled: true,
			id: 'lp_assignment_submit',
			handler: function(btn) {
				//save new, or changed, assignment
				record = Ext.getCmp('lp_assignment_form').getForm().getValues();
/* if (record.lp_assignment_type.match(/homework/gi)) {
                        record.lp_assignment_type = 'HW';
                    } else if (record.lp_assignment_type.match(/quiz/gi)) {
                        record.lp_assignment_type = 'Quiz';
                    } else if (record.lp_assignment_type.match(/test/gi)) {
                        record.lp_assignment_type = 'Test';
                    } */
				var destStore = Ext.getCmp(lessonplansManageAssignmentPopup.day + 'LP_grid').store;
				var destRec = destStore.getAt(0);
				var isAppending = !(destRec != undefined && destRec.data.assignment.match(/no homework/gi));
				if (lessonplansManageAssignmentPopup.isnew) {
					destStore.loadData(new Array(new Array(record.lp_assignment_title, record.lp_assignment_date, lessonplansManageAssignmentPopup.date.format('m/d/Y'))), isAppending);
					//record.lp_assignment_weight, record.lp_gradebook_category, record.lp_gradebook_title
					Ext.Ajax.request({
						url: 'teacher_tools/lessonplans_data.json.php',
						success: function() {},
						failure: function() {},
						params: {
							command: 'addToGradebook',
							task: record.lp_gradebook_title,
							courseid: Ext.getCmp('lessonplan_course').getValue(),
							category: record.lp_gradebook_category,
							taskdate: new Date().format('m/d/Y'),
							weight: Ext.getCmp("lp_gradebook_weight").getValue(),
							totalpts: Ext.getCmp("lp_gradebook_points").getValue()
						}
					});
				} else {
					editRec = destStore.getAt(destStore.find('id', lessonplansManageAssignmentPopup.recId));
					editRec.beginEdit();
					editRec.set('assignmentdue', record.lp_assignment_date);
					//editRec.set('assignmenttype',record.lp_assignment_type);
					editRec.set('assignment', record.lp_assignment_title);
					editRec.endEdit();
					assignmentStore.save();
				}
				assignmentStore.loadChildren();
				this.ownerCt.ownerCt.hide();
			}
		},
		{
			xtype: 'button',
			text: 'Close',
			handler: function(btn) {
				this.ownerCt.ownerCt.hide();
			}
		}]
	},
	//functions
	showWithArgs: function(isNewAssignment, grid, recId) {
		//update interface to either the "add" or "edit" interface
		Ext.each(Ext.getCmp('lp_assignment_form').getForm().items.items, function(field) {
			field.reset();
		});
		lessonplansManageAssignmentPopup.date = Ext.getCmp(grid.day + 'LP').plandate;
		if (grid != undefined) {
			var dow = lessonplansManageAssignmentPopup.date.add(Date.DAY, 1).format('l');
			var offset = (dow == 'Saturday' ? 3 : 1);
			Ext.getCmp('lp_assignment_date').setValue(lessonplansManageAssignmentPopup.date.add(Date.DAY, offset).format('m/d/Y'));
			this.day = grid.day;
		}
		this.isnew = isNewAssignment;
		Ext.getCmp('lp_gradebook_category').store.baseParams.courseid = Ext.getCmp('lessonplan_course').getValue();
		Ext.getCmp('lp_gradebook_category').store.load();
		this.recId = recId;
		var gradebookOptions = Ext.getCmp('lp_gradebook_options');
		gradebookOptions.collapse();
		if (isNewAssignment) {
			gradebookOptions.show();
			gradebookOptions.enable();
			this.setTitle('Add Assignment');
			Ext.getCmp('lp_assignment_delete').disable();
			var weightField = Ext.getCmp("lp_gradebook_weight");
			var pointsField = Ext.getCmp("lp_gradebook_points");
			weightField.setValue(1);
			pointsField.disable();
			weightField.disable();
			//weightParent.addClass('displayNone');        
			this.enableGradeFields();
		} else {
			gradebookOptions.hide();
			gradebookOptions.disable();
			this.setTitle('Manage Assignment');
			Ext.getCmp('lp_assignment_delete').show();
			//load data
			var record = grid.store.getAt(grid.store.find('id', recId));
			var fields = Ext.getCmp('lp_assignment_form').getForm().items;
			//fields.item("lp_assignment_type").setValue(record.data.assignmenttype);
			fields.item("lp_assignment_title").setValue(record.data.assignment);
			fields.item("lp_assignment_date").setValue(record.data.assignmentdue);
			fields.item("lp_gradebook_weight").setValue(record.data.gweight);
			fields.item("lp_gradebook_category").setValue(record.data.gcategory);
			fields.item("lp_gradebook_title").setValue(record.data.gtitle);
		}
		this.show();
	}
});

