Gfa.form.QuickSearch = function(config){

	Ext.apply(this,config);

	var parameters = config.parameters;
	this.parameters = config.parameters;
	
	var ds = config.ds;
	var cm = config.cm;
		/**
	 * parameters.fieldLabelName 
	 * parameters.cmHeaderName
	 * parameters.fieldName
	 * parameters.spconfigName
	 * parameters.cmdataIndex
	 * parameters.queryObjectName
	 * parameters.dsDWRProxy
	 */ 

	var win_height=400;
	var win_width =600;
	if(parameters.WIN_HEIGHT != null && parameters.WIN_HEIGHT != ''){
		win_height=parameters.WIN_HEIGHT;
	}
	if(parameters.WIN_WIDTH !=null && parameters.WIN_WIDTH !=''){
		win_width=parameters.WIN_WIDTH;
	}
	
    var toolbar = new Ext.Toolbar({
		items : ['-', Gfa.page.BTN_SEARCH, Gfa.page.BTN_RESET, '-',{
    	text : i18n.global.select,
		iconCls : 'toolbar-select',
    	handler : function() {
    		rowDblClick(grid);
    	}}]
	});
	
	
	//column布局
   var panel = new Ext.Panel({
		 layout : 'column'
	})
	var amount = parameters.FIELD_LABLENAME.length ;		
	for (var i = 0; i < amount; i++) {
		if (parameters.FIELD_LABLENAME[i]) {
			var pal = new Ext.Panel({
				columnWidth : 0.49,
				layout : 'form'
			})
			var gf = new Ext.form.TextField({
				fieldLabel : parameters.FIELD_LABLENAME[i],
				name : parameters.FIELD_NAME[i],
				queryField : {
					condition : Gfa.data.CONDITION_LIKE_ANYWHERE_IC
				}
			})
			pal.add(gf);
			panel.add(pal);
		}
	}
	var filter = new Ext.FormPanel({
		bodyStyle : 'padding:5px 3px 0;',
		cls : 'gfa-form',
		bbar : toolbar,
		items : [{
			xtype : 'fieldset',
			title : i18n.global.search,
			border : true,
			autoHeight : true,
			items : [panel]
		}]
	})
	
/*	var ds = new  Gfa.data.Store({
	    proxy: new Ext.data.DWRProxy(parameters.DS_DWRPROXY),
	    reader: new Ext.data.QueryReader({},parameters.DS_READER_NAME)
	});
	
	
	var cmNumber = parameters.CM_HEADERNAME.length;
	var headers = [];
	headers.push(new Ext.grid.RowNumberer());
	for (var i = 0; i < cmNumber; i++) {
		if (parameters.CM_HEADERNAME[i]) {
			var hd = {
				header : parameters.CM_HEADERNAME[i],
				dataIndex : parameters.CM_DATAINDEX[i],
				width : parameters.CM_WIDTH[i]
			}
			var len = parameters.CM_RENDERERNAME.length;
			if(len>1){
				if(parameters.CM_DATAINDEX[i] == parameters.CM_RENDERERNAME[0].rendererName){
					hd.renderer = function(value){
						var len = parameters.CM_RENDERERNAME.length;
						for(var j=1;j<len;j++){
							if(value == parameters.CM_RENDERERNAME[j].oldValue){
								value = parameters.CM_RENDERERNAME[j].newValue;
								return value;
							}
						}
					}
				}
			}
			headers.push(hd);
		}
	}	
	
	var cm = new Ext.grid.ColumnModel(headers);
    cm.defaultSortable = true;*/
	
	var paging = new Ext.PagingToolbar({
		displayInfo : true,
		pageSize : 15,
		store : ds
	});

    var grid = new Ext.grid.EditorGridPanel({
		ds : ds,
		cm : cm,
		sm : new Ext.grid.RowSelectionModel({
			singleSelect : true
		}),
		border : false,
		loadMask : true,
		autoScroll : true,
		clicksToEdit : 1,
		tbar : filter,
		bbar : paging
	});
    
	var page = new Gfa.page.GridEdit({
		grid : grid,
		filter : filter,
		toolbar : toolbar
	});

	ds.on('beforeLoad', function(store, options) {
		var q = options.params;
		if (typeof q.start != 'undefined') {// Query
			var queryInfo = Gfa.data.getQueryInfo(q, filter.form, {
				queryObjectName : parameters.QUERY_OBJECTNAME

			});
			
			if(parameters.ORDER_BY[0]){
			var orderMap = {};
			orderMap[parameters.ORDER_BY[0].orderByField] = parameters.ORDER_BY[0].sort;
			queryInfo['orderByProps'] = orderMap;
			}
			
			var num = parameters.QUERY_ADD_FLD.length;
			for (var i = 0; i < num; i++) {
				var fld = {};
				fld.condition = parameters.QUERY_ADD_FLD[i].condition;
				fld.fieldName = parameters.QUERY_ADD_FLD[i].fieldName;
				fld.fieldValueString = parameters.QUERY_ADD_FLD[i].fieldValueString;
				queryInfo.fields.push(fld);
			}
			
			if(parameters.WHERECONDITION !=null){
                queryInfo['whereCondition'] = parameters.WHERECONDITION;
			}
		//	store.proxy.DWR = parameters.DS_DWRPROXY;
			q.dwrMethod = parameters.DS_METHOD;
			q.dwrArguments = [queryInfo, []];
		} else {
		}
	});
	
	var window = new Ext.Window({
		title : parameters.WIN_TITEL,
		height : win_height,
		width : win_width,
		layout : 'fit',
		closeAction : 'hide',
		plain : true,
		modal : true,
		items : [grid]
	});
    
	this.window = window;
	this.load=function(){
		page.load();
	}
	
    this.setInitValue=function(fieldName,value){
    	filter.form.findField(fieldName).setValue(value);
    }
    this.reset = function(){
    	filter.form.reset();
    }
    grid.on('rowdblclick', function() {
         rowDblClick(grid);
    })
    
	function rowDblClick(grid) {
		var rec = grid.getSelectionModel().getSelected();
		if(rec == null){
			Ext.MessageBox.alert(i18n.message.msg, i18n.message.selectrecord);
			return
		}
		this.entity = rec.data;
		window.hide(); 
		config.QuickField.fireEvent("afterSelect", this.entity);	
		config.QuickField.selected = true;
	}

	Gfa.form.QuickSearch.superclass.constructor.call(this,config);
};

Ext.extend(Gfa.form.QuickSearch, Ext.BoxComponent,{
   	 entity:undefined,
   	 windows: undefined,
   	 showDlg: function(){  	 	    
   		 	this.window.show();	
   		 },
     getEntity:function(){
    		return this.entity;
   	 	}
	}
); 

