function ShowElement(grid, rowIndex, e) {
    document.location.href = "/auction/element.php?ELEMENT_ID="+grid.store.getAt(rowIndex).get("element_id");
}
	
Ext.onReady(function(){
	
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';
	
	var sectionId = 0;
	if (location.hash != '')
	{
		sectionId = location.hash.substr(1, location.hash.length);
	}
	
	var tp = $("#type_by").attr("title");
    var store = new Ext.data.JsonStore({
        remoteSort: true,
        baseParams: {
        	lightWeight:true,
        	ext:'js',
        	type: tp,
        	SECTION_ID: sectionId
        },
        storeId: 'gridStore',
        root: 'sale',
        totalProperty: 'totalCount',
        idProperty: 'element_id',
        fields: [
        	'name', 
            'comp_name',
            'type_torg',
            {name: 'start_price', type: 'int'},
            {name: 'quantity', type: 'int'},
            'edinic',
            'delivery_term',
            'price_up',
            {name: 'element_id', type: 'int'},
            {name: 'section_id', type: 'int'},
            'date_active',
            'section_name',
            'start_time',
            'currency',
            'lot',
            'place'
		],
		listeners:{
			loadexception:{
				fn:function(store,options,response,e){
					Ext.MessageBox.alert('Ошибка загрузки данных.', response.statusText);
				}
			}
		},
        url: '/auction/get_element.php'
    });
    store.setDefaultSort('element_id', 'desc');
    
    var store_form = new Ext.data.JsonStore({
        remoteSort: true,
        baseParams: {
        	type_req:'form',
        	ext:'js'
        },
        storeId: 'formStore',
        root: 'sect',
        totalProperty: 'totalCount',
        idProperty: 'section_id',
        fields: [
        	'name'
		],
		listeners:{
			loadexception:{
				fn:function(store,options,response,e){
					Ext.MessageBox.alert('Ошибка загрузки данных.', response.statusText);
				}
			}
		},
        url: '/auction/get_section.php'
    });
    store_form.load();

    var grid = new Ext.grid.GridPanel({
    	id: "GridTender",
        width:'100%',
        //height:650,
        autoHeight: true,
        title:'Список проводимых торгов (тг.)',
		autoExpandColumn: 'name',
        store: store,
        loadMask:{
			msg:"Загрузка данных",
			showMask:true
		},
        stripeRows:true,

        columns: [
        	{header: '№ лота',				dataIndex: 'element_id',	width: 50,sortable:true,id: 'element_id'},
        	//{header: '№ лота',				dataIndex: 'lot',			width: 50,sortable:true,id: 'lot'},
        	{header: 'Наименование товара',	dataIndex: 'name',			width: 380,id: 'name',renderer: renderSection,sortable:true},
        	{header: 'Брокер заказчика',	dataIndex: 'comp_name',		width: 50},
        	{header: 'Ед. измер.',			dataIndex: 'edinic',		width: 70},
        	{header: 'Кол-во',				dataIndex: 'quantity',		width: 70},
        	{header: 'Цена старт.',			dataIndex: 'start_price',	width: 70,sortable:true},
        	{header: 'Сумма старт.',		dataIndex: 'start_price',	width: 70,renderer: renderPrice},
        	{header: 'Шаг цены',			dataIndex: 'price_up',		width: 70},
        	{header: 'Срок поставки',		dataIndex: 'delivery_term',	width: 90},
        	{header: 'Место поставки',		dataIndex: 'place',			width: 90}
        	],
        
	    bbar: new Ext.PagingToolbar({
		    store: store,
		    pageSize: 20,
	    	xtype:'paging',
	    	refreshText:'Обновить данные',
			prevText:'Предыдущая страница',
			nextText:'Следующая страница',
			lastText:'Последная страница',
			firstText:'Первая страница',
			beforePageText:'Страница',
		    displayInfo: true,
		    displayMsg: 'Выбрано объявлений {0} - {1} из {2}',
		    emptyMsg: 'Нет опубликованных объявлений',
		    afterPageText: 'из {0}',
		    monitorResize: true
	    }),
	    
	    viewConfig: {
            forceFit:true,
            enableRowBody:true,
            showPreview:true
        },
        listeners:{
			rowdblclick:{
				fn:ShowElement
			}
		}
    });
    function renderSection(value, p, record){
    	if (record.data.section_id > 0)
        	return String.format(
                '<b>{0}</b><br>Категория: {3}<br>Дата проведения: {4}',
                value, record.data.section_id, record.id, record.data.section_name, record.data.start_time);
		else
			return String.format('<b>{0}</b>', value);
    }
    function renderPrice(value, p, record){
    	var sum = value*record.data.quantity;
       	return String.format('<b>{0}</b>', sum);
    }
	var Tree = Ext.tree;
    var tree = new Tree.TreePanel({
        useArrows: true,
        autoScroll: true,
        animate: true,
        enableDD: false,
        containerScroll: true,
        border: false,
        trackMouseOver: true,
        id: "SectionTree",
        dataUrl: '/auction/get_section.php',
		height: 144,
        //autoHeight: true,
        root: {
            nodeType: 'async',
            text: 'Структура разделов',
            draggable: false,
            id: 'src'
        },
        listeners: {
            click: function(n) {
            	sectionId = n.attributes.id;
            	store.setBaseParam('SECTION_ID', sectionId);
            	grid.setTitle("Каталог тендеров: "+n.attributes.text);
                store.load({params:{start:0, limit:20}});
                document.location.href = 'http://'+location.hostname+location.pathname+location.search+'#'+sectionId;
            }
        }
    });
    
    var fs = new Ext.FormPanel({
		frame:true,
		labelAlign:'right',
		labelWidth:150,
		width:600,
		waitMsgTarget:true,
		errorReader:new Ext.form.XmlErrorReader(),
		items:[
			new Ext.form.FieldSet({
				title:'Поиск по каталогу',
				autoHeight:true,
				defaultType:'textfield',
				items:[{
					fieldLabel:'Номер объявления',
					name:'arrFilter_ID',
					id: 'arFilter_ID',
					width:390
				},{
					fieldLabel:'Наименование',
					name:'arrFilter_NAME',
					id: 'arFilter_NAME',
					width:390
				},new Ext.form.ComboBox({
					fieldLabel:'Категория',
					hiddenName:'SECTION_ID',
					id: 'arFilter_SECTION',
					store: store_form,
					valueField:'id',
					displayField:'name',
					typeAhead:true,
					mode:'local',
					triggerAction:'all',
					emptyText:'Выберите категорию...',
					selectOnFocus:true,
					width:390
				})
			]
		})
	]
   	});
    
    var submit = fs.addButton({
        text: 'Поиск',
        handler: function(){
    		var arFilter_ID = Ext.getCmp('arFilter_ID');
    		var arFilter_NAME = Ext.getCmp('arFilter_NAME');
    		var arFilter_SECTION = Ext.getCmp('arFilter_SECTION');
        	store.setBaseParam('arrFilter_ID', arFilter_ID.getValue());
        	store.setBaseParam('arrFilter_NAME', arFilter_NAME.getValue());
        	store.setBaseParam('SECTION_ID', arFilter_SECTION.getValue());
        	store.setBaseParam('set_filter', 'Y');
        	grid.setTitle("Каталог торгов: Результаты поиска");
        	store.load({params:{start:0,limit:20}});
        }
    });
    
    var reset = fs.addButton({
        text: 'Отмена',
        handler: function(){
        	store.setBaseParam('set_filter', 'N');
        	grid.setTitle("Каталог торгов");
        	store.load({params:{start:0,limit:20}});
            fs.reset();
        }
    });
    
    var tabs = new Ext.TabPanel({
        renderTo: 'tabs',
        activeTab: 0,
        width: 610,
        id: "tab_panel",
        autoHeight: true,
        plain:true,
        defaults:{autoScroll: true},
        items:[{
                title: 'Список разделов',
                listeners: {activate: sectionActivate},
                id: 'tab_section',
                html: '<div id="tree-div" style="overflow:auto;"></div>'
            },
            {
                title: 'Поиск информации',
                listeners: {activate: sectionActivate},
                id: 'tab_form',
                html: '<div id="form-div" style="overflow:auto;"></div>'
            }
        ]
    });
    
    function sectionActivate(tab){
    	var tabs = Ext.getCmp('tab_panel');
    	tabs.getHeight();
		if (tab.id == 'tab_section'){
			tabs.setHeight(170);
			tree.render('tree-div');
			tree.getRootNode().expand();
        }
        if (tab.id == 'tab_form'){
        	tabs.setHeight(210);
        	fs.render('form-div');
        }
    }
    
    store.setBaseParam('SECTION_ID', sectionId);
	store.load({params:{start:0,limit:20}});
	grid.render('auction-grid');
});

Ext.form.XmlErrorReader = function(){
	Ext.form.XmlErrorReader.superclass.constructor.call(this, {
		record : 'field',
		success: '@success'
	}, [
		'id', 'msg'
	]);
};
Ext.extend(Ext.form.XmlErrorReader, Ext.data.XmlReader);
