var reviewerMgr = function(conf) {
	conf = conf || {};
	
    this.store = new Ext.data.DirectStore({
    	directFn: ICCI.ICCI.getReviewers,
        fields: ['users_id', 'users_name', 'users_userid', 'users_email', 'users_organization'],
        root: 'data',
        sortInfo: {field: "users_name", direction: "ASC"}
    });
    this.xtype = 'grid';
    this.layout = 'fit';
    this.autoWidth = true;
    this.autoScroll = true;
    this.bodyBorder = true;
    this.stripeRows = true;
    this.frame = true;
    this.border = true;
    this.bodyStyle = "padding: 10px 100px;";

    this.deleteCheckBox = new Ext.grid.CheckColumn({
    	header: "Del",
    	width: 35
    });

    this.savechangesbtn = new Ext.Button({
    	text: 'Save Changes',
    	handler: function() {
    		var recs = this.store.getModifiedRecords();
    		this.store.commitChanges();
    		var data = "";
    		if(recs.length > 0){
	    		Ext.each(recs, function(r, i){
	    			Ext.each(r.fields.items, function(f, ind){
						data += "&rec[" + i + "]";
	    				data += "[" + f.name + "]=";
	    				data += r.get(f.name);
	    			})
	    		});
    		}
    		data = data.replace(/'/g, "\'");
    		
			/*Ext.Ajax.request({
				url: 'ICCI.ICCI.updateReviewers',
				params: data,
				success: function(resp){
					var json = Ext.util.JSON.decode(resp.responseText);
					if(json.success){
						Ext.MessageBox.show({
							title: 'Task Confirmed',
							msg: json.msg,
							buttons: Ext.MessageBox.OK,
							icon: Ext.MessageBox.INFO
						});
						this.store.reload();
					} else {
						Ext.MessageBox.show({
							title: 'Error',
							msg: json.msg,
							buttons: Ext.MessageBox.OK,
							icon: Ext.MessageBox.ERROR
						});
					}
				},
				failure: function(resp){
					Ext.MessageBox.show({
						title: 'Communication Error',
						msg: 'Error communicating with remote server.  Please check your internet connection and/or server status.',
						buttons: Ext.MessageBox.OK,
						icon: Ext.MessageBox.ERROR
					});
				},
				scope: this
			})*/
    	},
    	scope: this
    });

    this.resetbtn = new Ext.Button({
    	text: 'Reset Changes',
    	handler: function(){
    		this.store.commitChanges();	// clear the modified records cache
    		this.store.reload();		// reload the last saved state
    	},
    	scope: this
    });
    
    this.cm = new Ext.grid.ColumnModel([
        {dataIndex: 'users_id', header: 'ID#'},
        {dataIndex: 'users_name', header: 'Reviewer\'s Name', width: 150},
        {dataIndex: 'users_userid', header: 'Login ID', width: 70},
        {dataIndex: 'users_email', header: 'Email address', width: 100},
        {dataIndex: 'users_organization', header: 'Reviewer\'s Organization', editor: new Ext.form.TextField({allowBlank: false})}/*,
        this.deleteCheckBox*/
    ]);

    this.title = "Reviewers Mgr";
	this.addEvents('click', 'cellclick', 'celldblclick');
	this.bbar = [this.savechangesbtn, this.resetbtn];
	this.view = new Ext.grid.GridView({forceFit: true});
    reviewerMgr.superclass.constructor.call(this, conf);
    this.on('cellclick', this.cellClickHandler);
    this.on('activate', function(){
    	if(this.store.getCount() == 0) this.store.load();
    });
}

Ext.extend(reviewerMgr, Ext.grid.EditorGridPanel, {
	cellClickHandler : function(grid, rowIndex, columnIndex, e){
		var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
		switch(fieldName){
			case "deletereviewer":
				var record = grid.getStore().getAt(rowIndex);
				var refs = record.get("refs");
				var deletereviewer = record.get("deletereviewer");
				if(refs > 0) {
					Ext.MessageBox.show({
						title: 'Invalid Request',
						msg: 'You cannot delete an organization that has projects linked to it.  Please remove project references, refresh and retry your request.',
						buttons: Ext.MessageBox.OK,
						icon: Ext.MessageBox.ERROR
					});
				} else {
					if(deletereviewer == "on") {
						record.set("deletereviewer", "off");
					} else {
						record.set("deletereviewer", "on");
					}
				}
			break;
		}
		return true;
	}
});

function adminPanel(cfg) {
	cfg = cfg || {};
	
	
	var globalSettings = new globalConfigPanel();
	var formPanel = new icciformPanel();
    var projectPanel = new projectForm();
    var userPanel = new usermgmtForm();
    var navigation = new navPanel();
    var revMgr = new reviewerMgr();
    var orgMgr = new orgManager();
    var featureMgr = new featuredProjMgr();
    var featureMgr = new currentProjMgr();
    var myProjects = new myProjectsMgr();
    var calMgr = new calendarMgr();
    var reviewerPanel = new peerReviewerPanel();
    var requestforproposalsPanel = new rfpPanel();
    
    var cfgobj = {
    	id: 'adminpanel',
    	frame: true,
    	border: true,
    	deferredRender: true,
    	enableTabScroll: true,
    	activeTab: 0,
    	style: 'overflow-x: hidden;',
    	listeners: {
    		resize: function (e){
		    	// var p = this.getEl().dom;
    			// get all active editors and queue an single fire event to resize activate
		    	//var els = Ext.DomQuery.select("[class*=icciproposaleditor]",p);
    		}
    	},
		items:[
	       globalSettings, 
	       requestforproposalsPanel, 
	       formPanel, 
	       myProjects, 
	       navigation, 
	       userPanel, 
	       revMgr,
	       orgMgr, 
	       projectPanel, 
	       featureMgr, 
	       calMgr, 
	       reviewerPanel
		]
    }
	adminPanel.superclass.constructor.call(this, cfgobj);
}
Ext.extend(adminPanel, Ext.TabPanel);
