////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////

var gCAT_aryOpened = new Array;		//pole ID aktualne otevrenych, indexem je uroven
var gCAT_aryBrowse = new Array;		//pole ID od Rootu do aktualni kategorie
var gCAT_aryRoot = new Array;		//pole ID nLevel=1 && ID!=aktualni kategorie
var gCAT_nLevelMax = 0;
var gCAT_Timer = null;

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsCAT_OnLoad(nLevelFlyFrom)
{

	for (i=1; i<=gCAT_aryOpened.length; i++)
	{
		o = getE('x'+gCAT_aryOpened[i]+'a')
		if(o)
		{
			o.className += 'Active'
			
			if(i < nLevelFlyFrom)
				jsCAT_Show(gCAT_aryOpened[i], i, nLevelFlyFrom)
			else
				gCAT_aryOpened[i] = null
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsCAT_Click(ID, nLevel, nLevelFlyFrom, sURLquery)
{
	ID = ID.toString();

if (!Br.OK_CATMenu) document.location = '/Default.asp?'+sURLquery+ID;

	var o = getE('x'+ID+'p');

	if (nLevel < nLevelFlyFrom) jsCAT_HideNow(nLevelFlyFrom)

	if (!o || nLevel>=nLevelFlyFrom)						//neni co ukazovat, nebo je v plovoucich menu
	{
		document.location = '/Default.asp?'+sURLquery+ID;	//tak jdem rovnou na URL
	}
	else
	{
		if (o.className == 'CAT0Hide')
			o.className = 'CAT0Show';
		else
			document.location = '/Default.asp?'+sURLquery+ID;
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsCAT_ClickBrowse(ID, nLevel, nLevelFlyFrom, sURLquery)
{
	ID = ID.toString();

if (!Br.OK_CATMenu)document.location = '/Default.asp?'+sURLquery+ID;

	if (nLevel < nLevelFlyFrom || (nLevel == nLevelFlyFrom && !getE('x'+ID+'p')))
		document.location = '/Default.asp?'+sURLquery+ID;

	jsCAT_HideNow(nLevelFlyFrom)

	for (var i=1; i<=nLevel; i++)
	{
		setTimeout("jsCAT_Show("+gCAT_aryBrowse[i]+", "+i+", "+nLevelFlyFrom+")", (i-nLevelFlyFrom)*300+300)
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsCAT_Show(ID, nLevel, nLevelFlyFrom)
{

if (!Br.OK_CATMenu) return;

	var x = 0;
	var y = 0;

	clearTimeout(gCAT_Timer)

	ID = ID.toString()
	
	nLevel<nLevelFlyFrom ? nLevelHideFrom = nLevelFlyFrom : nLevelHideFrom = nLevel
	
	if (nLevel > gCAT_nLevelMax) 
		gCAT_nLevelMax = nLevel;	//zvednem maximalni uroven


	if (gCAT_aryOpened[nLevel] != ID)	//ZMENA, musime poschovavat vsechny s gCAT_aryOpened[nLevelHideFrom...gCAT_nLevelMax]
	{
		for (i=gCAT_nLevelMax; i>=nLevelHideFrom; i--)
		{
			o = getE('x'+gCAT_aryOpened[i]+'p')
			if(o)o.className = 'CAT0Hide'
				
			gCAT_aryOpened[i] = null
		}
		gCAT_aryOpened[nLevel] = ID
	}
	
	objP = getE('x'+ID+'p')
	objC = getE('x'+ID+'a')

	if (objP && (nLevel>=nLevelFlyFrom))
	{
		objP.style.position = 'absolute';
		objP.style.zindex = 8;

		if(nLevel == nLevelFlyFrom)	//zlom, prvni flylevel.. nutno dopocitat x,y az k <BODY>
		{
			x = objOffsetX(objC) + objC.offsetWidth
			y = objOffsetY(objC)
		}
		else						//dalsi level se opira o absolute rodice!!!
		{
			x = objC.offsetWidth
			y = objC.offsetTop
//			y = objC.parentElement.offsetTop
		}
		objP.style.top = y;
		objP.style.left = x;
	}
		
	if (objP)
		objP.className = 'CAT0Show'
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsCAT_Hide(nLevelFlyFrom)
{
	gCAT_Timer = setTimeout("jsCAT_HideNow("+nLevelFlyFrom+");", 1000)
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsCAT_HideNow(nLevelHideFrom)
{
	for (i=gCAT_nLevelMax; i>=nLevelHideFrom; i--)
	{
		o = getE('x'+gCAT_aryOpened[i]+'p')
		if(o)o.className = 'CAT0Hide'
				
		gCAT_aryOpened[i] = null
	}
}



////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////


var IdTime, gnHiddenMenuCount;

function allHiddenMenu(objId){

	window.clearTimeout(IdTime);
	IdTime=null;
	for (id=1; id<=gnHiddenMenuCount; id++){
		if (document.all["ch"+id] != null){
			if (id != objId) document.all["ch"+id].style.visibility = "hidden";
		}
	}
}
function chHiddenMenu(chID,pID){

	window.clearTimeout(IdTime);
	IdTime=null;
	for (id=1; id<=gnHiddenMenuCount; id++){
		if (document.all("ch"+id) != null){
			if(id > pID && id != chID){document.all["ch"+id].style.visibility = "hidden";}
		}
	}
}
function outObj(){
	IdTime = window.setTimeout("allHiddenMenu()",200);
}
function onRoot(hID,ID,nPlusY){

	var objElem = ID;
	var x = 0;

	// nejdřív se vyšplhám na rozumný objekt, kterému jsem nastavil "position:relative"
	// abych mohl hezky zjisit jeho x-pos ... (slezu z obrázku apod. které mohou být v menu)
	while (typeof objElem == 'object' && objElem.tagName != 'TD') objElem = objElem.offsetParent;
	allHiddenMenu(hID);
	if(document.all['ch'+hID]!= null ){
		document.all['ch'+hID].style.left = objElem.offsetLeft; //x;
		document.all['ch'+hID].style.top = document.all.idForMenuPos.offsetTop + nPlusY;
		document.all['ch'+hID].style.visibility = "visible";
	}
}
function onChildren(chID,ID,pID){

	var objElem = ID;
	var x = 0;
	var y = 0;
	x += parseFloat(objElem.parentElement.offsetWidth);
	// nejdřív se vyšplhám na rozumný objekt ... (slezu z obrázku apod. které mohou být v menu)
	while (typeof objElem == 'object' && objElem.tagName != 'TD') objElem = objElem.offsetParent;
	while (typeof objElem == 'object' && objElem.tagName != 'BODY'){
		x += objElem.offsetLeft;
		y += objElem.offsetTop;
		objElem = objElem.offsetParent;
	};
	chHiddenMenu(chID,pID);
	if(document.all['ch'+chID]!= null ){
		document.all['ch'+chID].style.left = x;
		document.all['ch'+chID].style.top = y;
		document.all['ch'+chID].style.visibility = "visible";
	}
}
function ClearTime(){
	window.clearTimeout(IdTime);
}