COMP.LoadStylesheet('all_browse');

Ext.override(Ext.grid.GridView, {
    holdPosition: false,
    onLoad : function(){
        //if (!this.holdPosition)this.scrollToTop(); //Bug 25220
        this.holdPosition = false
    }
});

RWS.Browse=
{
	dialog:null
	,initalized:false
	,Init: function()
	{
		var me = RWS.Browse;
		if (me.initialized)
			return;
			
		me.initialized = true;
		
		me.record = Ext.data.Record.create([
			{name: 'term'},
			{name: 'type'},
			{name: 'count'}
		]);
		
		me.reader = new Ext.data.JsonReader({
			id:'term'
		},me.record);
		
		me.store = new Ext.data.Store({
			reader:me.reader
		});
	}
	
	,Show : function(term,type,resultFN)
	{
		var me = RWS.Browse;
		me.Init();
		me.store.removeAll();
		me.bid = COMP.GetCurrentTicks();
		me.scrolled = false;
		this.dialog = new Ext.Window({
			title: L(4629) //'Browse'
			,modal: true
			,height:400
			,width:365
			,resizable:false
			,closeAction: 'close'
			,layout:'fit'
//			,autoScroll:true
			,border:false
			,defaults:{border:false}
			,keys:
			{
				key:[10,13],
				fn:function() { resultFN(me.SelectedTerm()); me.dialog.close(); }
			}
			,items:
			[{
				xtype:'grid'
				,id:'browseGrid'
				,stripeRows:true
				,store:me.store
				,resultFn:resultFN
				,columns:[
					 {header:L(6151), dataIndex:'term', width: 110} // Word
					,{header:L(4879), dataIndex:'type'} // Type
					,{header:L(6152), dataIndex:'count'} // Count
				]
				,sm:new Ext.grid.RowSelectionModel({singleSelect:true})
				,tbar:[{
					xtype:'button'
					,iconCls:'more_up'
					,text:L(22957) // More (up) needs graphic
					,handler:function() { me.Request(me.FirstTerm(),type,'prev'); }
				}]
				,bbar:[{
					xtype:'button'
					,iconCls:'more_down'
					,text:L(22957) // More (down) needs graphic
					,handler:function() { me.Request(me.LastTerm(),type,'next');}
				},'->',{
					xtype:'button'
					,text:L(4174) // 'Select'
					,handler:function() { resultFN(me.SelectedTerm()); me.dialog.close(); }
				}]
				,autoScroll:true
				,autoWidth:true
				,listeners: {
					rowdblclick : function(grid, index, e){
						e.stopEvent();
						grid.resultFn(grid.getSelectionModel().getSelections()[0].data.term);
						grid.ownerCt.close.defer(500, grid.ownerCt);
					}
				}
			}]
			,Grid : function() { return this.findById('browseGrid'); }
			,listeners:{
				'beforeclose':{fn:function(){ me.bid=null; me.dialog = null;}}
			}
		});
		RWS.Browse.loaded = false;
		me.store.on('load', function(store, records){
			// if (!RWS.Browse.loaded) {
				if(store.getCount() > 0){
					Ext.getCmp('browseGrid').selModel.selectRow(store.getCount() / 2);
					Ext.getCmp('browseGrid').getView().holdPosition = true;
					var view = Ext.getCmp('browseGrid').getView();
					view.focusRow.defer(500, view, [Math.floor(store.getCount() / 2) + 6]);//Bug 25219
					RWS.Browse.loaded = true;
				}
			// }
		});
		this.dialog.show();
		me.Request(term,type,'init');
	}
	
	,SelectedTerm : function()
	{
		var grid = RWS.Browse.dialog.Grid();
		var sels = grid.getSelectionModel().getSelections();
		if (sels.length)
			return sels[0].data.term;
		
		return '';
	}
	
	,FirstTerm : function()
	{
		var store = RWS.Browse.store;
		if (store.getCount() == 0)
			return '';
		
		return store.getAt(0).data.term;
	}
	
	,LastTerm : function()
	{
		var store = RWS.Browse.store;
		if (store.getCount() == 0)
			return '';
		
		return store.getAt(store.getCount()-1).data.term;
	}
	
	,Request : function(term,type,direction)
	{
		COMP.SendAjaxCommand('rws_request_browse',
			{
				term:term
				,type:type
				,direction:direction
				,bid:RWS.Browse.bid
			}, RWS.Browse.HandleResults, this);
	}
	
	,HandleResults : function(o)
	{
		var me = RWS.Browse;
		
		if (o.bid.toString() !== me.bid.toString())
			return;
			
		me.store.loadData(o.data,true);
		me.store.sort('term','ASC');
	}
};
if (window.COMP) COMP.Broadcast('scriptLoaded_rws_browse');