function titleNRenderer (val, meta, record, rowIndex, colIndex, store) {
	var rd = record.data;
	return '<a target="_blank" class="nounder" href="/news/'
		+ rd.id + '.html">'+val+'</a> '
}

function titleARenderer (val, meta, record, rowIndex, colIndex, store) {
	var rd = record.data;
	return '<a target="_blank" class="nounder" href="/articles/'
		+ rd.id + '.html">'+val+'</a> '
}


Ext.onReady(function(){

	// Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
	
	var views = {
		news: {
			record: [
				{name: 'id', sortType: 'integer'},
				{name: 'title', sortType: 'string'},
				{name: 'source_title', sortType: 'string'},
				{name: 'source_url', sortType: 'string'},
				{name: 'created', sortType: 'date', type: 'date', dateFormat: 'U'},
				{name: 'updated', sortType: 'date', type: 'date', dateFormat: 'U'},
				{name: 'status', sortType: 'string'}
			],
			model: [
				//csm,
				
				//{header: "id", width: 50, dataIndex: 'id', sortable: true},
				//{header: "А", align : 'left', dataIndex: 'status', width: 20, renderer: statusNRenderer},
				{header: "Заголовок", align : 'left', dataIndex: 'title', width: 500, renderer: titleNRenderer},
				{header: "Источник", align : 'left', dataIndex: 'source_title', width: 130, renderer: sourceRenderer},
				{header: "Создано", align : 'left', dataIndex: 'created', width: 130, renderer: LocalizedTimeForGrid}//,
				//{header: "Обновлено", align : 'left', dataIndex: 'updated', width: 100, renderer: LocalizedTimeForGrid}
			],
			bufferedReader: {
				root			: 'list.items',
				versionProperty : 'list.version',
				totalProperty   : 'list.total_count',
				id			  : 'id'
			},
			bufferedStore: {
				bufferSize : 100,
				sortInfo : {field: 'id', direction: 'DESC'},
				url		 : baseUri() + '/news/index.json'
			},
			grid: {
				listeners: {
					cellclick: CellClick
				},
				bbar: [
						'<input type="button" value="обновить список новостей" onclick="Ext.getCmp(\'news-grid\').getStore().reload()"/>'
				],
				id: 'news-grid'
			},
			title: "Новости"
		},
		articles: {
			record: [
				{name: 'id', sortType: 'integer'},
				{name: 'title', sortType: 'string'},
				{name: 'source_title', sortType: 'string'},
				{name: 'source_url', sortType: 'string'},
				{name: 'created', sortType: 'date', type: 'date', dateFormat: 'U'},
				{name: 'updated', sortType: 'date', type: 'date', dateFormat: 'U'},
				{name: 'status', sortType: 'string'}
			],
			model: [
				//csm,
				
				//{header: "id", width: 50, dataIndex: 'id', sortable: true},
				//{header: "А", align : 'left', dataIndex: 'status', width: 20, renderer: statusARenderer},
				{header: "Заголовок", align : 'left', dataIndex: 'title', width: 500, renderer: titleARenderer},
				{header: "Источник", align : 'left', dataIndex: 'source_title', width: 130, renderer: sourceRenderer},
				{header: "Создано", align : 'left', dataIndex: 'created', width: 130, renderer: LocalizedTimeForGrid}//,
				//{header: "Обновлено", align : 'left', dataIndex: 'updated', width: 100, renderer: LocalizedTimeForGrid}
				
				
			],
			bufferedReader: {
				root			: 'list.items',
				versionProperty : 'list.version',
				totalProperty   : 'list.total_count',
				id			  : 'id'
			},
			bufferedStore: {
				bufferSize : 100,
				sortInfo : {field: 'id', direction: 'DESC'},
				url		 : baseUri() + '/articles/index.json'
			},
			grid: {
				listeners: {
					cellclick: CellClick
				},
				bbar: [
						'<input type="button" value="обновить список статей" onclick="Ext.getCmp(\'articles-grid\').getStore().reload()"/>'
				],
				id: 'articles-grid'
			},
			title: "Статьи"
		}
	};
	
	var viewDefaults = {
		bufferedView: {
			nearLimit: 250,
			loadMask: {
				msg: 'Ждите ответа… Ждите ответа… Не ждите ответа…'
			}
		},
		bufferedReader: {
			root:            'list.items',
			versionProperty: 'list.version',
			totalProperty:   'list.total_count',
			id: 'id'
		},
		bufferedStore: {
			// autoLoad: true,
			listeners : {
				load: function (s) {
					window.grid_request_date = DateCache ();
					//LogInfo ('store base params' + DumpFields (s.baseParams));
					//LogInfo ('store last opts' + DumpFields (s.lastOptions.params));
				}
			},
			bufferSize: 250
			//sortInfo: {field: 'id', direction: 'ASC'},
			//url: web_app_request.base_uri+'/auctions/list.json/all',
		},
		panelConf: {
			region: 'center',
			autoScroll: true,
			collapsible: false,
			collapsed: false
		},
		grid: {
			collapsible: false,
			collapsed: false,
			enableDragDrop: false,
			columnWidth	: .7,
			region: 'center',
			collapsible: false,
			layout:'fit',
			xtype: 'gridpanel',
			listeners: {
				activate: function (p) {
					var s = p.getStore();
						s.reload();
					window.activeGridId = p.id;
				}/*,
				render: function (p) {
					var s = p.getStore();
						s.load();
				}*/
			},
			loadMask: {
				msg: 'Матрица: перезагрузка...'
			}
		}
	};
	
	var viewItems = [];
	
	for (var currentView in views) {
		receivedConf = views[currentView];
		
		// make config copy
		var conf = Clone (viewDefaults);
		
		// recursive (level == 1) version of Ext.apply
		Merge (conf, receivedConf);
		
		var grid = new LiveGrid (conf, currentView);
		
		viewItems.push (grid);
		
		grid.title = receivedConf.title;
		//alert (DumpFields (receivedConf.grid)); //DumpFields (grid));
		
		tid = 'tab-' + grid.id;
		
		if (!window.gridList)
			window.gridList = {};
		
		window.gridList[grid.id] = grid;
	}
	
	window.activeGridId = 'news-grid';
	
	var bodyHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.documentElement.clientHeight);
	var headerHeight = Ext.get ('header').getHeight ();
	var footerHeight = Ext.get ('footer').getHeight ();
	
	// alert ('h: ' + bodyHeight + ' - ' + headerHeight + ' - ' + footerHeight);
	
	new Ext.TabPanel({
		/*layout: 'border',*/
		renderTo: 'search-results',
		defaults: {
			collapsible: true,
			split: true
		},
		height: bodyHeight - headerHeight - footerHeight - 60,
		listeners: {
			activate: function (p) {
				window.activeGridId = p.id;
				alert (p.id);
				//centralItem.fireEvent ('activate', centralItem);
			} 
		},
		//renderTo: Ext.getBody(),
		activeTab: 0,
		items: viewItems
	});
	
});

function CellClick (p, rowIdx, colIdx, e) {
	var record = p.getStore().getAt(rowIdx);  // Get the Record
	var renderer = p.getColumnModel().getRenderer(colIdx); // Get field name
	if (renderer == sourceRenderer
		|| renderer == statusARenderer
		|| renderer == statusNRenderer
	) { //titleRenderer) {
		// here we call auction watch event
		// alert (1);
		return false;
	}
	
	// record.data.id
	
}
