	function bi4ce_navShow(szDivID)
    {
       if(document.layers)       //NN4+
        {
               document.layers[szDivID].visibility = iState ? "show" : "hide";
            }
        else
        {
            var obj;
            var objstate = 'block';
            if (document.all)
                obj = document.all[szDivID];
            else
                obj = document.getElementById(szDivID);

            if (obj.style.display=='block')
            {
            objstate = 'none';
            }
            obj.style.display = objstate;
        }    
    }
	
	function bi4ce_getChildren(item)
	{
		var items = [];
		if (item.children)
		{
			items = item.children
		}
		else
		{
		   var tags = item.getElementsByTagName('*');

		   for (var i = 0; i < tags.length; i++)
		   {
			   if (tags.item(i).parentNode == item)
					items.push(tags.item(i));
		   }
		}
		return items;
	}

    function bi4ce_navP(obj)
    {
        if (obj.parentElement)
        {
            return obj.parentElement;
        }
        else
        {
            if (obj.parentNode)
            {
                return obj.parentNode;
            }
        }
    }
    function bi4ce_navOo(obj, Group, isOver)
    {
        var tgs;
        var li;
        var lt;
        var ri;
        var rt;
        var pt;
        if (!Group || Group=='')
        {
            Group='Item';
        }
        pt = obj;
		
        while (bi4ce_navP(pt) && (!pt.getAttribute('Type') || pt.getAttribute('Type') != 'ROOT'))
        {
            pt = bi4ce_navP(pt);
        }

		tgs = obj.children;
        if (tgs && tgs.length > 0)
        {
            for (i=0; i<tgs.length; i++)
            {
                if (tgs[i].getAttribute('Type')=='IL')

                {
                    li = tgs[i];
                }
                if (tgs[i].getAttribute('Type')=='IR')
                {
                    ri = tgs[i];
                }
                if (tgs[i].getAttribute('Type')=='ILT')
                {
                    lt = tgs[i];
                }
                if (tgs[i].getAttribute('Type')=='IRT')
                {
                    rt = tgs[i];
                }
            }
        }
        if (isOver==1)
        {
			if (obj.getAttribute(Group + 'O'))
				obj.className=obj.getAttribute(Group + 'O');
			else
				obj.className=pt.getAttribute(Group + 'O');
            if (li)
            {
				if (obj.getAttribute(Group + 'LI' + 'O'))
					li.className=obj.getAttribute(Group + 'LI' + 'O');
				else
					li.className=pt.getAttribute(Group + 'LI' + 'O');
            }
            if (lt)
            {
				if (obj.getAttribute(Group + 'LT' + 'O'))
					lt.className=obj.getAttribute(Group + 'LT' + 'O');
				else
					lt.className=pt.getAttribute(Group + 'LT' + 'O');
            }
            if (ri)
            {
				if (obj.getAttribute(Group + 'RI' + 'O'))
					ri.className=obj.getAttribute(Group + 'RI' + 'O');
				else
					ri.className=pt.getAttribute(Group + 'RI' + 'O');
            }
            if (rt)
            {
				if (obj.getAttribute(Group + 'RT' + 'O'))
					rt.className=obj.getAttribute(Group + 'RT' + 'O');
				else
					rt.className=pt.getAttribute(Group + 'RT' + 'O');
            }
        }
        else
        {
			if (obj.getAttribute(Group))
				obj.className=obj.getAttribute(Group);
			else
				obj.className=pt.getAttribute(Group);
            if (li)
            {
				if (obj.getAttribute(Group + 'LI'))
					li.className=obj.getAttribute(Group + 'LI');
				else
					li.className=pt.getAttribute(Group + 'LI');
            }
            if (lt)
            {
				if (obj.getAttribute(Group + 'LT'))
					lt.className=obj.getAttribute(Group + 'LT');
				else
					lt.className=pt.getAttribute(Group + 'LT');
            }
            if (ri)
            {
				if (obj.getAttribute(Group + 'RI'))
					ri.className=obj.getAttribute(Group + 'RI');
				else
					ri.className=pt.getAttribute(Group + 'RI');
            }
            if (rt)
            {
				if (obj.getAttribute(Group + 'RT'))
					rt.className=obj.getAttribute(Group + 'RT');
				else
					rt.className=pt.getAttribute(Group + 'RT');
            }
        }
    }
	function bi4ce_navRender(name)
	{
		var mnu = document.getElementById(name);
		eval('var ' + name + 'root = mnu;');
		bi4ce_navRenderElement(mnu,mnu,null);
		mnu.style.display = 'none';
		mnu.style.display = 'block';
	}

	function bi4ce_navClick(item)
	{
		var lnk = false;
		var items = bi4ce_getChildren(item);

			for (var i=0; i<items.length; i++)
			{
				if (items[i].getAttribute('href'))
				{
					lnk = items[i].getAttribute('href');
				}
			}
			if (lnk)
			{
				document.location = lnk;
			}
		
	}

	function bi4ce_navRenderElement(obj,root,pobj)
	{
		var potype;
		
		if (pobj && pobj.getAttribute('Type'))
		{
			potype = pobj.getAttribute('Type');
		}
		else
		{
			potype = obj.getAttribute('Type');
		}
		if (pobj && root && pobj.id==root.id)
		{
			potype = obj.getAttribute('Type');
		}

		var potypevalue = 'Item';
		switch (potype)
		{
			case 'ROOT':
			case 'G': potypevalue = 'Group'; break;
			case 'CG': potypevalue = 'CGroup'; break;
			case 'C':
			case 'CI': potypevalue = 'CItem'; break;
		}

		switch (obj.getAttribute('Type'))
		{
			case 'G':
			case 'CG': //GROUP
					if (obj.getAttribute(potypevalue))
						obj.className = obj.getAttribute(potypevalue);
					else
						obj.className = root.getAttribute(potypevalue);
						
					eval('obj.onclick = function () {bi4ce_navShow(\'' + obj.id + 'g\');}');
					eval('obj.onmouseover = function () {bi4ce_navOo(this,\'' + potypevalue + '\',1);}');
					eval('obj.onmouseout = function () {bi4ce_navOo(this,\'' + potypevalue + '\',0);}');
					break;
			case 'GC': //GROUP-COLLAPSED
					obj.style.display = 'none';
					break;
			case 'GE': //GROUP-EXPANDED
					obj.style.display = 'block';
					break;
			case 'I':
			case 'CI':
			case 'C': //ITEM
					if (obj.getAttribute(potypevalue))
						obj.className = obj.getAttribute(potypevalue)
					else
						obj.className = root.getAttribute(potypevalue)
					eval('obj.onclick = function () {bi4ce_navClick(this);}');
					eval('obj.onmouseover = function () {bi4ce_navOo(this,\'' + potypevalue + '\',1);}');
					eval('obj.onmouseout = function () {bi4ce_navOo(this,\'' + potypevalue + '\',0);}');
					break;
			case 'LI': //ITEM
					if (pobj.getAttribute(potypevalue + 'LI'))
						obj.className = pobj.getAttribute(potypevalue + 'LI')
					else
						obj.className = root.getAttribute(potypevalue + 'LI')
					break;
			case 'LT': //ITEM
					if (pobj.getAttribute(potypevalue + 'LT'))
						obj.className = pobj.getAttribute(potypevalue + 'LT')
					else
						obj.className = root.getAttribute(potypevalue + 'LT')
					break;
			case 'RI': //ITEM
					if (pobj.getAttribute(potypevalue + 'RI'))
						obj.className = pobj.getAttribute(potypevalue + 'RI')
					else
						obj.className = root.getAttribute(potypevalue + 'RI')
					break;
			case 'RT': //ITEM
					if (pobj.getAttribute(potypevalue + 'RT'))
						obj.className = pobj.getAttribute(potypevalue + 'RT')
					else
						obj.className = root.getAttribute(potypevalue + 'RT')
					break;
			}	
			
					var items = bi4ce_getChildren(obj);

		if (items)
		{
			for (var i=0; i<items.length; i++)
			{
				bi4ce_navRenderElement(items[i],root,obj);
			}
		}
	}
