window.addEvent('domready', function(){
	$$('.with_descriptions').each(function(_c){
		function switch_blocks(_c, hide){
			_c.getElements('.hide_link').each(function(link){
				link.open = hide ? false : true;
				link.fireEvent('click');
			})
		}
		function check_opened(_c){
			count_all = _c.getElements('.hide_link').length;
			count_opened = _c.getElements('.hide_link').filter(function(item, index){return item.open}).length;
			_c.hl.removeClass('disabled');
			_c.sl.removeClass('disabled');
			if (count_opened == count_all){
				_c.sl.addClass('disabled');
			}else if (count_opened == 0){
				_c.hl.addClass('disabled');
			}
		}
		_c.getElements('.block').each(function(_b){
			var title = _b.getFirst();
			title.set('html', '<a href="" class="hide_link">' + title.get('html') + '</a>');
			title.getFirst().open = true;
			var _i = new Element('i', {'class': 'ii'});
			_i.set('html', '<a href="">скрыть описание</a>');
			_i.inject(title.getFirst(), 'top');
			title.getFirst().addEvent('click', function(e){
				if (this.open){
					this.open = false;
					this.removeClass('opened');
					this.getParent().getParent().getLast().setStyle('display', 'none');
				}else{
					this.open = true;
					this.addClass('opened');
					this.getParent().getParent().getLast().setStyle('display', 'block');
				}
				if ($chk(e)){
					e.stop();
					check_opened(_c);
				}
			})
//			_i.getFirst().addEvent('click', function(e){
//				title.getFirst().fireEvent('click');
//				if ($chk(e)){
//					e.stop();
//					check_opened(_c);
//				}
//			})
		})
		_c.sl = _c.getElement('.show_all');
		_c.sl.set('html', 'Развернуть все');
		_c.sl.addEvent('click', function(e){
			if ($chk(e)){
				e.stop();
			}
			switch_blocks(_c, true);
			check_opened(_c);
		})
		_c.hl = _c.getElement('.hide_all');
		_c.hl.set('html', 'Свернуть все');
		_c.hl.addEvent('click', function(e){
			if ($chk(e)){
				e.stop();
			}
			switch_blocks(_c, false);
			check_opened(_c);
		})
		_c.hl.getParent().setStyle('display', 'block');
		_c.hl.fireEvent('click');
	})
})