$().ready(function(){
	var top = $('#NavBox');
	top.find('img').click(function(){category_tree_switch_visibility(this)});
})


function category_tree_switch_visibility(elem, depthCalled) {
	
	function get_elem_depth(elem) {
		return parseInt(elem.get(0).className.match(/depth([0-9]+)/)[1]);
	}
	function get_img_state(img) {
		return img.get(0).src.match(/(Up|Down)/)[1];
	}
	
	var t = elem, _t = $(t), depth = get_elem_depth(_t);
	if (!_t.hasClass('expandImg'))
		return false;
	
	if (get_img_state(_t) == 'Up') {
		op = 'show';
		t.src = t.src.replace('Up', 'Down');
	}
	else {
		op = 'hide';
		t.src = t.src.replace('Down', 'Up');
	}
	
	next = _t.next().next();	//first next() is the current category
	nDepth = get_elem_depth(next);
	
	if (op == 'show') {
		do {
			if (nDepth == (depth + 1))
				next.removeClass('hide');
			
			next = next.next();
			nDepth = get_elem_depth(next);
		} while (nDepth > depth);
	}
	else if (op == 'hide') {
		var imgs = new Array();
		
		do {
			if (next.is('img') && get_img_state(next) == 'Down')
				imgs.push(next);
			else if (nDepth == (depth + 1))
				next.addClass('hide');
			
			next = next.next();
			nDepth = get_elem_depth(next);
		} while (nDepth > depth);
		
		for (i=0; i < imgs.length; i++) {
			category_tree_switch_visibility(imgs[i].get(0));
			imgs[i].addClass('hide');
		}
	}
	
	return true;
}

