/**
 * @author alltouch
 */

function LeftMenuClass(){
	var main = this;
	
	
	this . hideWithChilds = function(obj){

		var ul = obj.children('ul'); 
		ul.children('li.sel, li.selected').not('.nochilds').each(function(){
			var ti = $(this);
			ti.children('ul').animate({height : 'hide'}, 'fast', 'linear', function(){
				ti.removeClass("selected sel");
			});	
		})
		
		ul.animate({height : 'hide'},'slow','linear',function(){
			obj.removeClass('selected sel')
		});
	}
	
	this . hideFirstLevel = function(){

		$('#menu').children('li.selected, li.sel').not('.opn')
			.each(function(){ // hide elements
				main.hideWithChilds($(this));
			});
	}
}

function LeftMenu(){
	this . options = new Object();
	
	this . make = function(pid){
		var Data = piro . chapters . cacheData . all;
		if(!pid){
			pid = piro . page . params . pageid;
		}
		//var obj = piro . chapters . getTopItem(pid);
		var obj = Data[pid] . parent;
		if(!obj){
			return false;
		}
		obj = Data[obj].childs;
		//piro . log(obj);
		
			
		var text = '<ul id="menu">';
		var len = obj.length;
	
			for(var i = 0; i<len; i++){
				var item = Data[obj[i]];
				//piro . log (item)
				var ac = ' class="';
				if(item.id == piro . page . params . pageid){
					ac += ' activepage"';
				} else {
					ac += '"';
				}
				text+='<li><a' + ac + ' href="#pageid=' + item.id + '">' +  item.title + '</a></li>';
			}
			
		text+='</ul>';
		
		$('#MenuColumn').html(text)
		
		//piro . call('LeftMenuLoad');
		$('#MenuColumn a').click(piro . trigger . linkClick);
		
		
		//piro.log($('#MenuColumn').height())
		//piro.log($(window).height())
		if($('#MenuColumn').height() < ($(window).height()-150)){
			$('#MenuColumn').css('position','absolute');
		} else {
			$('#MenuColumn').css('position','static');
		}
		
		if(!$('#MenuColumn').attr('top')){
			$('#MenuColumn').attr('top', $('#MenuColumn').offset().top);
		}
		
	}
	
	this . make2 = function(pid){
		var Data = piro . chapters . cacheData . all;
		if(!pid){
			pid = piro . page . params . pageid;
		}
		var obj = piro . chapters . getTopItem(pid);
		obj = Data[obj].childs;
		//piro . log(obj);
		
		var parents = piro . chapters . getParentsList(pid); 
		
		function makeChilds(parentId, num){
			var obj = Data [parentId].childs; 
			var l =  obj . length;
			var txt = '';
			for(var i = 0; i < l; i++){
				var item = Data[obj[i]];
				//piro . log (item)
				var noclass = item . childs . length == 0;
				var classtxt = ' class="';
				if(noclass){
					classtxt += 'nochilds ';
				} else if(parents[item.id]){
					classtxt += 'selected ';
				}
				if(item.id == piro . page . params . pageid){
					classtxt += 'activepage';
				}
				classtxt += '"';
				//piro . log(item.id)
				//piro . log(piro . page . params . pageid)
				
				txt+='<li' + classtxt + '><a href="#pageid=' + item.id + '"' + classtxt + '>' +  item.title + "</a>";
				if(!noclass){
					txt += makeChilds(item.id, num+1);
				}
				txt += '</li>';
			}
			
			if(txt.length > 1){
				if(num == 2)
					txt = '<ul class="second">'+txt+'</ul>';
				else if(num == 3)
					txt = '<ul class="third">'+txt+'</ul>';
				else if(num == 4)
					txt = '<ul class="forth">'+txt+'</ul>';
				else
					txt = '<ul>'+txt+'</ul>';
			}
			return txt;
		}
		
		
				
		var text = '<ul id="menu">';
		var len = obj.length;
	
			for(var i = 0; i<len; i++){
				var item = Data[obj[i]];
				//piro . log (item)
				var li = 'li class="';
				var ac = '';
				if(i==0)
					li += ' top';
				if(i==len-1)
					li += ' bottom';
				ac += ' class="';
				if(item.childs.length == 0){
					li += ' nochilds';
					ac += 'nochilds ';
				} else if(parents[item.id]){
					li += ' selected';
				}
				if(item.id == piro . page . params . pageid){
					ac += ' activepage"';
				} else {
					ac += '"';
				}
				li += '"';
				text+='<' + li + '><span><a' + ac + ' href="#pageid=' + item.id + '">' +  item.title + '</a></span>';
				if(item.childs.length != 0){
					text += makeChilds(item.id, 2);
				}
				text += '</li>';
			}
			
		text+='</ul>';
		
		$('#MenuColumn').html(text)
		
		piro . call('LeftMenuLoad');
	}
	
	var HelpClass = null;
	
	this . addEvents = function(){
		if(!HelpClass){
			piro . warning('Кривая инициализация левого меню');
			return ;
		}
		
		$('#MenuColumn li a').click(function(){
			var t = $(this);
			
			var li = t.parent();
			if(li.is('span')){
				li = li.parent();
			}
			
			if(li.is('.selected, .sel')){
				HelpClass . hideWithChilds(li);
				return false;
			}
			
			if(li.parent().hasClass('second')){
				var mainLi = li.parent().parent()
									.addClass('opn'); // add class to mainLi
									
				HelpClass . hideFirstLevel();
				
				mainLi.removeClass('opn');
				
				li.parent().children('li.sel, li.selected').each(function(){
					HelpClass . hideWithChilds($(this));
				})
			} else if(li.parent().is('#menu')){
				li.addClass('opn');
				HelpClass . hideFirstLevel();
				li.removeClass('opn');
			}
					
			if(t.hasClass('nochilds')){

				$.historyLoad( t . attr('href') . replace(/^.*#/, ''));
				return false;
			}
			
			li	.addClass('sel')
				.children('ul').animate({height : 'show'},'slow');
				
			return false;
		})	
		
	}
	this . init = function(){
		
		HelpClass = new LeftMenuClass();

	}	
}

piro . leftmenu = new LeftMenu();

