function TreeViewFindItem(look4id) {
	var sender_node, zone;
	if (document.getElementById)
		return document.getElementById(look4id);
	else if (document.all)
		return document.all[look4id];
}

function TreeViewExpander(sender_node_id, zone_id, expanded_img, collapsed_img) {
//	var sender_node = TreeViewFindItem(sender_node_id);
//	var zone = TreeViewFindItem(zone_id);
//	if (!zone || !sender_node)
//		return true;
//	if (zone.style.display == 'none') {
//		zone.style.display = 'block';
//		sender_node.src = expanded_img;
//	}
//	else {
//		zone.style.display = 'none';
//		sender_node.src = collapsed_img;
	//	}
	ColapseTreeInActiveItem(sender_node_id);

	return false;
}

function TreeViewSwitchSelection(new_selection_id) {
	var old_selection = TreeViewFindItem(TreeViewSelectionID);
	var new_selection = TreeViewFindItem(new_selection_id);
	if (old_selection)
		old_selection.className = '';
	if (new_selection)
		new_selection.className = TreeViewSelectionClass;
	TreeViewSelectionID = new_selection ? new_selection.id : '';
	return true
}


function JSMenuItem(id, zone, expandedImg, collapsedImg) {
    this.ImageId = id;
    this.ZoneId = zone;
    this.Childrens = new Array;
    this.ChildrensCount = 0;
    this.ParentMenuItem = null;
    this.AddChild = JSMenuAddChild;
    this.ExpandedImg = expandedImg;
    this.CollapsedImg = collapsedImg;
}

function JSMenuAddChild(childNode) {
    this.Childrens[this.ChildrensCount] = childNode;
    childNode.ParentMenuItem = this;
    this.ChildrensCount++;
    return childNode;
}

function ColapseRVRTreeItem(parentNode) {
    for (var menuItemIndex = 0; menuItemIndex < parentNode.ChildrensCount; ++menuItemIndex) {
        var currentItem = parentNode.Childrens[menuItemIndex];
        if (currentItem.ChildrensCount > 0) {
            var zone = TreeViewFindItem(currentItem.ZoneId);
            var sender_node = TreeViewFindItem(currentItem.ImageId);
            if (!zone || !sender_node)
                return true;
            if (zone.style.display != 'none') {
                zone.style.display = 'none';
                sender_node.src = GetDefaultImage(currentItem.CollapsedImg, true);
                
            }
            ColapseRVRTreeItem(currentItem);
        }

    }
    return false;
}

function GlobalFindWikiMenuItem(findedId) {
    var result = null;
    for (var treeIndex = 0; treeIndex < RVRTreeViewListCount; ++treeIndex) {
        result = FindWikiMenuItem(RVRTreeViewList[treeIndex], findedId);
        if (result)
            return result;
    }
    return result;
}

function FindWikiMenuItem(node, findedId) {
    for (var menuItemIndex = 0; menuItemIndex < node.ChildrensCount; ++menuItemIndex) {
        var currentItem = node.Childrens[menuItemIndex];
        if (currentItem.ImageId == findedId) {
            return currentItem;
        }
        var result = FindWikiMenuItem(currentItem, findedId);
        if (result)
            return result;
    }
    return null;
}

function ColapseAllTreeViews() {
    for (var treeIndex = 0; treeIndex < RVRTreeViewListCount; ++treeIndex) {
        ColapseRVRTreeItem(RVRTreeViewList[treeIndex]);
    }
}

function FindTreeOnNodeId(active_node_id) {
    return RVRTreeViewList[0];
}

function ColapseTreeInActiveItem(active_node_id) {

    var active_node = GlobalFindWikiMenuItem(active_node_id)
    if (!active_node)
        return true;

    var active_zone = TreeViewFindItem(active_node.ZoneId);
    if (!active_zone)
        return true;
    var active_is_colapsed = active_zone.style.display == 'none';
    ColapseAllTreeViews();

    var currentParentItem = active_node;
    while (currentParentItem ) {
        var sender_node = TreeViewFindItem(currentParentItem.ImageId);
        var zone = TreeViewFindItem(currentParentItem.ZoneId);
        if ((zone && sender_node)) {
            if (zone.style.display == 'none') {
                zone.style.display = 'block';
                //sender_node.src = currentParentItem.ExpandedImg;
                sender_node.src = GetDefaultImage(currentParentItem.ExpandedImg, false);
            } 
        }
        currentParentItem = currentParentItem.ParentMenuItem;
    }
	
    var active_control = TreeViewFindItem(active_node.ImageId);
    if (!active_control)
        return true;

    if (active_is_colapsed) {
        active_zone.style.display = 'block';
        //active_control.src = active_node.ExpandedImg;
        active_control.src = GetDefaultImage(active_node.ExpandedImg, false);
    }
    else {
        active_zone.style.display = 'none';
        active_control.src = GetDefaultImage(active_node.CollapsedImg, true);
    }

    return false;
}

function ItemIdInList(id, parent, count) {

    for (var menuItemIndex = 0; menuItemIndex < count; ++menuItemIndex) {
        if (id == parent[menuItemIndex])
            return true;
    }

    return false;
}

//function TreeViewOnExpandProc(sender_node_id) {
//	ColapseTreeInActiveItem(sender_node_id);
//	
//    return false;
//}

function CheckSingleExpand(){
	//	for (var treeIndex = 0; treeIndex < RVRTreeViewListCount; ++treeIndex) {
	//		CheckTreeSingleExpand(RVRTreeViewList[treeIndex]);
	//	}
	CheckTreeSingleExpand(GetRVRTreeView('KBNavigation'));
	return false;
}

function CheckTreeSingleExpand(parentNode) {
	if (1 != parentNode.ChildrensCount)
		return false;

	var nodeToExpand = parentNode.Childrens[0];

	if (!nodeToExpand)
		return true;

	if (nodeToExpand.ChildrensCount <= 0)
		return false;

	var controlToExpand = TreeViewFindItem(nodeToExpand.ZoneId);
	if (!controlToExpand)
		return true;

	if (controlToExpand.style.display != 'block') {
		controlToExpand.style.display = 'block';
		controlToExpand.src = GetDefaultImage(nodeToExpand.ExpandedImg, false);
	}

	return false;
}

function GetRVRTreeView(menuName) {
    var result = null;
    if ('KBNavigation' == menuName) {

        result = this.RVRTreeViewList[0];
    }
    else if ('CatProductNavigation' == menuName) {
        result = this.RVRTreeViewList[1];
    }
    else {
        result = new JSMenuItem('NullMenu_root', null, '', '');
    }
    return result;
}

function GetDefaultImage(imageName, isCollapsed) {	
	var defaultName = (isCollapsed) ? TreeViewDefaultCollapsedImage : TreeViewDefaultExpandedImage;
	if (imageName && (imageName.length > 0)) {
		return (imageName != defaultName) ? imageName : defaultName;
	}
	return defaultName;
}

this.RVRTreeViewList = new Array;
this.RVRTreeViewList[0] = new JSMenuItem('KBNavigation_root', null, '', '');
this.RVRTreeViewList[1] = new JSMenuItem('CatProductNavigation_root', null, '', '');
this.RVRTreeViewListCount = 2;

