

/************************************************************
*
*	MenuAccord  (
*	Аккордеон для меню
*	Передаем имя контейнера trigger
*	Получаем массив ВСЕХ li. Для каждого проверяем наличие дочернего ul
*	Если он есть, ставим класс ajax для элемента switcer
*	Это конец инициализации
*
*	При клике на переключателе проверяем наличие дочернего
*	Если есть, проверяем его состояние
*	Если он открыт, то закрываем только его 
*	Если он закрыт,  то открываем только его
*
***************************************************************/

var MenuAccord = new Class({
	Implements: [Events, Options],
	
	options: {
		trigger: '.trigger',
		switcher: 'a'
		
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		var _self = this;

		//выбрать все ul от заданного класса
		this.roots = $$('.top_level ul');
		this.roots.each(function(item){
			_self.closeOut(item);
		});

		$$('.top_level').each(function(item){
			//получаем a
			var as = item.getElements('a');
				as.each(function(a){
				
				var ul = _self.hasChildren(a);
				if(ul){//если нет дочерних элементов - работаем как ссылка. иначе получаем родителя
					//alert(a.text);
					a.addEvent('click', function(e){
						e.stop();
						
						_self.doSomeThing(ul);
					});
				}
				//var li = a.getParent('li');
				if(a.hasClass('active')){
					_self.showOut(a.getParent('ul'));
				}
			});
			
		});

	},
	
	hasChildren: function(el){
		
		if(el.tagName != 'LI') el = el.getParent('li');
		var ul = el.getFirst('ul');
		if(ul) var li = ul.getFirst('li'); else return false;
		if(li) return ul; else return false;
	},
	
	getRoot: function(el){
		return el.getParent('ul.top_level2');
	},
	
	getAllParents: function(el){
		return el.getParents();
	},
	
	isDisplay: function(el){
		el = this.hasChildren(el);
		if(el){
			if(el.getStyle('display') == 'none') return false; else return true;
		}
		return null;
	},
	
	closeAll: function(el){
		_self = this;
	
		var parents = this.getAllParents(el);
		this.roots.each(function(item){
			if(!parents.contains(item)) _self.closeOut(item);
		});
	},
	
	closeOut: function(el){
		el.setStyle('display', 'none');
		return true;
	},
	
	showOut: function(el){
		el.setStyle('display', 'block');
		return true;
	},
		
	doSomeThing: function(el){
		el = this.hasChildren(el);
		if(el){
			var display = this.isDisplay(el);
			if(display == true){
				//закрываем меню
				this.closeAll(el);
			}
			if(display == false){
				//открываем меню 
				this.closeAll(el);
				this.showOut(el);
			}
			
		}
	}

});






