/* get all li.node */
function getAllLiNodeNodes(currentEl){
	var childLis = $(currentEl).find('li');
	var childLiNodes = new Array();
	for(var i=0;i<childLis.length;i++){
		if(childLis[i].className != 'structure-hide' && childLis[i].className != 'catalogue'){
			childLiNodes.push(childLis[i].firstChild);
		}
	}
	return childLiNodes;
}
	

function hideAllChildren(currentEl){
	console.log(1);
	// clear 'current'
	var currentSpans = $(currentEl).find('span.current');
	$(currentSpans).each(function(){
		$(this).attr('class','');
	});
	var childUls = $(currentEl).find('ul');
	$(childUls).each(function(){
		if($(this).css('display') == 'block'){
			$(this).slideUp()
		}
	});
	var childLeafs = $(currentEl).find('div.leaf');
	$(childLeafs).each(function(){
		if($(this).css('display') == 'block'){
			$(this).slideUp();
		}
	});
}

/* hide ul children */
function hideUlChildren(currentEl){
	var childUl = $(currentEl).children('ul');
	$(childUl).each(function(){
		if($(this).css('display') == 'block'){
			$(this).slideUp();
		}
	});	
	return true;
}

/* show ul children */
function showUlChildren(lik){	
	// show
	var ulChild = $(lik).children('ul');
	$(ulChild).each(function(){
		//if($(this).css('display') == 'block'){
			$(this).slideDown();
		//}
		hideAllChildren($(this));
	});
	// hide siblings
	var siblingsLi = $(lik).siblings('li');
	$(siblingsLi).each(function(){
		hideAllChildren($(this));
	});
	return true;
}

function showLeaf(lik){
	// show additionals
	var ulAdditionals = $(lik).find('ul.additionals');
	$(ulAdditionals).show();
	var leafChild = $(lik).find('div.leaf');
	$(leafChild).slideDown();	
	// hide siblings
	var siblingsLi = $(lik).siblings('li');
	$(siblingsLi).each(function(){
		hideAllChildren($(this));
	});
	
	return true;
}

function hideLeaf(lik){
	var leafChild = $(lik).find('div.leaf');
	$(leafChild).slideUp();
	// show additionals
	var ulAdditionals = $(lik).find('ul.additionals');
	$(ulAdditionals).slideUp();
	return true;
}

function isLeaf(className){
	var res = false;
	if(className){
		var classAr = className.split(' ');
		for(var i=0;i<classAr.length;i++){
			if(classAr[i]=='leaf') res = true;
		}
	}
	if(res) return true;
	return false;
}

function isVisible(currentEl){
	var display = $(currentEl).css('display');
	if(display == 'none') return false;
	return true;
}

function makeCurrent(currentEl){
	/* make this el current */
	var	aChild = $(currentEl).children('a.node-link');
	var spans = $(aChild).children('span');
	$(spans).each(function(){
		$(this).attr('class','current');
	});
	return true;
}

function removeCurrent(currentEl){
	/* make this el current */
	var	aChild = $(currentEl).children('a.node-link');
	var spans = $(aChild).children('span');
	$(spans).each(function(){
		$(this).attr('class','');
	});
	return true;
}

$(document).ready(function(){
	/* Attach javascript.css */
	var headID = document.getElementsByTagName("head")[0];
	var link   = document.createElement('link');
	link.rel   = 'stylesheet';
	link.type  = 'text/css';
	link.media = 'screen';
	link.href  = '/css/javascript.css';
	headID.appendChild(link);
	
	/* Language */
	$('#f-language-submit').hide();
	$('#f-language-select').change(function(e){
		e.stopPropagation();
		e.preventDefault;
		$('#form-change-language').submit();	
	});
	
	/* Structure */
	if($('#tree')){
		/* hide all uls */
		hideUlChildren($('#tree'));

		var liNodes = getAllLiNodeNodes($('#tree'));
		for(var it=0;it<liNodes.length;it++){
			$(liNodes[it]).click( function(){
				//console.log($(ulChild).css('display'));
				var leaf = isLeaf(this.parentNode.className);
				if(!leaf){
					var ulChild = $(this).parent('li').children('ul');
					if($(ulChild).css('display') == 'block'){
						// hide
						hideUlChildren($(this).parent('li.node'));
						//hideLeaf($(this).parent('.node'));
					} else {
						showUlChildren($(this).parent('li.node'));
						//showLeaf($(this).parent('li.node'));
						makeCurrent($(this).parent('li.node'));
					}
				} else {
					var divChild = $(this).parent('li').children('div');
					if($(divChild).css('display') == 'block'){
						// hide
						//hideUlChildren($(this).parent('li.node'));
						hideLeaf($(this).parent('.node'));
					} else {
						//showUlChildren($(this).parent('li.node'));
						showLeaf($(this).parent('li.node'));
						makeCurrent($(this).parent('li.node'));
					}
				}
				/*
				if($(ulChild).css('display') == 'block'){
					// hide
					hideUlChildren($(this).parent('li.node'));
					hideLeaf($(this).parent('.node'));
					alert(1);
				} else {
					// show
					
					//
						showUlChildren($(this).parent('li.node'));
					//} else {
						showLeaf($(this).parent('li.node'));
					//}
					makeCurrent($(this).parent('li.node'));
				}
				*/
				
			});
		}
		/*
		$(liNodes).toggle(
			function(){
				
				makeCurrent($(this).parent('li.node'));
				var leaf = isLeaf(this.parentNode.className);
				if(!leaf){
					showUlChildren($(this).parent('li.node'));
				} else {
					showLeaf($(this).parent('li.node'));
				}
			}, 
			function(){
				hideUlChildren($(this).parent('li.node'));
				hideLeaf($(this).parent('.node'));
				//removeCurrent($(this));
			}
		);
		*/
		
		$('#structure-hide').click(function(){
			hideAllChildren($('#tree'));
		});

		
	}
	
	
	
});
