SD.teacherTools.gradebook.addPopup('studentOrder', new Ext.Window({
	title: 'Student Order',
	width: 400,
	height: 450,
	autoScroll: true,
	plain: false,
	modal: true,
	resizable: true,
	bodyBorder: false,
	closeAction: 'hide',
	bodyStyle: 'background-color: white;',
	tbar: {
		xtype: 'toolbar',
		items: [{
			xtype: 'button',
			text: 'Order Alphabetically',
			iconCls: 'sort_alphabet',
			handler: function(btn) {
				var popup = this.ownerCt.ownerCt;
				var grid = popup.items.item('studentOrder');
				grid.store.sort('name', 'ASC');
			}
		}]
	},
	items: [{ //**************** gridpanel ***************************
		xtype: 'grid',
		store: new Ext.data.Store({
			url: 'teacher_tools/gradebook_data.json.php',
			baseParams: {
				command: 'studentOrder'
			},
			reader: new Ext.data.JsonReader({
				root: 'order',
				idProperty: 'studentid'
			}, [{
				name: 'studentid'
			},
			{
				name: 'name'
			},
			{
				name: 'orderno',
				type: 'int'
			}]),
			autoLoad: false,
			autoSave: false,
			writer: new Ext.data.JsonWriter({}),
			listeners: {
				load: function(store, records, options) {
					var hasOrder;
					for (var i = 0, len = store.data.items.length; i < len; i++) {
						var record = store.data.items[i];
						if (record.data.orderno != null) hasOrder = true;
					}
					store.sort((hasOrder ? 'orderno' : 'name'), 'ASC');
				},
				write: function(store, action, result, res, records) {
					Ext.getCmp('gradebookGrid').loadGrid();
				}
			}
		}),
		autoHeight: true,
		titleCollapse: true,
		border: false,
		autoExpandColumn: 'studentOrderName',
		id: 'studentOrder',
		columns: [
		new Ext.grid.RowNumberer(),
		{
			xtype: 'gridcolumn',
			header: 'Name',
			sortable: true,
			resizable: true,
			width: 100,
			dataIndex: 'name',
			id: 'studentOrderName'
		}],
		enableDragDrop: true,
		view: new Ext.grid.GridView({
			listeners: {
				rowsinserted: function() {
					this.refresh();
				}
			}
		}),
		listeners: {
			render: function(g) {
				var ddrow = new Ext.ux.dd.GridReorderDropTarget(g, {
					copy: false //true=copy, false=move
				});
				Ext.dd.ScrollManager.register(g.getView().getEditorParent()); // if you need scrolling, register the grid view's scroller with the scroll manager
			},
			beforedestroy: function(g) { // if you previously registered with the scroll manager, unregister it (if you don't it will lead to problems in IE)
				Ext.dd.ScrollManager.unregister(g.getView().getEditorParent());
			}
		}
	} // *************** end gridpanel ***********************
	],
	fbar: {
		xtype: 'toolbar',
		items: [{
			xtype: 'button',
			text: 'Save',
			handler: function(btn) {
				var popup = this.ownerCt.ownerCt;
				var store = popup.items.item('studentOrder').store;
				for (var i = 0, len = store.data.items.length; i < len; i++) {
					var record = store.data.items[i];
					record.set('orderno', i + 1);
				}
				store.save();
				popup.hide();
			}
		},
		{
			xtype: 'button',
			text: 'Cancel',
			handler: function(btn) {
				this.ownerCt.ownerCt.hide();
			}
		}]
	},
	listeners: {
		beforeshow: function(popup) {
			var maingrid = Ext.getCmp('gradebook-panel').items.items[0].getActiveTab();
			if (maingrid.id != 'gradebookGrid') return false;
			if (Ext.getCmp('gradebookcourseid').getValue().length > 0) {
				var popupgrid = popup.items.item('studentOrder');
				popupgrid.store.baseParams.courseid = SchoolDynamics.currentCourseID;
				popupgrid.store.load();
			} else {
				Ext.Msg.alert('Status', 'Please select a course from the course dropdown to continue.');
				return false;
			}
		}
	}
})
);

