Ext.namespace('Cat');

Cat.cookie = new Ext.state.CookieProvider({
	 path: "/"
	,expires: new Date(new Date().getTime()+(1000*60*60*24*30)) //30 days
});

/*Ext.PagingToolbar.prototype.ysGetCursor = function(){
	return this.cursor;
}*/

Cat.historyUpdate = function(){
	/*var cursor;
	if(Ext.isEmpty(Cat.goodPager)) cursor = 0;
	else cursor = Cat.goodPager.cursor;
	//Ext.History.add('zlo' + Cat.tokenDelimiter + cursor + Cat.keysDelimiter + Cat.pageSizeCombo.id + Cat.tokenDelimiter + Cat.lim);
	Ext.History.add('zlo' + Cat.tokenDelimiter + cursor + Cat.keysDelimiter + 'zlo2' + Cat.tokenDelimiter + Cat.lim);
	*/
}

//******************************************
// begin фильтры товарного списка

Cat.comissFilter = false;

// возвращает название активного фильтра или false
Cat.getActiveSortName = function(){
	var result = false;
	Ext.each(Cat.sort, function(item){
		if(item.state === true) result = item.name;
	});
	return result;
}

// возвращает значение фильтра по его имени или false
Cat.getSortState = function(name){
	var result = false;
	Ext.each(Cat.sort, function(item){
		if(item.name == name) result = item.state;
	});
	return result;
}

// возвращает dir фильтра по его имени или false
Cat.getSortDir = function(name){
	var result = false;
	Ext.each(Cat.sort, function(item){
		if(item.name == name) result = item.dir;
	});
	return result;
}

// возвращает все свойства фильтра по его имени или false
Cat.getSort = function(name){
	var result = false;
	Ext.each(Cat.sort, function(item){
		if(item.name == name) result = item;
	});
	return result;
}

// назначает фильтру name значение state
Cat.setSortState = function(name, state, notsave){
	Ext.each(Cat.sort, function(item, index){
		if(item.name == name)
			Cat.sort[index]['state'] = state;
		else
			Cat.sort[index]['state'] = !state;
	});
	if(!Ext.isEmpty(Cat.goodsStore))
		Cat.goodsStore.sort(name, Cat.getSortDir(name));
	if(Ext.isEmpty(notsave))
		Cat.saveSortState();
}

// меняет dir фильтра name на противоположное
Cat.toggleSortDir = function(name){
	var newState = false;
	Ext.each(Cat.sort, function(item, index){
		if(item.name == name){
			newState = (item.dirRO === true?item.dir:(item.dir == 'ASC'?'DESC':'ASC'));
			Cat.sort[index]['dir'] = newState;
		}
	});
	if(!Ext.isEmpty(Cat.goodsStore) && newState !== false)
		Cat.goodsStore.sort(name, newState);
	Cat.saveSortState();
	return newState;
}

Cat.getDirIconClass = function(dir){
	if(dir == 'ASC')
		return 'dir-asc';
	else
		return 'dir-desc';
}

Cat.saveSortState = function(){
	Cat.cookie.set('cat-sort-state', Ext.encode(Cat.sort));
}

Cat.loadSortState = function(){
	Cat.sort = Ext.decode(Cat.cookie.get('cat-sort-state'));
	/*if(!Ext.isEmpty(Cat.sort)){
		var name = Cat.getActiveSortName();
		Cat.setSortState(name, true, true);
	}*/
	return !Ext.isEmpty(Cat.sort);
}

if(!Cat.loadSortState()){
	Cat.sort = [
		 {
			 name: 'sklad'
			,state: false
			,dir: 'DESC'
			,dirRO: true // (direction ReadOnly) = true, если свойство dir у фильтра менять нельзя
		}
		,{
			 name: 'name'
			,state: false
			,dir: 'ASC'
			,dirRO: false
		}
		,{
			 name: 'price'
			,state: false
			,dir: 'ASC'
			,dirRO: false
		}
	];
	if(!Cat.getSortState('sklad'))
		Cat.setSortState('sklad', true);
}

// end фильтры товарного списка
//******************************************

//alert(Cat.getActiveSortName());




Cat.goodsFields = [
	 {name:'cat_id'}
	,{name:'sortkey'}
	,{name:'name_id'}
	,{name:'name', type: 'string'}
	,{name:'img'}
	,{name:'url'}
	,{name:'price', type: 'int'}
	,{name:'price_old'}
	,{name:'cur_name'}
	,{name:'price2'}
	,{name:'this_discount'}
	,{name:'fiction_discount'}
	,{name:'sklad', type: 'int'}
	,{name:'descr'}
	,{name:'sn'}
	,{name:'cause'}
	,{name:'copys'}
	,{name:'price_min'}
	,{name:'price_max'}
	,{name:'apply-ignored-sklad'}
	,{name:'bonus'}
];

// фиксит урл позиций уцененки, непривянных к каталогу (или в невидимом), типа такого: '//8720/sn_66800042';
Cat.fixUnbindGoodUrl = function(url){
	var regex = /^\/\/([0-9]+)(.+)$/;
	if(regex.test(url)) url = url.replace(regex, "/catalog/$1$2");
	return url;
}
	
Cat.goodsColumns = new Ext.grid.ColumnModel([
	 {
		 dataIndex: 'sortkey'
		,menuDisabled: true
		,resizable: false
		,renderer: function(v, metadata, record){
			var ret = '';
			if(!Ext.isEmpty(Server.catsData[record.get('cat_id')])){
				Ext.each(Server.catsData[record.get('cat_id')], function(item, index, all){
					ret += '<a href="/' + item.url + '/">' + item.name + '</a>' + (index+1 < all.length?' / ':'');
				});
			} else if(!Ext.isEmpty(Server.ownCatsData[record.get('cat_id')])){
				ret += Server.ownCatsData[record.get('cat_id')];
			} else {
				ret += 'Прочие товары';
			}
			return ret;
		}
	}
	,{
		 dataIndex: 'img'
		,menuDisabled: true
		,resizable: false
		,align: 'center'
		,width: 80
		,renderer: function(v, metadata, record){
			if(record.get('price') <= 0) return '';
			var url = Cat.fixUnbindGoodUrl(record.get('url'));
			return ''
			+(record.get('bonus') == '1'?'<div class="bonus"></div>':'')
			+'<a href="'+url+'/"><img src="'+(Ext.isEmpty(v)?'/i/px.gif':v)+'" width="60" height="60" style="'+(Ext.isEmpty(v)?'':'background: url(/f/proaudio/product_img_empty.png) no-repeat center center;')+'" /></a>'
			+'';
		}
	}
	,{
		 dataIndex: 'name'
		,menuDisabled: true
		,resizable: false
		,id: 'clmn-name'
		,renderer: function(v, metadata, record){
			if(record.get('price') <= 0) return '';
			
			var sn = record.get('sn');
			var url = Cat.fixUnbindGoodUrl(record.get('url'));
			return ''
			+(Ext.isEmpty(sn) || sn == 'false'?'':'<div>')// style="color: red;"
			+'<div><a href="'+url+'/">'+v+'</a>'+(!Ext.isEmpty(sn) || sn == 'false'?'<span style="padding-left: 6px;">(уценка)</span>':'')+'</div>'
			+'<div>Артикул: <b>'+record.get('name_id')+'</b></div>'
			+'<div style="padding-top:6px;">'+record.get('descr')+'</div>'
			+(!Ext.isEmpty(sn)
				?(sn == 'false'?'':'<div style="padding-top:6px;">С/н: '+sn+'</div>')
				+(sn == 'false'?'<div>'+record.get('cause')+'</div>':'<div style="padding-top:6px;">Причина уценки:<br />'+record.get('cause')+'</div>')
				:'')
			+(Ext.isEmpty(sn) || sn == 'false'?'':'</div>');
		}
	}
	,{
		 dataIndex: 'price'
		,menuDisabled: true
		,resizable: false
		,width: 120
		,align: 'center'
		,renderer: function(v, metadata, record){
			if(Ext.isEmpty(v) || v == 0) return '';//если цены нет, то ничего не надо выводить
			if(record.get('copys') > 1){
				var min = record.get('price_min');
				var max = record.get('price_max');
				return ''
					+'<b>'
					+(min == max
						?Ys.number_format(max, 0, ',', ' ')
						:Ys.number_format(min, 0, ',', ' ')+'</b>—<b>'+Ys.number_format(max, 0, ',', ' ')
					)
					+'</b>'
					+' '+record.get('cur_name')
					+'<br />('+record.get('copys')+' шт.)'
					+'';
			}
			else
				return ''
				+'<div>'
					+'<b>'+Ys.number_format(v, 0, ',', ' ')+'</b> '+record.get('cur_name')
					+(Ext.isEmpty(record.get('this_discount'))?'':'<span class="discount_value">&#x2212;'+Ys.number_format(record.get('this_discount')*100, 0, ',', ' ')+'%</span>')
				+'</div>'
				+(Ext.isEmpty(record.get('price2'))?'':'<div>('+record.get('price2')+')</div>')
				+(Ext.isEmpty(record.get('price_old'))?'':'<div class="price_old">'+Ys.number_format(record.get('price_old'), 0, ',', ' ')+' '+record.get('cur_name')+'</div>')
				+(record.get('sklad') == 1?(Ext.isEmpty(record.get('fiction_discount'))?'':'<div class="action">Акция! &#x2212;'+Ys.number_format(record.get('fiction_discount') * 100, 0, ',', ' ')+'%</div>'):'')
				+(record.get('sklad') == 1?(Ext.isEmpty(record.get('fiction_discount'))?'':'<div class="price_old">'+Ys.number_format(v / (1 - record.get('fiction_discount')), 0, ',', ' ')+' '+record.get('cur_name')+'</div>'):'')
				+(!Ext.isEmpty(record.get('sn')) || record.get('sklad') == '1'?'':'<div style="font-size: 90%; color: red; padding: 4px 0;">Ожидается</div>')
 				+(!Ext.isEmpty(record.get('apply-ignored-sklad'))?'<div class="ext-link" style="font-size: 90%; font-weight: bold; color: #4972ef; padding: 4px 0;">'+record.get('apply-ignored-sklad')+'</div>':'')
				+'';
		}
	}
	,{
		 dataIndex: 'sklad'
		,menuDisabled: true
		,resizable: false
		,width: 40
		,renderer: function(v, metadata, record){
			if(Ext.isEmpty(record.get('price')) || record.get('price') == 0) return '';//если цены нет, то ничего не надо выводить
			var name_id = Ext.util.Format.stripTags(record.get('name_id'));
			if(record.get('sklad')){
				if((!Ext.isEmpty(record.get('copys')) && record.get('copys') == 1) || (Ext.isEmpty(record.get('copys') && record.get('price') > 0))){
					return ''
						+'<div type="add2basket-old" id="add_'+name_id+'" preview="'+record.get('img')+'" sn="'+record.get('sn')+'" name_id="'+name_id+'"></div>';
				}
			}else
				return ''
					+''
					+'<div class="please-wait" type="item_notify_sklad_btn" name_id="'+name_id+'"></div>'
					+'<div type="item_order_btn" name_id="'+name_id+'"></div>';
		}
	}
]);

Cat.goodsView = new Ext.grid.GroupingView({
	 hideGroupedColumn: true
	,groupTextTpl: '<span>{group}</span> <span style="font-weight: normal;">({[values.rs.length]})</span>'
});

Cat.sortByText = new Ext.Toolbar.TextItem({
	 text: 'Сортировать по:'
});

Cat.sortSkladBtn = new Ext.Toolbar.Button({
	 text: 'наличию'
	,tooltip: 'Сортировать по наличию'
	,handler: function(){
		if(this.pressed) return false;
		Cat.containerPanel.getEl().mask('', 'x-mask-loading');
		Cat.setSortState('sklad', true);
		Cat.sortNameBtn.toggle(false);
		Cat.sortPriceBtn.toggle(false);
		this.toggle(true);
	}
	,listeners: {
		render: function(){
			var item = Cat.getSort('sklad');
			this.toggle(item.state);
		}
	}
});

Cat.sortNameBtn = new Ext.Toolbar.Button({
	 text: 'названию'
	,tooltip: 'Сортировать по названию'
	,cls: 'x-btn-text-icon'
	,handler: function(){
		Cat.containerPanel.getEl().mask('', 'x-mask-loading');
		if(this.pressed){
			this.setIconClass(Cat.getDirIconClass(Cat.toggleSortDir('name')));
			return false;
		} else {
			this.toggle(true)
			Cat.setSortState('name', true);
			Cat.sortSkladBtn.toggle(false);
			Cat.sortPriceBtn.toggle(false);
		}
	}
	,listeners: {
		render: function(){
			var item = Cat.getSort('name');
			this.toggle(item.state);
			this.setIconClass(Cat.getDirIconClass(item.dir));
		}
	}
});

Cat.sortPriceBtn = new Ext.Toolbar.Button({
	 text: 'цене'
	,tooltip: 'Сортировать по цене'
	,cls: 'x-btn-text-icon'
	,handler: function(){
		Cat.containerPanel.getEl().mask('', 'x-mask-loading');
		if(this.pressed){
			this.setIconClass(Cat.getDirIconClass(Cat.toggleSortDir('price')));
			return false;
		} else {
			this.toggle(true)
			Cat.setSortState('price', true);
			Cat.sortSkladBtn.toggle(false);
			Cat.sortNameBtn.toggle(false);
		}
	}
	,listeners: {
		render: function(){
			var item = Cat.getSort('price');
			this.toggle(item.state);
			this.setIconClass(Cat.getDirIconClass(item.dir));
		}
	}
});

Cat.showAllHandler = function(){
	Cat.goodPager.getEl().parent().show();
	Cat.sortByText.show();
	Cat.sortSkladBtn.show();
	Cat.sortPriceBtn.show();
	//Cat.sortNameBtn.show();
	
	Cat.goodsStore.load({params: {start: 0, limit: Cat.lim}});
	
	Cat.comissFilter = false;
	Cat.containerPanel.getEl().mask('', 'x-mask-loading');
	Cat.showComissBtn.toggle(false);
	Cat.goodsStore.clearFilter();
	Cat.goodsGrid.fireEvent('sortchange');
}

Cat.showAllBtn = new Ext.Toolbar.Button({
	 text: 'все'
	,tooltip: 'Показать все товары'
	,handler: function(){
		if(this.pressed) return false;
		this.toggle(true);
		Cat.showAllHandler();
	}
	,listeners: {
		render: function(){
			this.toggle(true);
		}
	}
});

Cat.showComissHandler = function(){
	Cat.containerPanel.getEl().mask('', 'x-mask-loading');
	
	Cat.goodPager.getEl().parent().hide();
	Cat.sortByText.hide();
	Cat.sortSkladBtn.hide();
	Cat.sortPriceBtn.hide();
	//Cat.sortNameBtn.hide();
	
	Cat.goodsStore.loadData(Server.comissData);
	
	Cat.comissFilter = true;
	Cat.goodsStore.filter('sn', /.+/);
}

Cat.showComissBtn = new Ext.Toolbar.Button({
	 text: 'Только уцененные'
	,tooltip: 'Показать все или только уцененные товары'
	,handler: function(){
		//if(this.pressed) return false;
		//Cat.showAllBtn.toggle(false);
		if(this.pressed){
			this.toggle(false);
			Cat.showAllHandler();
		} else {
			this.toggle(true);
			Cat.showComissHandler();
			Cat.goodsGrid.fireEvent('sortchange');
		}
	}
	,listeners: {
		render: function(){
			//this.toggle(true);
		}
	}
});

Ext.onReady(function(){

	// begin инициализация History
	Ext.History.init();
	Cat.tokenDelimiter = ':';
	Cat.keysDelimiter = '&';
	// begin разбор хэща из адресной строки
	Cat.hashItems = {};
	var hash = window.location.hash.replace('#', '');
	/*if(hash){
		var keys = hash.split(Cat.keysDelimiter);
		Ext.each(keys, function(item, index){
			var tmp = item.split(Cat.tokenDelimiter);
			Cat.hashItems[tmp[0]] = tmp[1];
		});
	}*/
	// end разбор хэща из адресной строки
	// end инициализация History
	
	Cat.applyButtons = function(){
		//console.log('applyButtons');
		Ext.each(Ext.DomQuery.select('div[type=add2basket-old]'), function(item){//, Cat.goodsGrid.getEl().dom
			//console.log(Ext.get(item).child('table'));
			if(Ext.isEmpty(Ext.get(item).child('table'))){
				new Ext.Button({
					 renderTo: item
					,icon: '/i/16_icons/cart_green.png'
					,cls: 'x-btn-icon'
					,handler: function(){
						var div = this.getEl().up('div[type=add2basket-old]').dom;
						add2basket({id:div.getAttribute('name_id'), oBtn: this.getEl().dom, sn: div.getAttribute('sn'), preview: div.getAttribute('preview')});
					}
				});
			}
		});
		Ext.each(Ext.DomQuery.select('div[type=item_notify_sklad_btn]'), function(item){
			var itemEl = Ext.get(item);
			if(itemEl.hasClass('please-wait')) itemEl.removeClass('please-wait');
			if(Ext.isEmpty(Ext.get(item).child('table'))){
				new Ext.Button({
					 renderTo: item
					,handleMouseEvents: false
					,icon: '/i/16_icons/email_subdued.png'
					,cls: 'x-btn-icon'
					,handler: function(){
						//showSubsForm(item.getAttribute('name_id'), itemEl.dom);
						
						Bas.subsButtonLastClicked = this;
							
						if(!Ext.isEmpty(Bas.subsWindow)){
							if(Bas.subsWindow.isVisible()){
								var windowSize = Bas.subsWindow.getSize();
								Bas.subsWindow.getEl().shift({
									 x: this.getEl().getLeft() - windowSize.width/2
									,y: this.getEl().getTop() - windowSize.height/4
								});
							} else {
								
								Bas.subsWindow.setPosition(this.getEl().getLeft() - 300/2, this.getEl().getTop() - 200/2);// то что окно скачет после show(), отстой. на глазок дадим параметры окна
								Bas.subsWindow.show((Ext.isIE == true?'':Bas.subsButtonLastClicked.getEl())
									,function(){
										// зачитаем данные в форму
										var data = Conf.cookie.get('subs-form-data');
										Bas.subsForm.getForm().setValues(Ext.decode(data));
									}
								);
							}
							
						}
					}
				});
			}
		});

		Ext.each(Ext.DomQuery.select('div[type=item_order_btn]'), function(item){
			var itemEl = Ext.get(item);
			//if(itemEl.hasClass('please-wait')) itemEl.removeClass('please-wait');
			if(Ext.isEmpty(Ext.get(item).child('table'))){
				new Ext.Button({
					 renderTo: item
					//,text: 'Заказать'
					//,icon: '/i/16_icons/car_subdued.png'
					,icon: '/i/16x16/truck_desaturate.gif'
					,cls: 'x-btn-icon'
					,handler: function(){
						if(Ext.isIE == false)
							Bas.orderButtonLastClicked = this;
						else
							Bas.orderButtonLastClicked = '';
							
						if(!Ext.isEmpty(Bas.orderWindow)){
							if(Bas.orderWindow.isVisible()){
								var windowSize = Bas.orderWindow.getSize();
								//Bas.orderWindow.setPosition(this.getEl().getLeft() - windowSize.width/2, this.getEl().getTop() - windowSize.height/4);
								Bas.orderWindow.getEl().shift({
									 x: this.getEl().getLeft() - windowSize.width/2
									,y: this.getEl().getTop() - windowSize.height/4
								});
							} else {
								
								Bas.orderWindow.setPosition(this.getEl().getLeft() - 300/2, this.getEl().getTop() - 200/2);// то что окно скачет после show(), отстой. на глазок дадим параметры окна
								Bas.orderWindow.show((Ext.isEmpty(Bas.orderButtonLastClicked)?'':Bas.orderButtonLastClicked.getEl())
									,function(){
										// зачитаем данные в форму
										var data = Conf.cookie.get('order-form-data');
										Bas.orderForm.getForm().setValues(Ext.decode(data));
										/*var windowSize = Bas.orderWindow.getSize();
										var windowPos = Bas.orderWindow.getPosition();
										Bas.orderWindow.getEl().shift({
											 x: windowPos[0] - windowSize.width/2
											,y: windowPos[1] - windowSize.height/4
										});*/
									}
								);
							}
							
						}
					}
				});	
			}
		});
	}

	Cat.goodsFullStore = new Ext.data.GroupingStore({
		 sortInfo: {
			 field: Cat.getActiveSortName()
			,direction: Cat.getSortDir(Cat.getActiveSortName())
		}
		,remoteSort: true
		,proxy: new Ext.data.PagingMemoryProxy(Server.goodsData)
		,groupField: 'sortkey'
		,reader: new Ext.data.ArrayReader({
			fields: Cat.goodsFields
		})
	});
	
	Cat.goodsStore = new Ext.data.GroupingStore({
		 sortInfo: {
			 field: Cat.getActiveSortName()
			,direction: Cat.getSortDir(Cat.getActiveSortName())
		}
		,remoteSort: true
		,proxy: new Ext.data.PagingMemoryProxy(Server.goodsData)
		,groupField: 'sortkey'
		,reader: new Ext.data.ArrayReader({
			fields: Cat.goodsFields
		})
		,listeners: {
			load: function(){
				Cat.applyButtons();
				Cat.historyUpdate();
				Cat.searchFieldVal = '';
				
				if(Server.ownCatsData !== undefined && (Ext.isEmpty(Server.supplier) || Server.supplier == '0'))
					Cat.goodsGrid.getView().collapseAllGroups();
				
				
			}
			,delay: 100
		}
	});

	
	Cat.pageSizeCombo = Ext.extend(Ext.ux.Andrie.pPageSize, {
		 beforeText: "по"
		,afterText: "&#160;товаров"
		,initComponent: function(){
			Cat.pageSizeCombo.superclass.initComponent.call(this);
			/*this.on('change', function(){
				console.log('change');
				var process = function(v){
					if(Cat.lim > v) Cat.applyButtons(); // потому что он просто фильтрует, не перегружая
					Cat.lim = v;
					Cat.cookie.set(this.id, Cat.lim);
					Cat.historyUpdate();
				}
				process(v);
			}, this, {delay: 20});*/
		}
	});
	
	/*Cat.pageSizeCombo.on('change', function(v){
		var process = function(v){
			if(Cat.lim > v) Cat.applyButtons(); // потому что он просто фильтрует, не перегружая
			Cat.lim = v;
			Cat.cookie.set(Cat.pageSizeCombo.id, Cat.lim);
			Cat.historyUpdate();
		}
		process(v);
	});*/

	Cat.lim = Cat.cookie.get(Cat.pageSizeCombo.id, ((Server.ownCatsData === undefined)?20:1000));
		

	Cat.goodPager = Ext.extend(Ext.PagingToolbar, {
		 displayInfo: true
		,displayMsg: 'Показаны с {0} по {1}. Всего {2}'
		,emptyMsg: "Нет заказов"
		,autoWidth: true
		,store: Cat.goodsStore
		,pageSize: Cat.lim
		,initComponent: function(){
			//console.log('initComponent: ');
			//console.log(this);
			Cat.goodPager.superclass.initComponent.call(this);
			this.on('render', function(){
				//console.log(this);
				try{
					this.loading.getEl().parent().next('td').remove();
					this.loading.getEl().remove();
				}
				catch(e){
				}
			}, this, {delay: 20});
		}
		/*,refresh: function(){
			this.doLoad(this.cursor); // хз. почему-то не срабатывает refresh() родителя :-(
		}*/
	});

	
	
/*
	Cat.goodPager = new Ext.PagingToolbar({
		 displayInfo: true
		,displayMsg: 'Показаны с {0} по {1}. Всего {2}'
		,emptyMsg: "Нет заказов"
		,autoWidth: true
		,store: Cat.goodsStore
		,pageSize: Cat.lim
		,plugins: [
			Cat.pageSizeCombo
		]
		,listeners: {
			render: {
				fn: function(){
					//убить ненужные дефолтовые кнопарики с тулбара
					this.loading.getEl().parent().next('td').remove();
					this.loading.getEl().remove();
				}
				,delay: 20
			}
		}
	});
*/	

	Cat.sizeCombo = new Cat.pageSizeCombo();
	
	Cat.sizeCombo.on('change', function(v){
		//console.log('change');
		var process = function(v){
			if(Cat.lim > v) Cat.applyButtons(); // потому что он просто фильтрует, не перегружая
			Cat.lim = v;
			Cat.cookie.set(Cat.pageSizeCombo.id, Cat.lim);
			Cat.historyUpdate();
		}
		Cat.pagerBottom.pageSize = v;
		//console.log(Cat.pagerTop);
		//console.log('Cat.pagerTop.pageSize: '+Cat.pagerTop.pageSize+' v: '+v);
		//Cat.pagerTop.refresh();
		process(v);
	});

	Cat.pagerTop = new Cat.goodPager({
		plugins: [
			Cat.sizeCombo
		]
	});
	Cat.pagerBottom = new Cat.goodPager();
	
	Cat.goodsGrid = new Ext.grid.GridPanel({
		 margins: '0 5 5 0'
		,autoHeight: true
		,bodyBorder: false
		,hideHeaders: true
		,border: false
		,enableColumnResize: false
		,enableColumnMove: false
		,autoExpandColumn: 'clmn-name'
		,id: 'goods-grid'
		,store: Cat.goodsStore
		,view: Cat.goodsView
		,cm: Cat.goodsColumns
		,enableColLock: false
		,stripeRows: true
		,tbar: (Server.ownCatsData !== undefined?'':Cat.pagerTop)
		,bbar: (Server.ownCatsData !== undefined?'':Cat.pagerBottom)
		,listeners: {
			sortchange: {
				fn: function(){
					
					if(Cat.comissFilter) Cat.showComissHandler();// если активна фильтраци по комиссии, то покажем тока ее
					
					//Cat.applyButtons();

					if(!Ext.isIE7){ // фикс непоявления каталога после render() в ие7
						Ext.fly('goods-grid-raw-table').unmask();
						Cat.containerPanel.getEl().unmask();
					}
					
				}
				,delay: 150
			}
		}
	});
	
/*
	Cat.searchField = {
		 xtype: 'textfield'
		//,allowBlank: false
		,listeners: {
			render: {
				fn: function(field){
					field.focus();
				}
				,delay: 50
			}
			,valid: {
				fn: function(field){
					var val = field.getValue().trim();
					if(Cat.searchFieldVal == val || (val.length < 3 && val.length > 0))
						return false;
					else if(field.getValue().trim() == ''){
						Cat.goodsStore.reload();
						return false;
					}
					Cat.searchFieldVal = field.getValue().trim();
					Cat.goodsFullStore.removeAll();
					Cat.goodsFullStore.loadData(Server.goodsData);
					Cat.goodsFullStore.filterBy(function(record, id){
						if(record.get('name').toLowerCase().search(Cat.searchFieldVal.toLowerCase()) >= 0 || record.get('name_id').search(Cat.searchFieldVal) >= 0) return true;
					});
					Cat.goodsStore.removeAll();
					Cat.goodsFullStore.each(function(record){
						Cat.goodsStore.add(record);
					});
					Cat.applyButtons();
				}
				,delay: 100
			}
			,specialkey: function(field, e){
				// e.HOME, e.END, e.PAGE_UP, e.PAGE_DOWN,
				// e.TAB, e.ESC, arrow keys: e.LEFT, e.RIGHT, e.UP, e.DOWN
				if (e.getKey() == e.ENTER){
					field.validate();
				}
			}
		}
	};
*/
	
	Cat.containerPanel = new Ext.Panel({
		 border: true
		,width: 568
		,tbar: ((Ext.isEmpty(Server.supplier) || Server.supplier == '0')?[
			// 'Показать: '
			//,Cat.showAllBtn
			//,Cat.showComissBtn
			//,'-'
			{
				 icon: '/i/16_icons/arrow_out.png'
				,cls: 'x-btn-icon'
				,tooltip: 'Развернуть все разделы'
				,handler: function(){
					Cat.goodsGrid.getView().expandAllGroups();
				}
			}
			,{
				 icon: '/i/16_icons/arrow_in.png'
				,cls: 'x-btn-icon'
				,tooltip: 'Свернуть все разделы'
				,handler: function(){
					Cat.goodsGrid.getView().collapseAllGroups();
				}
			}
			,'->'
		]:'')
		,items: [
			Cat.goodsGrid
		]
		,listeners: {
			render: {
				fn: function(panel){
					var tbar = panel.getTopToolbar();
					if(Server.ownCatsData === undefined){
						tbar.add([
							 Cat.sortByText
							,Cat.sortSkladBtn
							//,Cat.sortNameBtn
							,Cat.sortPriceBtn
						]);
						tbar.doLayout();
					}/* else {
						tbar.add(
							 'Поиск: '
							,Cat.searchField
						);
					}*/
					//if(!Ext.isIE) tbar.doLayout();
					
				}
				,delay: 20
			}
		}
	});
	
	
//try{
		
	if(!Ext.isEmpty(Ext.fly('goods-grid-raw-table'))){
		Cat.containerPanel.render('goods-grid-raw-table');
		if(Ext.isIE7){ // фикс непоявления каталога после render() в ие7
			Ext.fly('goods-grid-mask-ie7').unmask();
			Ext.fly('goods-grid-mask-ie7').remove();
		}
		Cat.goodsStore.load({params: {start: 0, limit: Cat.lim}});
	} else {
		Cat.applyButtons();
	}
/*}
catch(e){
	alert(e);
}*/



});
