/**
 * 对服务器进行管理
 */
 
com.easou.portal.portlet.NodeServerManagerController = {
	init : function(id, name) {
		var portlet = new Ext.ux.Portlet({
			id : id + '_' + Ext.id(),
			title : name,
			tools : com.faceye.portal.PortletTools
		});
		/**
		 * 服务器查询定义
		 */
		 var serverRoomStore=new Ext.data.Store({
		 	autoLoad : false,
			proxy : new Ext.data.HttpProxy({
				url : BP + 'serverRoomAction.do?method=getAllServerRoom'
			}),
			reader : new Ext.data.JsonReader({
				root : 'root',
				totalProperty : 'total',
				id : 'id',
				fields : ['id', 'name']
			})
		 });
		 var queryServerRoomtText=new Ext.form.ComboBox({
		 	id:'node-server-query-server-room',
            hideLabel:true,
			emptyText : '选择机房...',
			displayField : 'name',
			valueField : 'id',
			msgTarget : 'under',
			triggerAction : 'all',
			selectOnFocus : false,
			width : 150,
			store : serverRoomStore,
			listeners:{
				select:function(){
					if(queryServerBoxText && queryServerBoxText.getValue()!='' &&queryServerBoxText.getValue()!=null){
						queryServerBoxText.setValue('');
					}
				}
			}
		 });
		 var serverBoxStore=new Ext.data.Store({
		 	autoLoad : false,
			proxy : new Ext.data.HttpProxy({
				url : BP + 'serverBoxAction.do?method=getAllServerBox'
			}),
			reader : new Ext.data.JsonReader({
				root : 'root',
				totalProperty : 'total',
				id : 'id',
				fields : ['id', 'name']
			})
		 });
		 var queryServerBoxText=new Ext.form.ComboBox({
		 	id:'node-server-query-server-box',
            hideLabel:true,
			emptyText : '选择机柜...',
			displayField : 'name',
			valueField : 'id',
			msgTarget : 'under',
			triggerAction : 'all',
			selectOnFocus : false,
			width : 150,
			store : serverBoxStore,
			listeners:{
				expand:function(queryEvent){
					queryServerBoxText.setValue('');
					if(queryServerRoomtText && queryServerRoomtText.getValue()){
						var serverRoomId=queryServerRoomtText.getValue();
						serverBoxStore.reload({
							params:{
								serverRoomId:serverRoomId
							}
						});
					}
				}
			}
		 });
		 var queryIpText=new Ext.form.TextField({
		 	id:'node-server-query-ip-text-field',
		 	name:'ip',
		 	fieldLabel:'IP',
		 	hideLabel:true,
		 	emptyText:'服务器IP'
		 });
		  var controlColumnPanel=new Ext.Panel({
		 	layout:'column',
		 	border:false,
		 	items:[{
		 		columnWidth:.20,
		 		border:true,
		 		layout:'form',
		 		items:[queryIpText]
		 	},{
		 		columnWidth:.20,
		 		border:true,
		 		layout:'form',
		 		items:[queryServerRoomtText]
		 	},{
		 		columnWidth:.20,
		 		border:true,
		 		layout:'form',
		 		items:[queryServerBoxText]
		 	},{
		 		columnWidth:.10,
		 		border:true,
		 		items:[new Ext.Button({
											text:'查询',
											handler:function(btn){
												com.easou.portal.portlet.NodeServerManagerController.query();
											}
										})]
		 	}]
		 });
		  var queryForm=new Ext.FormPanel({
				labelWidth : 75, 
				frame : true,
				border:false,
				bodyStyle : 'padding:5px 5px 0',
				margins : '5 5 5 5',
				monitorValid : true,
				items:[controlColumnPanel]
				});

		var grid=com.easou.portal.portlet.NodeServerManagerController.grid(id);
		portlet.add(queryForm);
		portlet.add(grid);
		portlet.doLayout();
		return portlet;
	},
	query:function(){
		var ip=Ext.getCmp('node-server-query-ip-text-field').getValue();
		var serverRoomId=Ext.getCmp('node-server-query-server-room').getValue();
		var serverBoxId=Ext.getCmp('node-server-query-server-box').getValue();
		var grid=Ext.getCmp('node-server-grid');
		Ext.getCmp('node-server-grid').getStore().on('beforeload',function(){
				this.baseParams={};
				Ext.apply(this.baseParams,{
					ip:ip,
					serverRoomId:serverRoomId,
					serverBoxId:serverBoxId
					});
			});
		grid.getStore().load({params:{start:0,limit:15}});
	},
	/**
	 * 弹窗式服务器生存状态。
	 */
	serverHealthInof:function(nodeId){
		var serverTp=new Ext.Template(
				'<p><b>Server:</b>{serverIpAddress}({serverName})</p><p><b>SNMP Service:</b>{isSnmpServiceOpen}</p><p><b>OctetString:</b>{octetString}</p>' +
				'<p><b>OS:</b>{os}</p>' +
				'<p><b>CPU:</b>{cpu}</p>' +
				'<p><b>Memory:</b>{memory}</p>' +
				'<p><b>CPU LOAD AVERAGES:</b>{cpuLoadAverage}</p>');
		var dTpl=new Ext.Template('<p>{diskInfos}</p>' +
				'<p>{interfaceInfos}</p>');
		var win=new Ext.Window({
			id:'node-server-health-win',
			title:'服务器生存状态',
			width:500,
			height:450,
			modal:true
		});
		var fieldSet=new Ext.form.FieldSet({
			id:'node-server-health-fieldset',
			autoShow:true,
			autoScroll:true,
			height:410,
			width:480,
			style:'background-color:white'
		});
		win.add(fieldSet);
		win.on('show',function(p){
			Ext.Ajax.request({
				url:BP+'nodeServerAction.do?method=getNodeServerHealthInfo',
				params:{
					nodeId:nodeId
				},
				success:function(response,options){
//					alert(response.responseText);
                    win.findById('node-server-health-fieldset').body.createChild({tag:'div',id:'server-health-info-div'});
		            win.findById('node-server-health-fieldset').body.createChild({tag:'div',id:'serve-disk-health-info-div'});
					var json=Ext.util.JSON.decode(response.responseText);
//					alert(json[0].nodeServer.serverIpAddress);
                    serverTp.overwrite(Ext.get('server-health-info-div'),json[0].nodeServer);
//                    var html='<p>'+json[0].diskInfos+'</p>';
//                    html+='<p>'+json[0].interfaceInfos+'</p>';
//                    win.body.appendChild(html);
                    dTpl.overwrite(Ext.get('serve-disk-health-info-div'),json[0]);
				}
			});
		});
		win.show();
	},
	/**
	 * 停止/开启服务器报警(node级别)
	 * 
	 */
	 stopOrOpenNodeServerAlarm:function(nodeId,type){
	 	var msg='';
		if(type==='open'){
			msg+='开启报警任务';
		}else if(type==='close'){
			msg+='关闭报警任务';
		}
	 	Ext.Msg.confirm(msg,msg,function(btn,text){
			if(btn==='yes'){
				var loadMask = new Ext.LoadMask(Ext.getCmp('node-server-grid').getEl(),
				                                       {
															msg : '正在停止服务器报警任务,请稍候...',
															removeMask : true
														});
												loadMask.show();
												Ext.Ajax.request({
													url : BP
															+ 'nodeServerAction.do?method=stopOrOpenNodeServerAlarm',
													method : 'POST',
													params : {
														nodeId : nodeId,
														type:type
													},
													success : function(
															response, options) {
													com.faceye.SingleCicerone.msg(null,'已成功停止服务器报警任务.');
													loadMask.hide();
													Ext.getCmp('node-server-grid').getStore().reload();
													},
													failure : function(
															response, options) {
														loadMask.hide();
														com.faceye.SingleCicerone
																.msg(null,
																		'服务器报警任务停止失败');
													}
												});
			}
		});
	 },
	/**
	 * 停止监控(monitorItemConfig级别)
	 */
	stopMonitor:function(nodeId,type){
		var msg='停止';
		if(type==='notify'){
			msg+='报警';
		}else if(type==='monitor'){
			msg+='监控';
		}
		
		Ext.Msg.confirm('STOP',msg,function(btn,text){
			if(btn==='yes'){
//				var loadMask = new Ext.LoadMask(
//														Ext
//																.getCmp('node-server-grid')
//																.getEl(), {
//															msg : '正在停止被选中服务器的所有监控任务,请稍候...',
//															removeMask : true
//														});
//												loadMask.show();
//												Ext.Ajax.on('requestcomplete',
//														function(conn,
//																response,
//																options) {
//															loadMask.disable();
//														}, this);
//												Ext.Ajax.on('requestexception',
//														function(conn,
//																response,
//																options) {
//															loadMask.disable();
//														}, this);
												Ext.Ajax.request({
													url : BP
															+ 'monitorItemConfigAction.do?method=stopMonitor',
													method : 'POST',
													params : {
														nodeIds : nodeId,
														type:type
													},
													success : function(
															response, options) {
//														alert(1);
//													loadMask.disable();
													com.faceye.SingleCicerone.msg(null,'已成功停止对选中服务器的监控任务~~');
													
													},
													failure : function(
															response, options) {
//														loadMask.disable();
														com.faceye.SingleCicerone
																.msg(null,
																		'服务器监控任务停止失败');
													  loadMask.disable();
													}
												});
			}
		});												
	},
	remove:function(nodeId){
		Ext.Msg.confirm('删除数据',
														'您确认要删除当前监控服务器吗?',
														function(btn, text) {
															if (btn == 'yes') {
		Ext.getCmp('node-server-grid').loadMask.show();
												Ext.Ajax.request({
													url : BP
															+ 'nodeServerAction.do?method=removeNode',
													method : 'POST',
													params : {
														nodeId : nodeId,
														entityClass : 'com.easou.components.monitor.dao.model.Node'
													},
													success : function(
															response, options) {
															Ext.getCmp('node-server-grid').getStore().reload();
															com.faceye.SingleCicerone
																	.msg(null,
																			'数据已成功删除~~');
															Ext.getCmp('node-server-grid').loadMask.hide();
													},
													failure : function(
															response, options) {
														com.faceye.SingleCicerone
																.msg(null,
																		'数据删除失败,数据之间存在级联关系,请在删除前首先解除数据间的级联关系~~');
														Ext.getCmp('node-server-grid').loadMask.hide();
													}
												});
															}
														});
	},
	/**
	 * 服务器监控Grid 列表
	 */
	grid:function(id){
		var hardWareId='';
		/**
		 * server info grid
		 */
		 var tempHardWareId='';
		 if(id){
		 	tempHardWareId=id;
			if(tempHardWareId.indexOf('_')!=-1){
				var temp=tempHardWareId.split('_');
				if(temp.length===2){
					if(temp[0]=='null'){
						hardWareId=temp[1];
					}
				}
			}
		}
		var nodeServerStore = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
				url : BP + 'nodeServerAction.do?method=getNodeServers'
			}),
			baseParams:{
				hardWareId:tempHardWareId
			},
			reader : new Ext.data.JsonReader({
				root : 'root',
				totalProperty : 'total',
				id : 'id',
				fields : ['id', 'name','nodeId',
						'serverIpAddress', 'serverName','serverBoxName','isSnmpServiceOpen','cpuLoadAverage','octetString', 'cpu', 'memory', 'os',
						'nodeId', 'nodeName', 'nodeCategory','diskInfos','interfaceInfos','serverRoomId','serverRoomName','isAlarm','hardWareId']
			})
		});
		/*
		 * 进行监控项明细配置
		 */
		function opearte(value,p,r){
            var html1='';
            var isAlarm=r.data['isAlarm'];
            if(isAlarm){
		       html1 = '<a href="#" onclick="com.easou.portal.portlet.NodeServerManagerController.stopOrOpenNodeServerAlarm(\'{0}\',\'close\')"><font color="red">停止报警</font></a>';
            }else{
            	html1 = '<a href="#" onclick="com.easou.portal.portlet.NodeServerManagerController.stopOrOpenNodeServerAlarm(\'{0}\',\'open\')"><font color="green">开启报警</font></a>';
            }
			html1 = String.format(html1, r.get('nodeId'));
			var htmlxx = '<a href="#" onclick="com.easou.portal.portlet.NodeServerManagerController.stopMonitor(\'{0}\',\'monitor\')">停止监控</a>';
			htmlxx = String.format(htmlxx, r.get('nodeId'));
           var html2 = '<a href="#" onclick="com.easou.portal.portlet.NodeServer.serverMonitorConfig(\'{0}\',\'{1}\')">编辑</a>';
			html2 = String.format(html2, r.get('nodeId'),r.get('hardWareId'));
			var html3 = '<a href="#" onclick="com.easou.portal.portlet.NodeServerManagerController.remove(\'{0}\')">删除</a>';
			html3 = String.format(html3, r.get('nodeId'));
			var html4='<a href="#" onclick="com.easou.portal.portlet.NodeServerManagerController.serverHealthInof(\'{0}\')">生存状态</a>';
			html4 = String.format(html4, r.get('nodeId'));
			return html4+'&nbsp;|&nbsp;'+html1+'&nbsp;|&nbsp;'+htmlxx+'&nbsp;|&nbsp;'+html2+'&nbsp;|&nbsp;'+html3;
		}
		var cm = new Ext.grid.ColumnModel([new Ext.grid.CheckboxSelectionModel(),
				 {
					id : 'id',
					dataIndex : 'id',
					hidden : true
				}, {
					width:150,
					header : "名称",
					dataIndex : 'nodeName'
			}, {
				width:150,
				header : 'IP',
				sortable :true,
				dataIndex : 'serverIpAddress'
			},{
			  width:150,
			  header:'物理位置',
			  dataIndex:'id',
			  renderer:function(v,p,r){
			  	return r.data['serverRoomName']+'<font color="green">-></font>'+ r.data['serverBoxName'];
			  }
			}
			, {
				width:50,
				header : '内存',
				dataIndex : 'memory'
			},{
				width:50,
				header:'SNMP是否开启',
				renderer:function(v,p,r){
					var d='';
					var isOpen=r.data['isSnmpServiceOpen'];
					if(isOpen){
						d='<font color="green">已开启</font>';
					}else{
						d='<font color="red">可能未开启</font>';
					}
					return d;
				}
			},{
				width:50,
				header:'是否报警',
				renderer:function(v,p,r){
					var msg='';
					var isAlarm=r.data['isAlarm'];
					if(isAlarm){
						msg='<font color="green">报警开启</font>';
					}else{
						msg='<font color="red">报警关闭</font>';
					}
					return msg;
				}
			},
			{
				width:200,
				header:'操作',
				dataIndex:'id',
				renderer:opearte
			}
			]);
		var grid = new Ext.grid.GridPanel({
			id : 'node-server-grid',
			header : false,
			region : 'center',
			autoScroll:false,
			autoHeight:true,
			shadow : true,
			stripeRows : true,
			collapsible: true,
            animCollapse: false,
			store : nodeServerStore,
			cm : cm,
			sm:new Ext.grid.CheckboxSelectionModel(),
			bodyStyle : 'width:100%;height:100%;',
			margins:'5 0 0 0',
			trackMouseOver : false,
			loadMask : true,
//			view:new Ext.grid.GroupingView({
//				groupTextTpl:'{text}(<b><font color="red">{[values.rs.length]}</font></b>{[values.rs.length>0>?"条记录":"当前没有数据"]})'
//			}),
			viewConfig : {
				forceFit : true,
				deferEmptyText:false,
				emptyText:'<div style="text-align:center;font-weight:bold;color:red;font-size:14px;padding:20px;">当前没有数据!</div>'
			},
			tbar : [{
				id:'node-server-multi-remove',
				text:'批量删除',
				tooltip:'一次性删除多台服务器',
				iconCls:'remove',
				handler:function(btn){
				 var selectionModel=grid.getSelectionModel();
            	//取得共选择了多少条记录。
            	var selectedCount=selectionModel.getCount();
            	if(selectedCount==0){
            		com.faceye.SingleCicerone.msg(null,'您没有选中任何数据，请选择您要删除的数据！');
            		return;
            	}else{
            		 var records=selectionModel.getSelections();
            		 var ids='';
            		 for(i=0;i<records.length;i++){
            		 	ids+=records[i].get('nodeId');
            		 	ids+=',';
            		 }
		             Ext.Msg.confirm('删除数据',
														'您确认要删除选中监控服务器吗?删除后,前期配置的所有监控,报警等将失效,监控日志将会被保留.',
														function(btn, text) {
															if (btn == 'yes') {
		            Ext.getCmp('node-server-grid').loadMask.show();
												Ext.Ajax.request({
													url : BP
															+ 'nodeServerAction.do?method=multiRemoveNode',
													method : 'POST',
													params : {
														ids : ids,
														entityClass : 'com.easou.components.monitor.dao.model.Node'
													},
													success : function(
															response, options) {
															Ext.getCmp('node-server-grid').getStore().reload();
															com.faceye.SingleCicerone
																	.msg(null,
																			'数据已成功删除~~');
															Ext.getCmp('node-server-grid').loadMask.hide();
													},
													failure : function(
															response, options) {
														com.faceye.SingleCicerone
																.msg(null,
																		'数据删除失败,数据之间存在级联关系,请在删除前首先解除数据间的级联关系~~');
														Ext.getCmp('node-server-grid').loadMask.hide();
													}
												});
											}
										});
            	}
			  }
			},{
				id:'node-server-multi-remove',
				text:'停止报警',
				tooltip:'一次性停止多台服务器报警',
				iconCls:'stop',
				handler:function(btn){
				 var selectionModel=grid.getSelectionModel();
            	//取得共选择了多少条记录。
            	var selectedCount=selectionModel.getCount();
            	if(selectedCount==0){
            		com.faceye.SingleCicerone.msg(null,'您没有选中任何数据，请选择您要停止报警的服务器！');
            		return;
            	}else{
            		 var records=selectionModel.getSelections();
            		 var ids='';
            		 for(i=0;i<records.length;i++){
            		 	ids+=records[i].get('nodeId');
            		 	ids+=',';
            		 }
            		 
		             Ext.Msg.confirm('删除数据',
														'您确认要停止选中的服务器报警?停止后,服务器将只取数据,不报警.',
														function(btn, text) {
															if (btn == 'yes') {
		            Ext.getCmp('node-server-grid').loadMask.show();
												Ext.Ajax.request({
													url : BP
															+ 'nodeServerAction.do?method=multiStopNodeAlarm',
													method : 'POST',
													params : {
														ids : ids,
														entityClass : 'com.easou.components.monitor.dao.model.Node'
													},
													success : function(
															response, options) {
															Ext.getCmp('node-server-grid').getStore().reload();
															com.faceye.SingleCicerone
																	.msg(null,
																			'停止成功~~');
															Ext.getCmp('node-server-grid').loadMask.hide();
													},
													failure : function(
															response, options) {
														com.faceye.SingleCicerone
																.msg(null,
																		'数失败,数据之间存在级联关系,请在删除前首先解除数据间的级联关系~~');
														Ext.getCmp('node-server-grid').loadMask.hide();
													}
												});
											}
										});
            	}
			  }
			},{
						id:'new-server-monitor-config',
						text:'添加服务器',
						tooltip:'添加服务器监控',
						iconCls:'add',
						handler:function(btn){
							com.easou.portal.portlet.NodeServer.serverMonitorConfig(null,hardWareId);
						}
					},
					{
						id : 'multi-text-area-add',
						iconCls : 'add',
						text : '批量添加服务器',
						tooltip : '批量添加服务器',
						handler : function(btn) {
							com.easou.portal.portlet.NodeServer
									.multiTextAreaServerAdd();
						}
					},
					{   
						id : 'snmp-not-open',
						text : 'SNMP未开启服务器(<font color="green">NEW!</font>)',
						tooltip : '查看所有snmp服务可能未开启服务器',
						handler : function(btn) {
							grid.getStore().on('beforeload',function(){
				               this.baseParams={};
				               Ext.apply(this.baseParams,{
					             isSnmpServiceOpen:'false'
					          });
			                });
		                    grid.getStore().load({params:{start:0,limit:15}});
						}
					}],
			bbar : com.faceye.ui.util.PaggingToolBar(15, nodeServerStore)
		});
		grid.on('rowdblclick', function(g, index, e) {
					var selectionModel = g.getSelectionModel();
					// 取得共选择了多少条记录。
					var selectedCount = selectionModel.getCount();
					if (selectedCount === 0) {
						Ext.Msg.alert('编辑操作', '您没有选择要编辑的数据，请选择您准备编辑的数据');
						return;
					} else if (selectedCount > 1) {
						Ext.Msg.alert('编辑操作', '您每次只能选择一条待编辑的数据，请选择您准备编辑的数据');
						return;
					} else {
						var records = selectionModel.getSelections();
						com.easou.portal.portlet.NodeServer.serverMonitorConfig(records[0].data.nodeId,null);
					}
				});
				nodeServerStore.on('beforeload',function(s){
					s.removeAll();
				});
		nodeServerStore.load({
			params : {
				start : 0,
				limit : 15
			}
		});
		return grid;
	},
	/**
	 * 设备管理中的弹出窗口
	 */
	controllerWin:function(id){
		var win=new Ext.Window({
			id:Ext.id(),
			title:'设备IP资源',
			model:true,
			width:1000,
			autoHeight:true,
			modal:true
		});
		var grid=com.easou.portal.portlet.NodeServerManagerController.grid(id);
		win.add(grid);
//		win.on('afterlayout',function(w,layout){
//			alert(grid.getStore().getCount());
//			if(grid.getStore().getCount()===0){
//				    var title=w.title;
//					title+='&nbsp;&nbsp;<font color="red">没有查询到符合条件的数据.</font>';
//					w.setTitle(title);
//			}
//		});
		win.show();
	}
};
com.easou.portal.portlet.NodeServer = {
	/**
	 * 加载服务器基础信息,内存等.
	 */
	getServerBaseInfo : function(serverIpAddress) {
		var store = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
				url : BP
						+ 'nodeServerAction.do?method=getServerName&serverIpAddress='
						+ serverIpAddress
			}),
			reader : new Ext.data.JsonReader({
				root : 'rows',
				success : true,
				fields : ['serverName', 'totalRamMemory', 'systemOs']
			})
		});
		var loadMask = new Ext.LoadMask(Ext.getCmp('node-server-edit-win')
						.getEl(), {
					msg : '正在加载服务器数据,请稍候...',
					removeMask : true,
					store : store
				});
		loadMask.show();
		store.load({
			callback : function(r, options, success) {
				Ext.getCmp('server_name').setValue(r[0].data.serverName);
				Ext.getCmp('total_ram_memory')
						.setValue(r[0].data.totalRamMemory);
				Ext.getCmp('system_os').setValue(r[0].data.systemOs);
				Ext.getCmp('server-base-info-tabpanel')
						.activate('server-base-info-tabpanel-form');
			}
		});
	},
	/**
	 * 创建磁盘基础信息相关的fieldset
	 */
	createDiskFieldSet : function(serverIpAddress, nodeServerId) {
		var store;
		var formTab = Ext.getCmp('server-disk-info');
		var oldFieldSet = formTab.findByType('fieldset');
		if (serverIpAddress) {
			store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url : BP
							+ 'nodeServerAction.do?method=getServerDiskInfo&serverIpAddress='
							+ serverIpAddress
				}),
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'name',
					fields : ['name', 'totalSpace', 'usedSpace',
							'freeSpaceRate', 'freeSpace', 'index']
				})
			});
		} else if (nodeServerId) {
			store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url : BP
							+ 'nodeServerAction.do?method=getServerDiskInfoFromDB&nodeServerId='
							+ nodeServerId
				}),
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'id',
					fields : ['id', 'name', 'totalSpace', 'usedSpace',
							'freeSpaceRate', 'freeSpace', 'index',
							'nodeServerId']
				})
			});
		}
		var loadMask = new Ext.LoadMask(Ext.getCmp('node-server-edit-win')
						.getEl(), {
					msg : '正在加载服务器磁盘数据,请稍候...',
					removeMask : true,
					store : store
				});
		loadMask.show();
		store.load({
			callback : function(r, options, success) {
				if (r) {
					for (i = 0; i < r.length; i++) {
						var record = r[i];
						var fieldSet = new Ext.form.FieldSet({
							xtype : 'fieldset',
							title : record.data.name,
							collapsible : true,
							autoHeight : true,
							width : 500,
							hideBorders : true,
							margins : '0 5 0 0',
							padding : '0 5 0 0',
							bodyStyle : 'width:95%;',
							defaultType : 'textfield'
						});
						if (record.data.id) {
							var diskId = new Ext.form.TextField({
								name : 'disk_' + record.data.index + '_id',
								value : record.data.id,
								hidden : true,
								hideLabel : true
							});
							fieldSet.add(diskId);
						}
						var name = new Ext.form.TextField({
							name : 'disk_' + record.data.index + '_' + 'name',
							value : record.data.name,
							readOnly : true,
							fieldLabel : '分区名',
							width : 200
						});
						fieldSet.add(name);
						var diskIndex = new Ext.form.TextField({
							name : 'disk_' + record.data.index + '_index',
							fieldLabel : '磁盘索引',
							value : record.data.index,
							readOnly : true
						});
						fieldSet.add(diskIndex);
						var totalSpace = new Ext.form.TextField({
							// id:record.data.name+i,
							name : 'disk_' + record.data.index + '_'
									+ 'totalSpace',
							fieldLabel : '总容量(G)',
							readOnly : true,
							value : record.data.totalSpace,
							width : 200
						});
						fieldSet.add(totalSpace);
						var used = new Ext.form.TextField({
							// id:record.data.name+i,
							name : 'disk_' + record.data.index + '_'
									+ 'usedSpace',
							readOnly : true,
							fieldLabel : '使用容量(G)',
							value : record.data.usedSpace,
							width : 200
						});
						fieldSet.add(used);
						var free = new Ext.form.TextField({
							// id:record.data.name+i,
							name : 'disk_' + record.data.index + '_'
									+ 'freeSpace',
							readOnly : true,
							fieldLabel : '空闲空间(G)',
							value : record.data.freeSpace,
							width : 200
						});
						fieldSet.add(free);
						var rate = new Ext.form.TextField({
							// id:record.data.name+i,
							name : 'disk_' + record.data.index + '_'
									+ 'freeSpaceRate',
							readOnly : true,
							value : record.data.freeSpaceRate,
							fieldLabel : '空闲比率(%)',
							width : 200
						});
						fieldSet.add(rate);
						formTab.add(fieldSet);
					}
					formTab.doLayout();
				}
			}
		});

	},
	/**
	 * 删除服务器磁盘信息.
	 */
	removeServerDiskInfoFromDB : function(nodeServerId, callback) {
		Ext.Ajax.request({
			url : BP
					+ 'nodeServerAction.do?method=removeServerDiskInfoFromDB&nodeServerId='
					+ nodeServerId,
			method : 'POST',
			success : function(response, options) {
				callback();
			}
		});
	},
	/**
	 * 创建异常发送规则明细
	 */
	createExceptionSendRuleDetail : function(exceptionSendRuleId) {
		var combo = Ext.getCmp('exception-send-rule-select');
		var id = '';
		if (exceptionSendRuleId) {
			id = exceptionSendRuleId;
		} else {
			id = combo.getValue();
		}
		var record = combo.store.getById(id);
		var tpl = new Ext.XTemplate('<table style="font-size:12px;width:80%;margins:5 10 10 10;"><tr><td>名称:</td><td>{name}</td></tr></p>'
				+ '<tr><td>发送类型:</td><td><tpl if="sendType==1">全部</tpl><tpl if="sendType==2">邮件</tpl><tpl if="sendType==3">短信</tpl></td></tr>'
				+ '<tr><td>短信发送频率:</td><td>{messageSendFreq}分/次</td></tr>'
				+ '<tr><td>短信连续发送次数:</td><td>{messageSendCount}次</td></tr>'
				+ '<tr><td>短信暂停时间:</td><td>{messageStopTime}分</td></tr>'
				+ '<tr><td>邮件发送频率:</td><td>{mailSendFreq}分/次</td></tr>'
				+ '<tr><td>邮件连接发送次数:</td><td>{mailSendCount}次</td></tr>'
				+ '<tr><td>邮件暂停时间:</td><td>{mailStopTime}分</td></tr></table>');
		var exceptionPanel = Ext.getCmp('exception-send-rule-panel');
		tpl.overwrite(exceptionPanel.body, record.data);
	},
	getAllSelectGroupIds:function(){
		var groupIds='';
	    if(Ext.getCmp('group-grid')){
	    	groupIds+='@@';
	    	var selectionModel=Ext.getCmp('group-grid').getSelectionModel();
	    	var selectedCount=selectionModel.getCount();
	    	if(selectedCount!=0){
	    		var records=selectionModel.getSelections();
	    		for(var i=0;i<records.length;i++){
	    			groupIds+=records[i].get('id');
	    			groupIds+=',';
	    		}
	    	}
	    }else{
	    	groupIds+='##';
	    }
	    return groupIds;
	},
	
	/**
	 * 使用文本框批量添加服务器监控
	 */
	multiTextAreaServerAdd : function() {
		if (Ext.getCmp('multi-node-server-add-win')) {
			Ext.getCmp('multi-node-server-add-win').destroy();
		}
		var win = new Ext.Window({
			id : 'multi-node-server-add-win',
			layout : 'fit',
			// 模式窗口
			maximizable : true,
			modal : true,
			width : 580,
			// height : 380,
			autoHeight : true,
			closeAction : 'hide',
			plain : true,
			autoScroll : true,
			title : '批量添加服务器'
		});
		var templateStore = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
				url : BP
						+ 'configTemplateAction.do?method=getConfigTemplatesByTemplateCategory&templateCategory=1'
			}),
			reader : new Ext.data.JsonReader({
				root : 'root',
				totalProperty : 'total',
				id : 'id',
				fields : ['id', 'name']
			})
		});
		templateStore.load();
		var exceptionSendSelect = new Ext.form.ComboBox({
			id : 'template-exception-send-rule-select',
			store : templateStore,
			displayField : 'name',
			valueField : 'id',
			hiddenName : 'configTemplateId',
			typeAhead : true,
			width : 180,
			mode : 'local',
			fieldLabel : '监控模板<font color="red">*</font>',
			allowBlank : false,
			name : 'exceptionSendRuleId',
			msgTarget : 'under',
			blankText : '监控模板没有选择',
			triggerAction : 'all',
			emptyText : '选择监控模板...',
			selectOnFocus : true
		});
		var parentIdText = new Ext.form.TextField({
			fieldLabel : 'ID',
			id : 'serverBox_id',
			inputType : 'trigger',
			readOnly : true,
			name : 'serverBoxId',
			// width : 215,
			hidden : true,
			hideLabel : true
		});
		var parentNameText = new Ext.form.TextField({
			fieldLabel : '所属机柜<font color="red">*</font>',
			id : 'serverRoom_name_'+Ext.id(),
			allowBlank : false,
			width : 180,
			msgTarget : 'under',
			blankText : '不能为空',
			inputType : 'trigger',
			name : 'serverBoxName',
			readOnly : true,
			// width : 215,
			listeners : {
				render : function(ct) {
					var parentEl = this.getEl().up('div.x-form-element');
					if (parentEl) {
						var child = parentEl.createChild({
							tag : 'button',
							html : '选择机柜'
						});
						child.on('click', function() {
							var winT, selectTree;
							if (!winT && !selectTree) {
								winT = new Ext.Window({
									layout : 'fit',
									modal : true,
									closable : false,
									title : '选择机柜',
									width : 200,
									closeAction : 'hide',
									height : 300,
									x : win.getPosition()[0] + 420,
									y : win.getPosition()[1] + 80,
									plain : true,
									buttons : [{
												text : '确定',
												handler : function() {
													winT.hide(this);
												}
											}, {
												text : '关闭',
												handler : function() {
													winT.hide(this);
												}
											}]
								});
								// 生成树形结构
								Ext.BLANK_IMAGE_URL = 'scripts/ext/resources/images/vista/s.gif';
								if (Ext.getCmp('server-box-select-tree-panel')) {
									Ext.getCmp('server-box-select-tree-panel')
											.destroy();
								}
								if (!Ext.get('server-box-select-tree')) {
									Ext.getBody().createChild({
										tag : 'div',
										id : 'server-box-select-tree'
									});
								}
								var Tree = Ext.tree;
								if (!Ext.getCmp('server-box-select-tree-panel')) {
									selectTree = new Tree.TreePanel({
										id : 'server-box-select-tree-panel',
										el : 'server-box-select-tree',
										// renderTo:winT,
										autoScroll : true,
										animate : true,
										enableDD : false,
										containerScroll : true,
										rootVisible : false,
										loader : new Tree.TreeLoader({
											dataUrl : BP
													+ 'serverManagerAction.do?method=serverManagerTree'
										})
									});
									var root = new Tree.AsyncTreeNode({
										text : '根分类',
										draggable : false,
										id : 'source'
									});
									selectTree.setRootNode(root);
									selectTree.on('click', function(node) {
												/**
												 * 当点击节点的时候，将当前点击节点的值设为正在添加新节点的父节点
												 */
												if (node.isLeaf() && node.getDepth()==2) {
													parentIdText
															.setValue(node.id);
													parentNameText
															.setValue(node.text);
													return true;
												} else {
													node.toggle();
												}
											});
									// render the tree
									selectTree.render();
									root.expand();
								} else {
									selectTree = Ext
											.getCmp('server-box-select-tree-panel');
								}
							}
							winT.add(selectTree);
							winT.show(this);
						});
					}

				}
			}
		});
		var area = new Ext.form.TextArea({
			fieldLabel : 'IP地址',
			hideLabel:true,
			id:'multi-ips',
			emptyText : '****换行输入另一IP',
			name : 'ip',
			// grow:true,
			// growMax:300,
			height : 200,
			allowBlank:false,
			msgTarget:'side',
			blankText:'IP地址不能为空',
			width : 400
		});
		var octetString=new Ext.form.TextField({
			id:'multi-ip-octetString',
			name:'octetString',
			emptyText:'public',
			fieldLabel:'SNMP共同体'
		});
		var isIngroeSnmpServiceTest=new Ext.form.Checkbox({
			id:'ingroe-snmp-server-test',
			name:'snmp-service-test',
			checked:false,
			fieldLabel:'忽略SNMP服务可用性探测'
		});
		var updateForm = new Ext.FormPanel({
			labelWidth : 75, // label settings here cascade unless
			id : 'multi-node-server-add-form',
			// overridden
			url : BP
					+ 'nodeServerAction.do?method=multiServerAdd',
			frame : true,
			// title: 'Simple Form',
			bodyStyle : 'padding:5px 5px 0',
			width : 550,
			autoHeight : true,
			margins : '5 5 5 5',
			monitorValid : true,
			layout : 'form',
			defaultType : 'textfield',
			items : [exceptionSendSelect,octetString, parentNameText, parentIdText,isIngroeSnmpServiceTest, {
				xtype:'tabpanel',
				id:'multi-ip-save-table-panel',
				plain:true,
				activeTab:0,
				height : 255,
				defaults : {
						    bodyStyle : 'padding:10px'
							},
				items:[{
						title : '批量IP输入',
						id : 'multi-ip-save-table-panel-ip-area',
						layout : 'form',
						defaults : {
									width : 400
									},
						defaultType : 'textfield',
						items : [area]
						},
						{
						  title : '异常通知用户组',
						  id : 'multi-ip-save-table-panel-exception-send-user',
						  layout : 'form',
						  defaults : {
									width : 500
									},
						   defaultType : 'textfield',
						   autoScroll:true,
						   listeners:{
						     activate : function(tab) {
						     	if(!tab.findById('group-grid')){
						     	var grid=com.easou.portal.portlet.NodeServerConfig.exceptionSendUserGroup(null);
						     	tab.add(grid);
						     	}
						     	tab.doLayout();
						     }
						   }
						}]
			}],
			buttons : [{
				text : '确定',
				type : 'submit',
				formBind : true,
				buttonAlign : 'center',
				handler : function(btn) {
					var templateId=Ext.getCmp('template-exception-send-rule-select').getValue();
					var serverBoxId=Ext.getCmp('serverBox_id').getValue();
					var ips=Ext.getCmp('multi-ips').getValue();
					var groupIds=com.easou.portal.portlet.NodeServer.getAllSelectGroupIds();
					var octetString=Ext.getCmp('multi-ip-octetString').getValue();
					var msg='';
					var isStartSnmpServiceTest=Ext.getCmp('ingroe-snmp-server-test').getValue();
//					alert(isStartSnmpServiceTest);
//					return;
					if(templateId==''||templateId==null){
						msg='您还没有选择模板.';
					}
					if(serverBoxId==''||serverBoxId==null){
						msg='您还没有选择机柜';
					}
					if(ips==''||ips==null){
						msg='您还没有输入IP列表.';
					}
					if(msg!=''){
						com.faceye.SingleCicerone.msg(null,msg);
						return;
					}
					Ext.Ajax.request({
						url:BP+'nodeServerAction.do?method=multNodeServerAddIpExistTest',
						params:{
							ips:ips
						},
						success:function(response,options){
							var json = Ext.util.JSON.decode(response.responseText);
							if(json[0].isExistRepeat){
								var xips='';
								for(var i=0;i<json[0].ips.length;i++){
									xips+=json[0].ips[i].ip;
									xips+='\n';
								}
								var winxx=new Ext.Window({
									id:'ip-repeat-tip',
									title:'当前已配置过的监控IP',
									layout : 'fit',
			                        maximizable : true,
			                        modal : true,
			                        width : 300,
			                        autoHeight : true,
			                        closeAction : 'close',
			                        plain : true,
			                        autoScroll : true,
			                        buttonAlign:'center',
			                        buttons:[{
			                        	id:'ip-repeat-tip-b',
			                        	text:'关闭',
			                        	handler:function(btn){
			                        		winxx.destroy();
			                        	}
			                        }]
								});
								var ipTextArea=new Ext.form.TextArea({
			                        fieldLabel : 'IP地址',
			                        hideLabel:true,
			                        id:'multi-ips-repeat',
			                        name : 'repeat-ips',
			                        height : 200,
			                        msgTarget:'side',
			                        blankText:'IP地址不能为空',
			                        width : 100
		                           });
		                            xips+="\n以上IP已经配置了监控数据,不需要再使用模板进行批量添加,如果要修改监控参数,请单独修改."
		                           ipTextArea.setValue(xips);
		                           winxx.add(ipTextArea);
		                           winxx.show();
							}else{
								//是否忽略服务器snmp服务可用性探测.
								if(!isStartSnmpServiceTest){
								var winxx=new Ext.Window({
									id:'ip-snmp-service-close-tip',
									title:'当前SNMP服务关闭或octetString不一致的IP',
									layout : 'fit',
			                        maximizable : true,
			                        modal : true,
			                        width : 300,
			                        autoHeight : true,
			                        closeAction : 'close',
			                        plain : true,
			                        autoScroll : true,
			                        buttonAlign:'center',
			                        buttons:[{
			                        	id:'ip-snmp-service-close-tip-b',
			                        	text:'关闭',
			                        	handler:function(btn){
			                        		winxx.destroy();
			                        	}
			                        }]
								});
								 var ipTextArea=new Ext.form.TextArea({
			                        fieldLabel : 'IP地址',
			                        hideLabel:true,
			                        id:'multi-ips-repeat',
			                        name : 'repeat-ips',
			                        height : 200,
			                        msgTarget:'side',
			                        width : 100
		                           });
		                            ipTextArea.setValue('正在探测服务器SNMP服务可用性,本任务会花费较多时间,请稍候....');
		                            winxx.add(ipTextArea);
		                            winxx.show();
								Ext.Ajax.request({
								   url:BP+'nodeServerAction.do?method=multNodeServerAddSnmpServiceTest',
								   method:'GET',
								   timeout:60000,
								   params:{
								   	ips:ips,
								   	octetString:octetString
								   },
								   success:function(response,options){
								   	  var json = Ext.util.JSON.decode(response.responseText);
								   	  if(json[0].isExistClosedService){
								   	  	var xips='';
								   	  	for(var i=0;i<json[0].ips.length;i++){
									        xips+=json[0].ips[i].ip;
									        xips+='\n';
								        }
								        xips+="\n以上IP的服务器SNMP服务未开启,或octetString配置不正确,请与该服务器的系统管理员联系."
								        ipTextArea.setValue(xips);
								        winxx.show();
								        return;
								    }else{
								    	if(Ext.getCmp('ip-snmp-service-close-tip')){
								           winxx.destroy();
								    	}
								   	   updateForm.getForm().submit({
						                           method : 'POST',
						                           timeout : 600000,
						                           params:{
							                        _templateId:templateId,
							                       _serverBoxId:serverBoxId,
							                       _ips:ips,
							                       _groupIds:groupIds,
							                       _octetString:octetString
						                       },
						                      waitMsg : '正在保存数据',
						                     success : function(form, action) {
							                            com.faceye.SingleCicerone.msg(null,'批量监控服务器成功~~');
							                            Ext.getCmp('node-server-grid').getStore().reload();
							                            Ext.getCmp('multi-node-server-add-win').destroy();
						                               },
						                     failure : function(form, action) {
//							Ext.Msg.alert('批量监控服务器保存', '批量监控服务器保存失败'
							                         com.faceye.SingleCicerone.msg(null,'批量监控服务器保存失败~~');
							                           Ext.getCmp('multi-node-server-add-win').destroy();
						                             }
					                         });
								   }
								   },
								   failure:function(response,options){
								   	  ipTextArea.setValue('探测失败,你本次待添加的服务器数量过多或网络环境有问题.如果你要继续添加本服务器,请选择"忽略SNMP服务探测"');
								   	  winxx.show();
								   }
								});
								}else{
//							//忽略snmp服务推测,直接提交
                                   updateForm.getForm().submit({
						                           method : 'POST',
						                           timeout : 600000,
						                           params:{
							                        _templateId:templateId,
							                       _serverBoxId:serverBoxId,
							                       _ips:ips,
							                       _groupIds:groupIds,
							                       _octetString:octetString
						                       },
						                      waitMsg : '正在保存数据',
						                     success : function(form, action) {
							                            com.faceye.SingleCicerone.msg(null,'批量监控服务器成功~~');
							                            Ext.getCmp('node-server-grid').getStore().reload();
//							                            win.destroy();
                                                        Ext.getCmp('multi-node-server-add-win').destroy();
						                               },
						                     failure : function(form, action) {
//							Ext.Msg.alert('批量监控服务器保存', '批量监控服务器保存失败'
							                         com.faceye.SingleCicerone.msg(null,'批量监控服务器保存失败~~');
							                           Ext.getCmp('multi-node-server-add-win').destroy();
						                             }
					                         });
//							
						      }
							}
//						
						},
						failure:function(response,options){
							
						}
					});
					return;
					
				}
			}]
		});
		win.add(updateForm);
		win.show();
	},
	/**
	 * 保存服务器基础信息.
	 */
	doSaveServerBasicInfo:function(callback,node){
		var loadMask=new Ext.LoadMask(
		 	    		Ext.getCmp('server-monitor-config-win').getEl(),
		 	    		{
		 	    			msg:'正在保存数据,请稍候.',
		 	    			removeMask :true
		 	    		}
		 	    	);
		 	    	loadMask.show();
		 	    	var nodeId=Ext.getCmp('node-config-id').getValue();
		 	    	var serverBoxId=Ext.getCmp('serverBox_id').getValue();
		 	    	var nodeName=Ext.getCmp('node_name').getValue();
		 	    	var serverIpAddress=Ext.getCmp('server_ip_address').getValue();
		 	    	var serverName=Ext.getCmp('server_name').getValue();
		 	    	var cpu= Ext.getCmp('server_cpu').getValue();
                    var memory= Ext.getCmp('total_ram_memory').getValue();
                    var os= Ext.getCmp('system_os').getValue();
                    var exceptionSendRuleId = Ext.getCmp('exception-send-rule-select').getValue();
                    var octetString =Ext.getCmp('octet_string').getValue();
                    var hardWareId=Ext.getCmp('hard_ware_id').getValue();
                    var isNodeNotify=Ext.getCmp('is-node-notify').getValue();
                    var isMainIp=Ext.getCmp('is-main-ip').getValue();
                    var isInner=Ext.getCmp('is-inner-node').getValue();
//                    var isNodeNotify=Ext.getCmp('is-node-server-notify-radio-group-radio-0').getGroupValue();
//                    alert(isNodeNotify);
//                    return;
                    var msg='';
                    if(''===serverBoxId||null===serverBoxId){
                    	msg+='请选择所属机柜.';
                    }
                    if(''===serverIpAddress || null===serverIpAddress){
                    	msg+='请填写服务器IP地址.';
                    }
                    if(''===nodeName||null===nodeName){
                    	msg+='请填写监控对像名称.';
                    }
                    if(''===exceptionSendRuleId||null===exceptionSendRuleId){
                    	msg+='请选择异常发送规则';
                    }
                    if(''===isNodeNotify ||null===isNodeNotify){
                    	msg+='请选择是否报警';
                    }
                    if(''===isInner){
                    	msg+='請選擇是否內網監控對像.';
                    }
                    if(''!=msg){
                    	loadMask.hide();
                    	com.faceye.SingleCicerone.msg(null,msg);
                    	return;
                    }
                    if(nodeId&&nodeId!=''&&nodeId!=null){
                    	doSave();
                    }else{
                    Ext.Ajax.request({
						url:BP+'nodeServerAction.do?method=multNodeServerAddIpExistTest',
						params:{
							ips:serverIpAddress
						},
						success:function(response,options){
							var json = Ext.util.JSON.decode(response.responseText);
							if(json[0].isExistRepeat){
								com.faceye.SingleCicerone.msg(null,serverIpAddress+'监控已经存在,不需要再次添加!');
								loadMask.hide();
							}else{
								doSave();
							}
						 }
                      });
                    }
                    
                    
                    function doSave(){
                    	Ext.Ajax.request({
		 	    		method:'POST',
		 	    		url:BP+'nodeServerAction.do',
		 	    		params:{
		 	    			method:'saveServerMonitorBaseConfigInfo',
		 	    			nodeId:nodeId,
		 	    			serverBoxId:serverBoxId,
		 	    			nodeName:nodeName,
		 	    			serverIpAddress:serverIpAddress,
		 	    			serverName:serverName,
		 	    			cpu:cpu,
		 	    			memory:memory,
		 	    			os:os,
		 	    			exceptionSendRuleId:exceptionSendRuleId,
		 	    			octetString:octetString,
		 	    			hardWareId:hardWareId,
		 	    			isNodeNotify:isNodeNotify,
		 	    			isMainIp:isMainIp,
		 	    			isInner:isInner
		 	    		},
		 	    		success : function(response,options) {
		 	    			var data=Ext.util.JSON.decode(response.responseText);
//		 	    			alert(data.rows[0].entityId);
		 	    			var entityId=data.rows[0].entityId;
		 	    			Ext.getCmp('node-config-id').setValue(entityId);
		 	    			com.faceye.SingleCicerone.msg(null,'保存成功~~');
		 	    			loadMask.hide();
		 	    			if(callback){
		 	    				callback();
		 	    			}
		 	    			com.easou.portal.portlet.NodeServerConfig.clearAndAdd(node.id,node.text);
		 	    		}
                    });
                    }
		
	},
	/**
	 * 保存监控对像对送异常用户组.
	 */
	doSaveNodeExceptionSendGroup:function(callback,node){
		var loadMask=new Ext.LoadMask(
		 	    		Ext.getCmp('server-monitor-config-win').getEl(),
		 	    		{
		 	    			msg:'正在保存数据,请稍候.',
		 	    			removeMask :true
		 	    		}
		 	    	);
		 	    	loadMask.show();
                    var groupIds=com.easou.portal.portlet.NodeServer.getAllSelectGroupIds();
                    var nodeId=Ext.getCmp('node-config-id').getValue();
                    Ext.Ajax.request({
                    	method:'POST',
                    	url:BP+'nodeServerAction.do',
                    	params:{
                    		method:'saveNodeServerExceptionSendGroup',
                    		groupIds:groupIds,
                    		nodeId:nodeId
                    	},
                    	success:function(response,options){
                    		com.faceye.SingleCicerone.msg(null,'保存成功~~');
		 	    			loadMask.hide();
		 	    			if(callback){
		 	    				callback();
		 	    			}
		 	    			com.easou.portal.portlet.NodeServerConfig.clearAndAdd(node.id,node.text);
                    	}
                    });
	},
	/**
	 * 新版添加服务器监控
	 */
	 serverMonitorConfig:function(id,hardWareId){
	 	  if(''===id ||null===id){
	 	  	if(Ext.getCmp('node-config-id')){
	 	  		id=Ext.getCmp('node-config-id').getValue();
	 	  	}
	 	  }
	 	  if(Ext.getCmp('server-monitor-config-win')){
	 	  	Ext.getCmp('server-monitor-config-win').destroy();
	 	  }
	 	  var nav = new Ext.Panel({
            title: '监控配置导航',
            region: 'west',
            split: true,
            width: 150,
            collapsible: true,
            margins:'3 0 3 3',
            cmargins:'3 3 3 3'
          });
          var panel=new Ext.Panel({
		 			id:'server-monitor-base-info-config-tab',
		 			layout:'form',
		 			title:'服务器基础信息配置'
		 		});
		 var form=com.easou.portal.portlet.NodeServer.serverMonitorBasicInfoConfig(id,hardWareId);
		 panel.add(form);
////		 		panel.doLayout();
//		 		tabs.add(panel);
//		 		tabs.activate(panel);
//		 		panel.doLayout();
          var tabs = new Ext.TabPanel({
          	id:'server-monitor-config-tabs',
            region: 'center',
            margins:'3 3 3 0', 
            activeTab: 0,
            resizeTabs:true,
            collapseFirst:true,
            border:true,
            animScroll:true,
            minTabWidth:120,
            plain:true,
            enableTabScroll:true,
            animCollapse:true,
            defaults:{autoScroll:true},
            items:[panel]
        });
        /**
         * 定义导航树
         */
        if(!Ext.get('server-monitor-confing-nav-tree-el')){
        	Ext.getBody().createChild({
        		tag:'div',
        		id:'server-monitor-confing-nav-tree-el'
        	});
        }
       
        var root = new Ext.tree.AsyncTreeNode({
          text: '服务器监控配置',
          draggable:false,
          id:'source'
         });
          var tree =new Ext.tree.TreePanel({
        	id:'server-monitor-confing-nav-tree',
        	el:'server-monitor-confing-nav-tree-el',
        	header : false,
        	autoHeight:true,
        	border:false,
			rootVisible : false,
			loader : new Ext.tree.TreeLoader({
					dataUrl : BP
							+ 'nodeServerAction.do?method=serverMonitorConfigTree'
				})
        });
         tree.setRootNode(root);
         tree.render();
		 root.expand();
		 tree.on('click',function(node){
		 	if(''===id || null===id){
		 		if(Ext.getCmp('node-config-id')){
		 			id=Ext.getCmp('node-config-id').getValue();
		 		}
		 	}
		 
		 	var tabs=Ext.getCmp('server-monitor-config-tabs');
		 	var panel_id=node.id+"-tab";
		 	var items=tabs.findByType('panel');
		 	var panel=new Ext.Panel({
		 			id:panel_id,
		 			layout:'form',
		 			title:node.text
		 		});
		 	var isRemove=true;
		 	  for(i=0;i<items.length;i++){
		 	  	var item=items[i];
		 	  	var itemId=item.getId();
		 	    if(node.id+'-tab'!='server-monitor-base-info-config-tab' && itemId==='server-monitor-base-info-config-tab'){
		 	    	isRemove=false;
//		 	    	var loadMask=new Ext.LoadMask(
//		 	    		Ext.getCmp('server-monitor-config-win').getEl(),
//		 	    		{
//		 	    			msg:'正在保存数据,请稍候.',
//		 	    			removeMask :true
//		 	    		}
//		 	    	);
//		 	    	loadMask.show();
//		 	    	var nodeId=Ext.getCmp('node-config-id').getValue();
//		 	    	var serverBoxId=Ext.getCmp('serverBox_id').getValue();
//		 	    	var nodeName=Ext.getCmp('node_name').getValue();
//		 	    	var serverIpAddress=Ext.getCmp('server_ip_address').getValue();
//		 	    	var serverName=Ext.getCmp('server_name').getValue();
//		 	    	var cpu= Ext.getCmp('server_cpu').getValue();
//                    var memory= Ext.getCmp('total_ram_memory').getValue();
//                    var os= Ext.getCmp('system_os').getValue();
//                    var exceptionSendRuleId = Ext.getCmp('exception-send-rule-select').getValue();
//                    var octetString =Ext.getCmp('octet_string').getValue();
//                    var msg='';
//                    if(''===serverBoxId||null===serverBoxId){
//                    	msg+='请选择所属机柜.';
//                    }
//                    if(''===serverIpAddress || null===serverIpAddress){
//                    	msg+='请填写服务器IP地址.';
//                    }
//                    if(''===nodeName||null===nodeName){
//                    	msg+='请填写监控对像名称.';
//                    }
//                    if(''===exceptionSendRuleId||null===exceptionSendRuleId){
//                    	msg+='请选择异常发送规则';
//                    }
//                    if(''!=msg){
//                    	loadMask.hide();
//                    	com.faceye.SingleCicerone.msg(null,msg);
//                    	return;
//                    }
//                    Ext.Ajax.request({
//		 	    		method:'POST',
//		 	    		url:BP+'nodeServerAction.do',
//		 	    		params:{
//		 	    			method:'saveServerMonitorBaseConfigInfo',
//		 	    			nodeId:nodeId,
//		 	    			serverBoxId:serverBoxId,
//		 	    			nodeName:nodeName,
//		 	    			serverIpAddress:serverIpAddress,
//		 	    			serverName:serverName,
//		 	    			cpu:cpu,
//		 	    			memory:memory,
//		 	    			os:os,
//		 	    			exceptionSendRuleId:exceptionSendRuleId,
//		 	    			octetString:octetString
//		 	    		},
//		 	    		success : function(response,options) {
//		 	    			var data=Ext.util.JSON.decode(response.responseText);
////		 	    			alert(data.rows[0].entityId);
//		 	    			var entityId=data.rows[0].entityId;
//		 	    			Ext.getCmp('node-config-id').setValue(entityId);
//		 	    			com.faceye.SingleCicerone.msg(null,'保存成功~~');
//		 	    			loadMask.hide();
//		 	    			com.easou.portal.portlet.NodeServerConfig.clearAndAdd(node.id,node.text);
//		 	    		}
//                    });
                      com.easou.portal.portlet.NodeServer.doSaveServerBasicInfo(null,node);
		 	    }else if(itemId==='server-monitor-exception-send-user-tab'){
                    com.easou.portal.portlet.NodeServer.doSaveNodeExceptionSendGroup(null,node);
		 	    }else{
		 	    	com.easou.portal.portlet.NodeServerConfig.clearAndAdd(node.id,node.text);
		 	    }
		 	   }
		 });
        nav.add(tree);
	 	var win=new Ext.Window({
	 		id:'server-monitor-config-win',
	 	    title:'服务器监控配置',
	 	    layout : 'border',
			// 模式窗口
			modal : true,
			closeAction:'close',
			closable:true,
			maximizable : true,
			maximizable : true,
			width : 800,
			height:550,
			shadow : false,
			plain : true,
			items:[nav,tabs],
			buttonAlign:'center',
			buttons:[{
				id:'server-monitor-config-submit',
				text:'确定',
				handler:function(btn){
					//如果是在服务器基础信息页面点击保存按钮
					var node=null;
					if(Ext.getCmp('server-base-info-form')){
						node=tree.getNodeById('server-monitor-base-info-config');
						com.easou.portal.portlet.NodeServer.doSaveServerBasicInfo(com.easou.portal.portlet.NodeServer.doSaveContainerCallback,node);
					}else if(Ext.getCmp('group-grid')){
						node=tree.getNodeById('server-monitor-exception-send-user');
						com.easou.portal.portlet.NodeServer.doSaveNodeExceptionSendGroup(com.easou.portal.portlet.NodeServer.doSaveContainerCallback,node);
					}else{
						Ext.getCmp('server-monitor-config-win').destroy();
					}
				
				}
			}]
	 	});
	 	var nodeId=new Ext.form.TextField({
	 		    id:'node-config-id',
				fieldLabel:'监控对像ID',
				name : 'nodeId',
				hideLabel : true,
				hidden : true
			});
		if(id){
			nodeId.setValue(id);
		}
		win.add(nodeId);
	 	win.show();
	 },
	 /**
	  * 关闭模式对话框的回调函数.
	  */
	 doSaveContainerCallback:function(){
	 		Ext.getCmp('server-monitor-config-win').destroy();
	 },
	 /**
	  * 服务器监控基础信息配置.
	  */
	 serverMonitorBasicInfoConfig:function(id,hardWareId){
	 	var hardWareIdText=new Ext.form.TextField({
											id : 'hard_ware_id',
											name : 'hardWareId',
											hideLabel : true,
											hidden : true
										});
		if(hardWareId&&hardWareId!==null&&hardWareId!==''){
			hardWareIdText.setValue(hardWareId);
		}
	 	var parentIdText = new Ext.form.TextField({
				fieldLabel : 'ID',
				id : 'serverBox_id',
				inputType : 'trigger',
				readOnly : true,
				name : 'serverBoxId',
				// width : 215,
				hidden : true,
				hideLabel : true
			});
			var parentNameText = new Ext.form.TextField({
				fieldLabel : '机柜<font color="red">*</font>',
				id : 'serverRoom_name',
				allowBlank : false,
				width : 160,
				msgTarget : 'under',
				blankText : '不能为空',
				inputType : 'trigger',
				name : 'serverBoxName',
				readOnly : true,
				// width : 215,
				listeners : {
					render : function(ct) {
						var parentEl = this.getEl().up('div.x-form-element');
						if (parentEl) {
							var child = parentEl.createChild({
								tag : 'button',
								html : '机柜'
							});
							child.on('click', function() {
								var winT, selectTree;
								if (!winT && !selectTree) {
									winT = new Ext.Window({
										layout : 'fit',
										modal : true,
										closable : false,
										title : '选择机柜',
										width : 200,
										height : 300,
										plain : true,
										buttons : [{
													text : '确定',
													handler : function() {
														winT.hide(this);
													}
												}, {
													text : '关闭',
													handler : function() {
														winT.hide(this);
													}
												}]
									});
									// 生成树形结构
									Ext.BLANK_IMAGE_URL = 'scripts/ext/resources/images/vista/s.gif';
									if (Ext
											.getCmp('server-box-select-tree-panel')) {
										Ext
												.getCmp('server-box-select-tree-panel')
												.destroy();
									}
									if (!Ext.get('server-box-select-tree')) {
										Ext.getBody().createChild({
											tag : 'div',
											id : 'server-box-select-tree'
										});
									}
									var Tree = Ext.tree;
									if (!Ext
											.getCmp('server-box-select-tree-panel')) {
										selectTree = new Tree.TreePanel({
											id : 'server-box-select-tree-panel',
											el : 'server-box-select-tree',
											// renderTo:winT,
											autoScroll : true,
											animate : true,
											enableDD : false,
											containerScroll : true,
											rootVisible : false,
											loader : new Tree.TreeLoader({
												dataUrl : BP
														+ 'serverManagerAction.do?method=serverManagerTree'
											})
										});
										var root = new Tree.AsyncTreeNode({
											text : '根分类',
											draggable : false,
											id : 'source'
										});
										selectTree.setRootNode(root);
										selectTree.on('click', function(node) {
													/**
													 * 当点击节点的时候，将当前点击节点的值设为正在添加新节点的父节点
													 */
													if (node.isLeaf()&& node.getDepth()==2) {
														parentIdText
																.setValue(node.id);
														parentNameText
																.setValue(node.text);
														return true;
													} else {
														node.toggle();
													}
												});
										// render the tree
										selectTree.render();
										root.expand();
									} else {
										selectTree = Ext
												.getCmp('server-box-select-tree-panel');
									}
								}
								winT.add(selectTree);
								winT.show(this);
							});
						}

					}
				}
			});
			var nodeName = new Ext.form.TextField({
				fieldLabel : '服务器名称<font color="red">*</font>',
				name : 'nodeName',
				id:'node_name',
				tabIndex : 0,
				// width : 200,
				maxLength : 50,
				msgTarget : 'under',
				width : 160,
				allowBlank : false,
				blankText : '名称不能为空',
				maxLengthText : '名称长度不能超过50个有效字符!',
				allowBlank : false,
				validateOnBlur : true
			});
			var octetString=new Ext.form.TextField({
				fieldLabel:'共同体名(注:默认public)',
				name:'octetString',
				id:'octet_string',
				maxLength:100,
				maxLengthText : '名称长度不能超过100个有效字符!',
				validateOnBlur : true
			});
			/**
			 * 是否报警radio
			 */
//			var radioGroup=new Ext.form.RadioGroup({
//				id:'is-node-server-notify-radio-group',
//				fieldLabel:'是否报警',
//				column:2,
//				items:[{
//					fieldLabel:'',
//					labelSeparator:'',
//					id:'is-node-server-notify-radio-group-radio-0',
//					checked:true,
//					boxLabel:'是',
//					name:'isNodeNotify',
//					inputValue:'notify'
//				},{
//					fieldLabel:'',
//					labelSeparator:'',
//					boxLabel:'否',
//					name:'isNodeNotify',
//					inputValue:'unnotify'
//				}]
//			});
//			var isNodeNotify=new Ext.form.FieldSet({
//				id:Ext.id(),
//				title:'是否报警',
//				autoHeight:true,
//				defaultType:'radio',
//				items:[{
//					fieldLabel:'',
//					labelSeparator:'',
//					checked:true,
//					boxLabel:'是',
//					name:'isNodeNotify',
//					inputValue:'notify'
//				},{
//					fieldLabel:'',
//					labelSeparator:'',
//					boxLabel:'否',
//					name:'isNodeNotify',
//					inputValue:'unnotify'
//				}]
//			});
			
				var isNodeNotifyStoreData=[
  	   	['1','报警'],
  	   	['0','不报警']
  	   	];
  	   	var isNodeNotifyStore=new Ext.data.SimpleStore({
        fields: ['type_id', 'type_name'],
        data : isNodeNotifyStoreData
        });
        var isNodeNotifySelect = new Ext.form.ComboBox({
          id:'is-node-notify',
          store: isNodeNotifyStore,
          labelStyle:'width:75px;',
          displayField:'type_name',
          hiddenName:'isNodeNotify',
//          style:'text-align:left;margin-left:2px;float:left;',
          valueField:'type_id',
          typeAhead: true,
          value:'1',
          mode: 'local',
          fieldLabel:'是否报警<font color="red">*</font>',
          allowBlank:false,
          editable : false,
          title:'是否报警',
          name:'isNodeNotify',
          msgTarget:'under',
          blankText:'选择是否报警',
          triggerAction: 'all',
          tabIndex:1,
          emptyText:'选择是否报警...',
          selectOnFocus:true
//          applyTo: 'local-states'
        });
        
        
        var isNodeMainIpData=[
  	   	[true,'主IP'],
  	   	[false,'辅助IP']
  	   	];
  	   	var isNodeMainIpStore=new Ext.data.SimpleStore({
        fields: ['type_id', 'type_name'],
        data : isNodeMainIpData
        });
        var isNodeMainIpSelect = new Ext.form.ComboBox({
          id:'is-main-ip',
          store: isNodeMainIpStore,
          labelStyle:'width:75px;',
          displayField:'type_name',
          hiddenName:'isMainIp',
//          style:'text-align:left;margin-left:2px;float:left;',
          valueField:'type_id',
          typeAhead: true,
          //value:false,
          mode: 'local',
          fieldLabel:'是否主IP<font color="red">*</font>',
          allowBlank:false,
          editable : false,
          title:'是否主IP',
          name:'isMainIp',
          msgTarget:'under',
          blankText:'是否主IP',
          triggerAction: 'all',
          tabIndex:1,
          emptyText:'非主IP不监控',
          selectOnFocus:true
//          applyTo: 'local-states'
        });
        
        
        //是否內網監控對像
        
        var isNodeInnerData=[
  	   	[true,'內網監控對像'],
  	   	[false,'外網監控對像']
  	   	];
  	   	var isNodeInnerStore=new Ext.data.SimpleStore({
        fields: ['inner_id', 'inner_name'],
        data : isNodeInnerData
        });
        var isNodeInner = new Ext.form.ComboBox({
          id:'is-inner-node',
          store: isNodeInnerStore,
          labelStyle:'width:75px;',
          displayField:'inner_name',
          hiddenName:'isInner',
//          style:'text-align:left;margin-left:2px;float:left;',
          valueField:'inner_id',
          typeAhead: true,
          //value:false,
          mode: 'local',
          fieldLabel:'是否內網監控對像<font color="red">*</font>',
          allowBlank:false,
          editable : false,
          title:'是否內網監控對像',
          name:'isInner',
          msgTarget:'under',
          blankText:'是否內網監控對像',
          triggerAction: 'all',
          tabIndex:1,
          emptyText:'是否內網監控對像',
          selectOnFocus:true
//          applyTo: 'local-states'
        });
        
			
			var serverIpAddress = new Ext.form.TextField({
				id : 'server_ip_address',
				name : 'serverIpAddress',
				fieldLabel : '服务器IP<font color="red">*</font>',
				allowBlank : false,
				blankText : '服务器IP不能为空',
				msgTarget : 'under',
				width : 160,
				tabIndex : 2,
				listeners : {
					blur : function(e) {
						if (!Ext.getCmp('node_server_id').getValue()) {
							var serverIpAddress = this.getValue();
							var serverNameValue=Ext.getCmp('node_name').getValue();
							if(!serverNameValue||serverNameValue===''||serverNameValue===null){
								Ext.getCmp('node_name').setValue(serverIpAddress);
							}
							// com.easou.portal.portlet.NodeServer.createDiskFieldSet(serverIpAddress,null);
//							com.easou.portal.portlet.NodeServer
//									.getServerBaseInfo(serverIpAddress);
						}
					},
					render : function(ct) {
						var parentEl = this.getEl().up('div.x-form-element');
						if (parentEl) {
							var child = parentEl.createChild({
								id : 'server-info-button',
								tag : 'button',
								html : '抓.'
							});
							child.on('click', function(e) {
								Ext.getCmp('server_name').setValue(null);
								Ext.getCmp('total_ram_memory').setValue(null);
								Ext.getCmp('system_os').setValue(null);
								var octetString=Ext.getCmp('octet_string').getValue();
								var serverIpAddress = Ext
										.getCmp('server_ip_address').getValue();
								com.easou.portal.portlet.NodeServerConfig.getNodeServerBaseInfoBySnmp(serverIpAddress,octetString);
									// com.easou.portal.portlet.NodeServer.createDiskFieldSet(serverIpAddress,null);
							});
						}
					}
				}
			});
			var serverBaseInfoFieldSet = new Ext.form.FieldSet({
				xtype : 'fieldset',
				title : '折叠(<font color="red">注</font>:以下信息由系统后续自到抓取,不需要人工填写)',
				collapsible : true,
				// autoScroll :true,
				autoHeight : true,
				width : 300,
				hideBorders : true,
				margins : '0 5 0 0',
				padding : '0 5 0 0',
				bodyStyle : 'width:95%;',
				// defaults: {width: 200},
				defaultType : 'textfield',
				items : [{
							id : 'server_name',
							name : 'serverName',
							width : 300,
							fieldLabel : '服务器名字',
							readOnly:true
						}, {
							id:'server_cpu',
							name : 'cpu',
							width : 300,
							fieldLabel : 'CPU',
							readOnly:true
						}, {
							id : 'total_ram_memory',
							name : 'memory',
							width : 300,
							fieldLabel : '内存(G)',
							readOnly:true
						}, {
							xtype : 'textarea',
							name : 'os',
							id : 'system_os',
							maxLength : 4000,
							msgTarget : 'under',
							maxLengthText : '操作系统描述长度不能超过4000个有效字符.',
							width : 350,
							height:100,
							fieldLabel : '操作系统',
							readOnly:true
						}]
			});
			var exceptionSendRuleStore = new Ext.data.Store({
				autoLoad : true,
				proxy : new Ext.data.HttpProxy({
					url : BP + 'exceptionSendRuleAction.do?method=index'
				}),
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'id',
					fields : ['id', 'name', 'sendType', 'messageSendFreq',
							'mailSendFreq', 'messageSendCount',
							'mailSendCount', 'messageStopTime', 'mailStopTime']
				}),
				listeners:{
					load:function(){
						exceptionSendSelect.setValue(exceptionSendSelect.getValue());
					}
				}
			});
			
			var exceptionSendSelect = new Ext.form.ComboBox({
				id : 'exception-send-rule-select',
				store : exceptionSendRuleStore,
				displayField : 'name',
				valueField : 'id',
				hiddenName : 'exceptionSendRuleId',
				typeAhead : true,
				width : 160,
				mode : 'local',
				fieldLabel : '通知规则<font color="red">*</font>',
				allowBlank : false,
				name : 'exceptionSendRuleId',
				msgTarget : 'under',
				blankText : '通知规则没有选择',
				triggerAction : 'all',
				emptyText : '选择通知规则...',
				selectOnFocus : true,
				listeners : {
					select : function(combo, record, index) {
						var tabpanel = Ext.getCmp('server-base-info-tabpanel');
						tabpanel.activate('exception-send-rule-panel');
						com.easou.portal.portlet.NodeServer
								.createExceptionSendRuleDetail(record.data.id);
					}
				}
			});
			exceptionSendRuleStore.load();
			 var form =new Ext.form.FormPanel({
			 	id : 'server-base-info-form',
				labelWidth : 75, // label settings here cascade unless
				// overridden
//				url : BP + 'nodeServerAction.do?method=save',
				frame : true,
				// title: 'Simple Form',
				bodyStyle : 'padding:5px 5px 0',
				width : 600,
				height:430,
//				title:'服务器信息配置',
				// height : 780,
				margins : '5 5 5 5',
				monitorValid : true,
//				autoHeight : true,
				maskDisabled : true,
				labelAlign : 'left',
				reader : new Ext.data.JsonReader({
					root : 'rows',
					// totalProperty: 'total',
					success : true,
					fields : ['id', 'name', 'serverIpAddress', 'serverName','octetString',
							'cpu', 'memory', 'os', 'nodeId', 'nodeName',
							'nodeCategory', 'exceptionSendRuleId',
							'exceptionSendRuleName', 'serverBoxId',
							'serverBoxName','isNodeNotify','hardWareId','hardWareName',"isMainIp",'isInner']
				}),
				items : [{
							layout : 'column',
							border : false,
							items : [{
										columnWidth : .5,
										layout : 'form',
										border : false,
										items : [nodeName,isNodeNotifySelect,exceptionSendSelect,isNodeMainIpSelect,isNodeInner]
									}, {
										columnWidth : .5,
										layout : 'form',
										border : false,
										items : [serverIpAddress,
												parentNameText,hardWareIdText,octetString]
									}]
						}, {
							xtype : 'tabpanel',
							id : 'server-base-info-tabpanel',
							plain : true,
							activeTab : 0,
							height : 335,
							defaults : {
								bodyStyle : 'padding:10px'
							},
							items : [{
										title : '服务器基础信息',
										id : 'server-base-info-tabpanel-form',
										layout : 'form',
										defaults : {
											width : 500
										},
										defaultType : 'textfield',
										items : [serverBaseInfoFieldSet, {
											id : 'node_server_id',
											name : 'id',
											hideLabel : true,
											hidden : true
										}, parentIdText]
									}, {
										title : '磁盘信息',
										id : 'server-disk-info',
										layout : 'form',
										autoScroll : true,
										defaults : {
											width : 500
										},
										defaultType : 'textfield',
										tbar : [{
											id : 'server-disk-info-reload-btn',
											disabled : true,
											text : '重新获取服务器磁盘信息',
											tooltip : '使用SNMP协议重新从服务器抓取(将清空当前数据库中已存储的本服务器磁盘信息.)',
											handler : function(e) {
												var serverIpAddress = Ext
														.getCmp('server_ip_address')
														.getValue();
												var formTab = Ext
														.getCmp('server-disk-info');
												var nodeServerId = Ext
														.getCmp('node_server_id')
														.getValue();
												var oldFieldSet = formTab
														.findByType('fieldset');
												if (oldFieldSet.length > 0) {
													for (var i = 0; i < oldFieldSet.length; i++) {
														oldFieldSet[i]
																.destroy();
													}
												}
//												com.easou.portal.portlet.NodeServer
//														.removeServerDiskInfoFromDB(
//																nodeServerId,
//																com.easou.portal.portlet.NodeServer
//																		.createDiskFieldSet(
//																				serverIpAddress,
//																				null));
											}
										}],
										listeners : {
											activate : function(tab) {
												var formTab = Ext
														.getCmp('server-disk-info');
												var oldFieldSet = formTab
														.findByType('fieldset');
												var nodeServerId = Ext
														.getCmp('node_server_id')
														.getValue();
												var serverIpAddress = Ext
														.getCmp('server_ip_address')
														.getValue();
												if (nodeServerId) {
													Ext
															.getCmp('server-disk-info-reload-btn')
															.enable();
												}
												if (oldFieldSet.length === 0) {
													if (nodeServerId) {
//														com.easou.portal.portlet.NodeServer
//																.createDiskFieldSet(
//																		null,
//																		nodeServerId);
													} else if (serverIpAddress) {
//														com.easou.portal.portlet.NodeServer
//																.createDiskFieldSet(
//																		serverIpAddress,
//																		null);
													}
												}
											}
										}
									}, {
										title : '异常发送规则',
										id : 'exception-send-rule-panel',
										layout : 'fit',
										autoScroll : true,
										defaults : {
											width : 500
										},
										listeners : {
											activate : function(tab) {
												if (Ext
														.getCmp('exception-send-rule-select')
														.getValue()) {
													com.easou.portal.portlet.NodeServer
															.createExceptionSendRuleDetail(null);
												}
											}
										}
									}]
						}]
			 });
			 form.doLayout();
			 if (id&&''!=id && null!=id) {
				form.getForm().load({
					url : BP + 'nodeServerAction.do',
					params : {
						method : 'update',
						entityClass : 'com.easou.components.monitor.dao.model.Node',
						id : id
					},
					waitMsg : '正在加载数据，请稍后...'
				});

			}
			 return form;
	 }
};

/**
 * 新版服务器监控配置.
 */
com.easou.portal.portlet.NodeServerConfig={
	clearAndAdd:function(treeNodeId,nodeText){
		com.easou.portal.portlet.NodeServerConfig.clearTabs();
		var tabs=Ext.getCmp('server-monitor-config-tabs');
		if(!tabs){
			return;
		}
		var panel_id=treeNodeId+"-tab";
		var id=null;
		if(Ext.getCmp('node-config-id')){
			id=Ext.getCmp('node-config-id').getValue();
		}
		 	var items=tabs.findByType('panel');
		 	var panel=new Ext.Panel({
		 			id:panel_id,
		 			layout:'form',
		 			title:nodeText
		 		});
		var c=null;
		 	if(treeNodeId==='server-monitor-base-info-config'){
		 	   c=com.easou.portal.portlet.NodeServer.serverMonitorBasicInfoConfig(id,null);
		 	}else if(treeNodeId==='server-monitor-cup-monitor'){
		 		c=com.easou.portal.portlet.NodeServerConfig.cpuMonitorConfig(id,'monitorItemConfigAction.do?method=cpu');
//		 		c.getStore().reload();
		 	}else if(treeNodeId==='server-monitor-memory-monitor'){
		 		c=com.easou.portal.portlet.NodeServerConfig.cpuMonitorConfig(id,'monitorItemConfigAction.do?method=memory');
//		 		c.getStore().reload();
		 	}else if(treeNodeId==='server-monitor-disk-monitor'){
		 		
		 		c=com.easou.portal.portlet.NodeServerConfig.diskMonitorConfig(id,'monitorItemConfigAction.do?method=newDisk',false);
//		 		c.getStore().reload();
		 	}else if(treeNodeId==='server-monitor-interface-monitor'){
		 		c=com.easou.portal.portlet.NodeServerConfig.networkCardMonitorConfig(id,'monitorItemConfigAction.do?method=networkcardConfigInfo',false);
//		 		c.getStore().reload();
		 	}else if(treeNodeId==='serer-monitor-port-connect'){
		 		c=com.easou.portal.portlet.NodeServerConfig.cpuMonitorConfig(id,'monitorItemConfigAction.do?method=connect');
//		 		c.getStore().reload();
		 	}else if(treeNodeId==='server-monitor-ping-monitor'){
		 		c=com.easou.portal.portlet.NodeServerConfig.cpuMonitorConfig(id,'monitorItemConfigAction.do?method=ping');
//		 		c.getStore().reload();
		 	}else if(treeNodeId==='server-monitor-exception-send-user'){
		 		c=com.easou.portal.portlet.NodeServerConfig.exceptionSendUserGroup(id);
		 	}else if(treeNodeId==='server-monitor-port'){
		 		c=com.easou.portal.portlet.NodeServerConfig.serverPortMonitor(id);
		 	}else if(treeNodeId==='server-monitor-process'){
		 		c=com.easou.portal.portlet.NodeServerConfig.serverProcessMonitor(id);
		 	}
		 	if(c){
		 	 panel.add(c);
		 	 tabs.add(panel);
		 	 tabs.activate(panel);
		 	 panel.doLayout();
		 	 tabs.doLayout();
		 	}
	},
	clearTabs:function(){
		var tabs=Ext.getCmp('server-monitor-config-tabs');
		if(tabs){
		var items=tabs.findByType('panel');
		for(i=0;i<items.length;i++){
			tabs.remove(items[i]);
		}
		}
	},
	getNodeServerBaseInfoBySnmp:function(serverIpAddress,octetString){
		if(''===serverIpAddress || null===serverIpAddress){
			com.faceye.SingleCicerone.msg(null,'IP地址为空,不能抓取服务器基础信息~~');
			return;
		}
		var store = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
				url : BP
						+ 'nodeServerAction.do?method=getServerName&serverIpAddress='
						+ serverIpAddress+'&octetString='+octetString
			}),
			reader : new Ext.data.JsonReader({
				root : 'rows',
				success : true,
				fields : ['serverName', 'totalRamMemory', 'systemOs']
			})
		});
		var loadMask = new Ext.LoadMask(Ext.getCmp('server-monitor-config-win')
						.getEl(), {
					msg : '正在加载服务器数据,请稍候...',
					removeMask : true,
					store : store
				});
		loadMask.show();
		store.load({
			callback : function(r, options, success) {
				Ext.getCmp('server_name').setValue(r[0].data.serverName);
				Ext.getCmp('total_ram_memory').setValue(r[0].data.totalRamMemory);
				Ext.getCmp('system_os').setValue(r[0].data.systemOs);
				Ext.getCmp('server-monitor-config-tabs')
						.activate('server-monitor-base-info-config-tab');
			}
		});
	},
	/**
	 * CPU监控配置
	 * id:node.id
	 */
	cpuMonitorConfig:function(id,url){
		
		var unit="";
		if(url==='monitorItemConfigAction.do?method=memory'){
			unit='%';
		}
//		if(id && null!=id && ''!=id){
//            Ext.QuickTips.init();
			var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url:BP+url
//					url : BP + 'monitorItemConfigAction.do?method=cpu'
				}),
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'monitorItemConfigId',
					fields : ['monitorItemId','name','alarmValue',
							'notifyValue','notify','alarm','monitorId',
							'monitorItemConfigId','frequency','monitor']
				})
			});
			
			var checkColumn=new Ext.grid.CheckColumn({
				header:'是否预警',
				dataIndex:'alarm',
				width:80
			});

			var notifyCheckColumn=new Ext.grid.CheckColumn({
				header:'是否报警',
				dataIndex:'notify',
				width:80
			});
			var monitorCheckColumn=new Ext.grid.CheckColumn({
				header:'是否监控',
				dataIndex:'monitor',
				width:80
			});
			var cm=new Ext.grid.ColumnModel([
			 {
			 	header:'监控条目',
			 	dataIndex:'name',
			 	width:150
			 },{
			 	header:'预警值'+unit,
			 	dataIndex:'alarmValue',
			 	width:60,
			 	editor:new Ext.form.NumberField({
			 		allowBlank:false,
			 		allowNegative:false
			 	})
			 },{
			 	header:'报警值'+unit,
			 	dataIndex:'notifyValue',
			 	width:60,
			 	editor:new Ext.form.NumberField({
			 		allowBlank:false,
			 		allowNegative:false
			 	})
			 },
			 checkColumn,
			 notifyCheckColumn,
			 monitorCheckColumn,
			 {
			 	dataIndex:'monitorItemId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	hidden:true
			 }
		]);

		   var grid_id=Ext.id();
			var g=new Ext.grid.EditorGridPanel({
				id:grid_id,
				store:store,
				cm:cm,
				loadMask:{
					msg:'正在加载数据,请稍候...',
					id:grid_id,
					store:store
				},
				autoWidth:true,
				autoScroll:true,
				plugins:[checkColumn,notifyCheckColumn,monitorCheckColumn],
				autoHeight:true,
				clicksToEdit:1,
				frame:true,
				listeners:{
					afteredit:function(e){
						var record=e.record;
						var monitorItemId=record.get('monitorItemId');
						var monitorItemConfigId=record.get('monitorItemConfigId');
						//报警值
						var notifyValue=record.get('notifyValue');
						//报警值
						var alarmValue = record.get('alarmValue');
						//是否报警:
						var notify =record.get('notify');
						//是否预警:
						var alarm = record.get('alarm');
						var frequency=record.get('frequency');
						var monitor=record.get('monitor');
						//监控对像ID
						var nodeId=Ext.getCmp('node-config-id').getValue();
//						alert('monitorItemID:'+monitorItemId+"*"+"monitorItemConfigId:"+monitorItemConfigId+"*notify:"+notify+"&*notifyValue:"+notifyValue+"*alarmValue:"+alarmValue+"*alarm:"+alarm+"*nodeId:"+nodeId);
                        Ext.Ajax.request({
                        	method:'POST',
                        	url:BP+'monitorItemConfigAction.do',
                        	params:{
                        		method:'newVersionSaveNodeServerMonitorItem',
                        		nodeId:nodeId,
                        		monitorItemId:monitorItemId,
                        		monitorItemConfigId:monitorItemConfigId,
                        		notifyValue:notifyValue,
                        		alarmValue:alarmValue,
                        		notify:notify,
                        		alarm:alarm,
                        		frequency:frequency,
                        		monitor:monitor
                        	},
                        	success:function(response,options){
                        		Ext.getCmp(grid_id).getStore().load({params : {
					                   nodeId : id
				                     }});
                        	}
                        });
					}
				}
			});
			store.load({params : {
					nodeId : id
				}});
			g.doLayout();
			return g;
//		}
	},
	/**
	 * 磁盤監控.
	 */
	diskMonitorConfig:function(id,url,isReload){
		 var _url =url;
		if(isReload){
//			_url='';
		}else{
			
		}
		 Ext.QuickTips.init();
		 var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url:BP+url
				}),
				baseParams:{
					nodeId:id,
					isReload:isReload
				},
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'id',
					fields : ['monitorItemId','monitorItemName','t_name','alarmValue',
							'notifyValue','notify','alarm','monitorId','paramValue',
							'monitorItemConfigId','frequency','monitor','total_monitorItemId','total_monitorItemName','total_t_name','total_alarmValue',
							'total_notifyValue','total_notify','total_alarm','total_monitorId','total_paramValue',
							'total_monitorItemConfigId','total_frequency','total_monitor','freeSpaceRate','usedSpaceRate','totalSpace','freeSpace','name','usedSpace']
				})
			});
			var checkColumn=new Ext.grid.CheckColumn({
				header:'预警?',
				dataIndex:'alarm',
				width:40
			});
			var notifyCheckColumn=new Ext.grid.CheckColumn({
				header:'报警?',
				dataIndex:'notify',
				width:40
			});
			var monitorCheckColumn=new Ext.grid.CheckColumn({
				header:'监控?',
				dataIndex:'monitor',
				width:40
			});
			var cm=new Ext.grid.ColumnModel([
			 {
			 	header:'监控条目',
			 	dataIndex:'monitorItemName',
			 	width:80
			 },{
			 	header:'磁盘',
			 	dataIndex:'name',
			 	width:50
			 },{
			 	header:'容量(使用/总)G',
			 	width:80,
			 	renderer:function(v,p,r){
			 		var totalSpace=r.get('totalSpace')/(1024*1024*1024);
			 		var usedSpace=r.get('usedSpace')/(1024*1024*1024);
			 		totalSpace=com.faceye.ui.util.Tools.numFormat(totalSpace,2);
			 		usedSpace=com.faceye.ui.util.Tools.numFormat(usedSpace,2);
			 		return usedSpace+'/'+totalSpace;
			 	}
			 },{
			 	header:'使用率%',
			 	width:50,
			 	dataIndex:'usedSpaceRate'
			 },{
			 	header:'预警值(使用率%)',
			 	dataIndex:'alarmValue',
			 	width:90,
			 	editor:new Ext.form.NumberField({
			 		allowBlank:false,
			 		allowNegative:false
			 	})
			 },{
			 	header:'报警值(使用率%)',
			 	dataIndex:'notifyValue',
			 	width:90,
			 	editor:new Ext.form.NumberField({
			 		allowBlank:false,
			 		allowNegative:false
			 	})
			 },
			 checkColumn,
			 notifyCheckColumn,
			 monitorCheckColumn,
			 {
			 	dataIndex:'monitorItemId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	header:'删除',
			 	renderer:function(v,p,r){
			 		var monitorItemConfigId=r.get('monitorItemConfigId');
			 		var html='<a href="#" onclick="com.easou.portal.portlet.NodeServerConfig.removeMonitorItemConfig(\''+monitorItemConfigId+'\');return false;">删除</a>';
			 		return html;
			 	}
			 }
		]);
//		   var grid_id=Ext.id();
           var grid_id='server-monitor-disk-grid';
			var g=new Ext.grid.EditorGridPanel({
				id:grid_id,
				store:store,
				cm:cm,
				autoWidth:true,
				autoScroll:true,
				loadMask:{
					msg:'正在加载数据,请稍候...',
					id:grid_id,
					store:store
				},
				plugins:[checkColumn,notifyCheckColumn,monitorCheckColumn],
				autoHeight:true,
				clicksToEdit:1,
				tbar:[{
					text:'重新加载磁盘...',
					iconCls:'refresh',
					tooltip:'使用SNMP协议重新加载服务器磁盘数据,如果加载不完全或是当前服务器实际磁盘 情况不一致,请重新加载.<font color="red">注:</font>内网监控IP无法重新加载!',
					handler:function(btn){
						Ext.getCmp(grid_id).getStore().on(
				       'beforeload', function() {
					   this.removeAll();
					   this.baseParams={};
					   Ext.apply(this.baseParams, {
					            nodeId : id,
								isReload : true
							});
				     });
				     
				     Ext.getCmp(grid_id).getStore().reload();
					}
				}],
				frame:true,
				listeners:{
					afteredit:function(e){
						var record=e.record;
						var monitorItemId=record.get('monitorItemId');
						var monitorItemConfigId=record.get('monitorItemConfigId');
						//报警值
						var notifyValue=record.get('notifyValue');
						//报警值
						var alarmValue = record.get('alarmValue');
						//是否报警:
						var notify =record.get('notify');
						//是否预警:
						var alarm = record.get('alarm');
						var frequency=record.get('frequency');
						var monitor=record.get('monitor');
						var paramValue=record.get('paramValue');
						//监控对像ID
						var nodeId=Ext.getCmp('node-config-id').getValue();
						
						var total_monitorItemId=record.get('total_monitorItemId');
						var total_monitorItemConfigId=record.get('total_monitorItemConfigId');
						var total_notifyValue= record.get('total_notifyValue');
						var total_alarmValue=record.get('total_alarmValue');
						var total_alarm=record.get('alarm');
						var total_notify=record.get('notify');
						var total_monitor=record.get('monitor');
						var total_paramValue=record.get('total_paramValue');
						var disk_desc_name=record.get('name');
//						alert('monitorItemID:'+monitorItemId+"*"+"monitorItemConfigId:"+monitorItemConfigId+"*notify:"+notify+"&*notifyValue:"+notifyValue+"*alarmValue:"+alarmValue+"*alarm:"+alarm+"*nodeId:"+nodeId);
                        Ext.Ajax.request({
                        	method:'POST',
                        	url:BP+'monitorItemConfigAction.do',
                        	params:{
                        		method:'newVersionSaveNodeServerMonitorItem',
                        		nodeId:nodeId,
                        		monitorItemId:monitorItemId,
                        		monitorItemConfigId:monitorItemConfigId,
                        		notifyValue:notifyValue,
                        		alarmValue:alarmValue,
                        		notify:notify,
                        		alarm:alarm,
                        		frequency:frequency,
                        		monitor:monitor,
                        		name:paramValue,
                        		desc:disk_desc_name
                        	},
                        	success:function(response,options){
                        		Ext.getCmp(grid_id).getStore().on(
				                 'beforeload', function() {
					              this.removeAll();
					              this.baseParams={};
					              Ext.apply(this.baseParams, {
					                nodeId : id,
								   isReload : isReload
							     });
				                });
                        		Ext.getCmp(grid_id).getStore().reload();
                        	}
                        });
                        
                        Ext.Ajax.request({
                        	method:'POST',
                        	url:BP+'monitorItemConfigAction.do',
                        	params:{
                        		method:'newVersionSaveNodeServerMonitorItem',
                        		nodeId:nodeId,
                        		monitorItemId:total_monitorItemId,
                        		monitorItemConfigId:total_monitorItemConfigId,
                        		notifyValue:total_notifyValue,
                        		alarmValue:total_alarmValue,
                        		notify:false,
                        		alarm:false,
                        		frequency:frequency,
                        		monitor:monitor,
                        		name:total_paramValue
                        	},
                        	success:function(response,options){
                        		Ext.getCmp(grid_id).getStore().on(
				                 'beforeload', function() {
					              this.removeAll();
					              this.baseParams={};
					              Ext.apply(this.baseParams, {
					               nodeId : id,
								   isReload : isReload
							     });
				     });
                        		Ext.getCmp(grid_id).getStore().reload();
                        	}
                        });
                        
					}
				}
			});
			g.getStore().load();
//				g.getStore().load({params : {
//					nodeId : id
//				}});
			g.doLayout();
			return g;
	},
	/**
	 * 網卡
	 */
	networkCardMonitorConfig:function(id,url,isReload){
		 Ext.QuickTips.init();
			var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url:BP+url
				}),
				baseParams:{
					nodeId:id,
					isReload:isReload
				},
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'name',
					fields : ['name','alarmValue','index','notify','alarm','monitor']
				})
			});
			var checkColumn=new Ext.grid.CheckColumn({
				header:'预警?',
				dataIndex:'alarm',
				width:100
			});
			var notifyCheckColumn=new Ext.grid.CheckColumn({
				header:'报警?',
				dataIndex:'notify',
				width:100
			});
			var monitorCheckColumn=new Ext.grid.CheckColumn({
				header:'监控?',
				dataIndex:'monitor',
				width:100
			});
			var cm=new Ext.grid.ColumnModel([
			{
			 	header:'网卡(序列)',
			 	dataIndex:'name',
			 	width:150,
			 	renderer:function(v,p,r){
			 		return r.get('name')+'('+r.get('index')+')';
			 	}
			 },
			 checkColumn,
			 notifyCheckColumn,
			 monitorCheckColumn
			 
		]);
		   var grid_id=Ext.id();
			var g=new Ext.grid.EditorGridPanel({
				id:grid_id,
				store:store,
				cm:cm,
//				sm:new Ext.grid.CheckboxSelectionModel({header:'监控'}),
				autoHeight:true,
				autoScroll:true,
				loadMask:{
					msg:'正在加载数据,请稍候...',
					id:grid_id,
					store:store
				},
				plugins:[checkColumn,notifyCheckColumn,monitorCheckColumn],
				tbar:[{
					text:'重新加载网卡数据',
					iconCls:'refresh',
					tooltip:'使用snmp协议重新抓取网卡数据,用于操作系统网卡配置有改变时的操作,<font color="red">注:</font>内网监控不可重新加载.',
					handler:function(btn){
						Ext.getCmp(grid_id).getStore().on(
				                 'beforeload', function() {
					              this.removeAll();
					              this.baseParams={};
					              Ext.apply(this.baseParams, {
					               nodeId : id,
								   isReload : true
							     });
				      });
                        		Ext.getCmp(grid_id).getStore().reload();
					}
				}],
				autoHeight:true,
				clicksToEdit:1,
				frame:true,
				listeners:{
					afteredit:function(e){
						var record=e.record;
						var notify =record.get('notify');

						var alarm = record.get('alarm');

						var monitor=record.get('monitor');
						var index=record.get('index');

						var nodeId=Ext.getCmp('node-config-id').getValue();
						Ext.Ajax.request({
							url:BP+'monitorItemConfigAction.do?method=saveNetWorkCardMontorItemConfig',
							method:'POST',
							params:{
								nodeId:nodeId,
								notify:notify,
								alarm:alarm,
								index:index,
								monitor:monitor
							},
							success:function(response,options){
                        		Ext.getCmp(grid_id).getStore().load({params : {
					                   nodeId : id
				                     }});
                        	}
						});
					}
				}
			});
			
			store.load({params : {
					nodeId : id
				}});
			g.doLayout();
			return g;
	},
	/**
	 * 发送用户组管理
	 */
	exceptionSendUserGroup : function(id) {
		var nodeId = id;
//		var configPanel = Ext.getCmp('exception-send-user-panel');
//		if (Ext.getCmp('node_id')) {
//			nodeId = Ext.getCmp('node_id').getValue();
//		}
//		if (!configPanel.findById('group-grid')) {
			var store = new Ext.data.Store( {
				proxy :new Ext.data.HttpProxy( {
					url :BP + 'groupAction.do?method=getGroupsForNodeConfig'
				}),
				baseParams : {
					nodeId :nodeId
				},
				reader :new Ext.data.JsonReader( {
					totalProperty :'total',
					root :'root',
					id :'id',
					fields : [ 'id', 'name', 'isChecked','users']
				})
			});
			
			var cm = new Ext.grid.ColumnModel( [
					new Ext.grid.CheckboxSelectionModel(), {
						header :"名称",
						dataIndex :'name'
					// renderer : renderTopic
					},{
						header:'用户组成',
						dataIndex:'users'
					} ]);
			var grid = new Ext.grid.GridPanel({
				id :'group-grid',
				header :false,
				region :'center',
				frame :true,
				loadMask:true,
				border :true,
				autoHeight :true,
				// autoScroll:true,
				// height:400,
				loadMask :new Ext.LoadMask(Ext.getBody(),{msg:'正在加载用户组,请稍候...',removeMask:true,store:store}),
				shadow :true,
				stripeRows :true,
				layoutConfig : {
					autoWidth :true,
					layout :'fit'
				},
				store :store,
				cm :cm,
				bodyStyle :'width:100%;height:100%;',
				trackMouseOver :false,
				sm :new Ext.grid.CheckboxSelectionModel(),
				loadMask :true,
				viewConfig : {
					forceFit :true,
					enableRowBody :true
				}
			});
			grid.getStore().load({
				callback:function(r,options,success){
				  var selectionModel=grid.getSelectionModel();
				   for(var i=0;i<r.length;i++){
					  var record=r[i];
					  var isChecked=record.get('isChecked');
					  if(isChecked){
						  selectionModel.selectRow(i,true);
					  }
				   }
			    }
			});
			return grid;
//			configPanel.add(grid);
//		}
//		configPanel.doLayout();
	},
	/**
	 * 服务器端口是否开启监控
	 */
	serverPortMonitor:function(id){
//		if(id && null!=id && ''!=id)''
//            Ext.QuickTips.init();
			var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url:BP+'monitorItemConfigAction.do?method=serverMonitorPort'
					//					url : BP + 'monitorItemConfigAction.do?method=cpu'
				}),
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'monitorItemConfigId',
					fields : ['monitorItemId','name','t_name','alarmValue',
							'notifyValue','notify','alarm','monitorId',
							'monitorItemConfigId','frequency','monitor']
				})
			});
			var checkColumn=new Ext.grid.CheckColumn({
				header:'是否预警',
				dataIndex:'alarm',
				width:80
			});

			var notifyCheckColumn=new Ext.grid.CheckColumn({
				header:'是否报警',
				dataIndex:'notify',
				width:80
			});
			var monitorCheckColumn=new Ext.grid.CheckColumn({
				header:'是否监控',
				dataIndex:'monitor',
				width:80
			});
			var cm=new Ext.grid.ColumnModel([
			 {
			 	header:'端口号',
			 	dataIndex:'t_name',
			 	width:150,
			 	editor:new Ext.form.NumberField({
			 		allowBlank:false
			 	})
			 },
//			 {
//			 	header:'预警值',
//			 	dataIndex:'alarmValue',
//			 	width:60,
//			 	editor:new Ext.form.NumberField({
//			 		allowBlank:false,
//			 		allowNegative:false
//			 	})
//			 }
//			 ,{
//			 	header:'报警值',
//			 	dataIndex:'notifyValue',
//			 	width:60,
//			 	editor:new Ext.form.NumberField({
//			 		allowBlank:false,
//			 		allowNegative:false
//			 	})
//			 },
			 checkColumn,
			 notifyCheckColumn,
			 monitorCheckColumn,
			 {
			 	dataIndex:'monitorItemId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	header:'删除',
			 	renderer:function(v,p,r){
			 		var monitorItemConfigId=r.get('monitorItemConfigId');
			 		var html='<a href="#" onclick="com.easou.portal.portlet.NodeServerConfig.removeMonitorItemConfig(\''+monitorItemConfigId+'\');return false;">删除</a>';
			 		return html;
			 	}
			 }
		]);
		   var grid_id='server-monitor-port-grid';
			var g=new Ext.grid.EditorGridPanel({
				id:grid_id,
				store:store,
				cm:cm,
				loadMask:{
					msg:'正在加载数据,请稍候...',
					id:grid_id,
					store:store
				},
				autoWidth:true,
				autoScroll:true,
				plugins:[checkColumn,notifyCheckColumn,monitorCheckColumn],
				autoHeight:true,
				tbar:[{
					text:'添加监控端口',
					handler:function(btn){
						var store=g.getStore();
//						var firstRecord=store.get(0);
//						var monitorItemId=firstRecord.get('monitorItemId');
                        //monitor port item id.
                        var monitorItemId='bb1786392ce2e7e2012ce2ec61dd1d79';
                        //monitor port id
                        var monitorId='bb1786392ce2e7e2012ce2eb78d7168f';
						var count=store.getCount();
						var record=new store.recordType();
						record.data={};
						var keys=store.fields.keys;
						for(i=0;i<keys.length;i++){
							var key=keys[i];
							if(key==='monitorItemId'){
								record.data[key]=monitorItemId;
							}else if(key==='monitorId'){
								record.data[key]=monitorId;
							}else if(key==='notifyValue'){
							    record.data[key]=-2;	
							}else if(key==='alarmValue'){
							    record.data[key]=-2;	
							}else{
								record.data[key]='';
							}
						}
						g.stopEditing();
						store.insert(count,record);
						g.startEditing(0,1);
					}
				}],
				clicksToEdit:1,
				frame:true,
				listeners:{
					afteredit:function(e){
						var record=e.record;
						var monitorItemId=record.get('monitorItemId');
						var monitorItemConfigId=record.get('monitorItemConfigId');
						//报警值
						var notifyValue=record.get('notifyValue');
						//报警值
						var alarmValue = record.get('alarmValue');
						//是否报警:
						var notify =record.get('notify');
						//是否预警:
						var alarm = record.get('alarm');
						var frequency=record.get('frequency');
						var monitor=record.get('monitor');
						var monitorItemConfigName=record.get('t_name');
						//监控对像ID
						var nodeId=Ext.getCmp('node-config-id').getValue();
//						alert('monitorItemID:'+monitorItemId+"*"+"monitorItemConfigId:"+monitorItemConfigId+"*notify:"+notify+"&*notifyValue:"+notifyValue+"*alarmValue:"+alarmValue+"*alarm:"+alarm+"*nodeId:"+nodeId);
                        Ext.Ajax.request({
                        	method:'POST',
                        	url:BP+'monitorItemConfigAction.do',
                        	params:{
                        		method:'newVersionSaveNodeServerMonitorItem',
                        		nodeId:nodeId,
                        		monitorItemId:monitorItemId,
                        		monitorItemConfigId:monitorItemConfigId,
                        		notifyValue:notifyValue,
                        		alarmValue:alarmValue,
                        		notify:notify,
                        		alarm:alarm,
                        		frequency:frequency,
                        		monitor:monitor,
                        		monitorItemConfigName:monitorItemConfigName
                        	},
                        	success:function(response,options){
                        		Ext.getCmp(grid_id).getStore().load({params : {
					                   nodeId : id
				                     }});
                        	}
                        });
					}
				}
			});
			store.load({params : {
					nodeId : id
				}});
			g.doLayout();
			return g;
	},
	/**
	 * 删除监控条目配置
	 */
	removeMonitorItemConfig:function(id){
		if(!id){
			return;
		}
		Ext.Ajax.request({
			method:'POST',
			url:BP+'monitorItemConfigAction.do?method=removeMonitorItemConfig',
			params:{
				monitorItemConfigId:id
			},
			success:function(response,options){
				if(Ext.getCmp('server-monitor-port-grid')){
				Ext.getCmp('server-monitor-port-grid').getStore().reload();
				}else if(Ext.getCmp('server-monitor-disk-grid')){
					Ext.getCmp('server-monitor-disk-grid').getStore().reload();
				}
			}
		});
	},
	serverProcessMonitor:function(id){
//		if(id && null!=id && ''!=id)''
//            Ext.QuickTips.init();
			var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url:BP+'monitorItemConfigAction.do?method=serverMonitorProcess'
					//					url : BP + 'monitorItemConfigAction.do?method=cpu'
				}),
				reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'monitorItemConfigId',
					fields : ['monitorItemId','name','t_name','alarmValue',
							'notifyValue','notify','alarm','monitorId',
							'monitorItemConfigId','frequency','monitor']
				})
			});
			var checkColumn=new Ext.grid.CheckColumn({
				header:'是否预警',
				dataIndex:'alarm',
				width:80
			});

			var notifyCheckColumn=new Ext.grid.CheckColumn({
				header:'是否报警',
				dataIndex:'notify',
				width:80
			});
			var monitorCheckColumn=new Ext.grid.CheckColumn({
				header:'是否监控',
				dataIndex:'monitor',
				width:80
			});
			var cm=new Ext.grid.ColumnModel([
			 {
			 	header:'进程名',
			 	dataIndex:'t_name',
			 	width:150,
			 	editor:new Ext.form.TextField({
			 		allowBlank:false
			 	})
			 },
//			 {
//			 	header:'预警值',
//			 	dataIndex:'alarmValue',
//			 	width:60,
//			 	editor:new Ext.form.NumberField({
//			 		allowBlank:false,
//			 		allowNegative:false
//			 	})
//			 }
//			 ,{
//			 	header:'报警值',
//			 	dataIndex:'notifyValue',
//			 	width:60,
//			 	editor:new Ext.form.NumberField({
//			 		allowBlank:false,
//			 		allowNegative:false
//			 	})
//			 },
			 checkColumn,
			 notifyCheckColumn,
			 monitorCheckColumn,
			 {
			 	dataIndex:'monitorItemId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	hidden:true
			 },{
			 	dataIndex:'monitorItemConfigId',
			 	header:'删除',
			 	renderer:function(v,p,r){
			 		var monitorItemConfigId=r.get('monitorItemConfigId');
			 		var html='<a href="#" onclick="com.easou.portal.portlet.NodeServerConfig.removeMonitorItemConfig(\''+monitorItemConfigId+'\');return false;">删除</a>';
			 		return html;
			 	}
			 }
		]);
		   var grid_id='server-monitor-port-grid';
			var g=new Ext.grid.EditorGridPanel({
				id:grid_id,
				store:store,
				cm:cm,
				loadMask:{
					msg:'正在加载数据,请稍候...',
					id:grid_id,
					store:store
				},
//				width:600,
				plugins:[checkColumn,notifyCheckColumn,monitorCheckColumn],
				autoHeight:true,
				autoWidth:true,
				autoScroll:true,
				tbar:[{
					text:'添加监控进程',
					handler:function(btn){
						var store=g.getStore();
//						var firstRecord=store.get(0);
//						var monitorItemId=firstRecord.get('monitorItemId');
                        //monitor port item id.
                        var monitorItemId='bb1786392c504266012c58714b730d82';
                        //monitor port id
                        var monitorId='bb1786392c504266012c586aa5e025f8';
						var count=store.getCount();
						var record=new store.recordType();
						record.data={};
						var keys=store.fields.keys;
						for(i=0;i<keys.length;i++){
							var key=keys[i]
							if(key==='monitorItemId'){
								record.data[key]=monitorItemId;
							}else if(key==='monitorId'){
								record.data[key]=monitorId;
							}else if(key==='notifyValue'){
							    record.data[key]=-2;	
							}else if(key==='alarmValue'){
							    record.data[key]=-2;	
							}else{
								record.data[key]='';
							}
						}
						g.stopEditing();
						store.insert(count,record);
						g.startEditing(0,1);
					}
				}],
				clicksToEdit:1,
				frame:true,
				listeners:{
					afteredit:function(e){
						var record=e.record;
						var monitorItemId=record.get('monitorItemId');
						var monitorItemConfigId=record.get('monitorItemConfigId');
						//报警值
						var notifyValue=record.get('notifyValue');
						//报警值
						var alarmValue = record.get('alarmValue');
						//是否报警:
						var notify =record.get('notify');
						//是否预警:
						var alarm = record.get('alarm');
						var frequency=record.get('frequency');
						var monitor=record.get('monitor');
						var monitorItemConfigName=record.get('t_name');
						//监控对像ID
						var nodeId=Ext.getCmp('node-config-id').getValue();
//						alert('monitorItemID:'+monitorItemId+"*"+"monitorItemConfigId:"+monitorItemConfigId+"*notify:"+notify+"&*notifyValue:"+notifyValue+"*alarmValue:"+alarmValue+"*alarm:"+alarm+"*nodeId:"+nodeId);
                        Ext.Ajax.request({
                        	method:'POST',
                        	url:BP+'monitorItemConfigAction.do',
                        	params:{
                        		method:'newVersionSaveNodeServerMonitorItem',
                        		nodeId:nodeId,
                        		monitorItemId:monitorItemId,
                        		monitorItemConfigId:monitorItemConfigId,
                        		notifyValue:notifyValue,
                        		alarmValue:alarmValue,
                        		notify:notify,
                        		alarm:alarm,
                        		frequency:frequency,
                        		monitor:monitor,
                        		monitorItemConfigName:monitorItemConfigName
                        	},
                        	success:function(response,options){
                        		Ext.getCmp(grid_id).getStore().load({params : {
					                   nodeId : id
				                     }});
                        	}
                        });
					}
				}
			});
			store.load({params : {
					nodeId : id
				}});
			g.doLayout();
			return g;
	}
};


