/**

 * jsmenu

 *

 * @version $Id: jsmenu.js,v 1.1 2006/05/23 13:04:28 tomek Exp $

 * @copyright 2003 

 **/



var nn4 = (document.layers)?true:false;

var ie4 = (document.all)?true:false;

var menuTeimeOut = 500;		// milisekundy

var menuTimeID = 0;

var jsMenuCurrentDiv = -1;

//var offLeft = 0;

var maxDepth = 10;

var divs = new Array(maxDepth);



//function dmenu_init()

//{

//	//countOff();

//	for( i = 0; i < maxDepth; i++ )

//	{

//		divs[i] = 0;

//	}

//}



//function countOff()

//{

//	offLeft = document.body.clientWidth;

//	offLeft -= 958;

//	if( offLeft < 0 )	offLeft = 0;

//	m = offLeft % 2;

//	if( m )	offLeft--;

//	offLeft /= 2;

//}

//

JsMenu.showLayer = function ( divId, showhide )

{

	//(TRACE, "divId", divId);

	//(TRACE, "showhide", showhide);



	if(nn4)

	{

		(showhide)?document.layers[divId].visibility="show":document.layers[divId].visibility="hide";

	}

	else

	{

		if( showhide )

		{

			if( document.all[divId].style.visibility == "visible" )	return true;

		}

		else

		{

			if( document.all[divId].style.visibility == "hidden" )	return true;

		}

		//countOff();

		if( showhide )

		{

			//document.all[divId].style.pixelLeft += offLeft;

			document.all[divId].style.visibility = "visible";

		}

		else

		{

			document.all[divId].style.visibility = "hidden";

			//document.all[divId].style.pixelLeft -= offLeft;

		}

	}



	return true;

}





JsMenu.shadOn = function( from, to )

{

	if( from || to )	openSubMenu( from, to );

}



JsMenu.shadOff = function( id )

{

	if( id ) closeSubMenu( id );

}



/**

*	Najechano na element ktory ma podmenu

*/

function openSubMenu( from, to )

{

	if(to == null || to == 'null')

		to = 0;

	// zatrzymaj automatyczne wylanczanie

	// sami sie tym zajmiemy

	stopTimeing();



	// kasujemy wszystko poza from

	JsMenu.hideTill( from );

	dodajNaKoniec( to );

	JsMenu.showLayer( to, 1 );

	dover( from );

}



function closeSubMenu( id )

{

	dout( id );

}



/**

*	Wjechanie na element

*/

function dover( id )

{

	jsMenuCurrentDiv = id;

}



/**

*	Zejscie z elementu id

*/

function dout( id )

{

	// zatrzymujemy czas

	stopTimeing();



	jsMenuCurrentDiv = -1;



	// i wlanczamy od nowa

	menuTimeID = setTimeout( "JsMenu.hide();", menuTeimeOut );

}



JsMenu.hide = function()

{

	// kasuj od konca az napotkasz jsMenuCurrentDiv

	JsMenu.hideTill( jsMenuCurrentDiv );

	stopTimeing();

}

//JsMenu.hide = hide;



JsMenu.hideTill = function( d )

{

	for( i = maxDepth-1; i >= 0; i-- )

	{

		if( divs[i] == d )	break;

		if( divs[i] )

		{

			JsMenu.showLayer( divs[i], 0 );

		}

		divs[i] = 0;

	}

}



function dodajNaKoniec( d )

{

	for( i = 0; i < maxDepth; i++ )

	{

		if( !divs[i] )

		{

			divs[i] = d;

			break;

		}

	}

}



function stopTimeing()

{

	if( menuTimeID )

	{

		clearTimeout( menuTimeID );

		menuTimeID = 0;

	}

}

 

 

var allMenus = new Array();

var doDarken = false; 

var posX = 0;

var posY = 0;

//var openCount = 0;

var menuDivSizes = new Array();

var actionTimeout = 500;

var timeId = null;

var openedMenus = new Array();

var activeDiv = null;

var lastLockedId = null;

var lastOpened = null;

var preladedImages = new Array();

var timeIds = new Array();

var TRACE = false;



//*

function JsMenuMain()

{

	this.registerMainMenu = JsMenu.registerMainMenu;

	this.registerSubMenu = JsMenu.registerSubMenu;

	this.lighten = JsMenu.lighten;

	this.darken = JsMenu.darken;

	this.goToUrl = JsMenu.goToUrl;

	this.activateDiv = JsMenu.activateDiv;

	this.closeAllTill = JsMenu.closeAllTill;

	this.show = JsMenu.show;

	this._show = JsMenu._show;

	this.hide = JsMenu.hide;

	this._hide = JsMenu._hide;

	this.elemIdToIdx = JsMenu.elemIdToIdx;

	this.elemIdToMenuId = JsMenu.elemIdToMenuId;

	this.quoteIt = JsMenu.quoteIt;

	this.imgSwap = JsMenu.imgSwap;

	this.writeMenu = JsMenu.writeMenu;

	this.writeAllMenus = JsMenu.writeAllMenus;

	this.trackMouse = JsMenu.trackMouse;

	this.preloadImage = JsMenu.preloadImage;

	this.wait = JsMenu.wait;

	

	for( i = 0; i < maxDepth; i++ )

	{

		divs[i] = 0;

	}

}



// jako menuId podajemy nazwę obrazka z pełną ścieżką

function JsMenu(menuId, parentElemId, absPosX, absPosY, elemWidth, elemHeight, style, mainElemWidth, mainElemHeight)

{

	this.x = absPosX;

	this.y = absPosY;

	this.tdObj = null;

	this.elemWidth = elemWidth;

	this.elemHeight = elemHeight;

	this.mainElemWidth = mainElemWidth;

	this.mainElemHeight = mainElemHeight;

	this.parentElemId = parentElemId;

	//this.parMenId = parMenId;

	//this.parElemIdx = parElemIdx;

	this.id = menuId;

//	this.imgOutName = menuId;

//	lastDotIdx = menuId.lastIndexOf('.', menuId.length);

//	if( lastDotIdx >= 0 )

//	{

//		this.imgOverName = menuId.substring(0, menuId.lastIndexOf('.', menuId.length - 1)) + '_over' + menuId.substring(menuId.lastIndexOf('.', menuId.length), menuId.length);

//	}

	this.style = style;

	this.elems = new Array();

	this.submenuIdToElemIdx = new Array();

	this.locked = false;

//	this.imgWidth = 0;

//	this.imgHeight = 0;

//	if(this.parentElemId == null)

//	{

//		//img = new Image();

//		//img.src = this.imgOutName;

//		this.imgWidth = preladedImages[this.imgOutName].width;

//		this.imgHeight = preladedImages[this.imgOutName].height;

//	}

//	else

//	{

//		this.imgWidth = 0;

//		this.imgHeight = elemHeight;

//	}

}



// style ma być nazwą identyfikującą klasę stylu np: "styl1"

// zdefiniowane style mająmieć suffixy odpowiednio "over" oraz "out"

// np: "styl1over" i "styl1out"

JsMenu.prototype.addElem = function(label, url, style, submenuId)

{

	idx = this.elems.length;

	this.elems[idx] = new JsMenu.MenuElem(this.id, idx, label, url, style, submenuId);

	if(submenuId != null)

		this.submenuIdToElemIdx[submenuId] = idx;

}



JsMenu.prototype.getElemByIdx = function(elemIdx)

{

	return this.elems[elemIdx];

}



// visibility: hidden; 

JsMenu.prototype.getHTML = function()

{

	if(this.parentElemId == null)

	{

		code = '<div style="position: absolute; top: '+ this.y +'; left: '+ this.x +'">';



		code += '<table cellpadding="0" cellspacing="0" width="'+ this.mainElemWidth +'">\n';

		code += '<tr>\n\t<td class="'+ this.style +'out" style="width: '+ allMenus[this.id].mainElemWidth +'; height: '+ allMenus[this.id].mainElemHeight +'"'+ JsMenu.makeOnClick(this.url) +' onMouseOver="allMenus['+ JsMenu.quoteIt(this.id) +'].tdObj = this;JsMenu.lighten(this, '+ JsMenu.quoteIt(this.id) +', null);openSubMenu(-1, '+ JsMenu.quoteIt(this.id) +');dover('+ JsMenu.quoteIt(this.id) +');" onMouseOut="JsMenu.darken(this, '+ JsMenu.quoteIt(this.id) +', null);dout('+ JsMenu.quoteIt(this.id) +');">\n\t\t';

		code += this.label;

		code += '\n\t</td>\n</tr>';

		code += '\n</table></div>';

		offY = this.y + allMenus[this.id].mainElemHeight + allMenus[this.id].offsetY;

		offX = this.x + allMenus[this.id].offsetX;

		code += '<div id="'+ this.id +'" class="'+ this.style +'" style="visibility: hidden; position: absolute; top: '+ offY +'px; left: '+ offX +'px;" onMouseOver="dover('+ JsMenu.quoteIt(this.id) +')" onMouseOut="dout('+ JsMenu.quoteIt(this.id) +')">';

	}

	else

	{

		offY = this.y + allMenus[this.id].offsetY + allMenus[this.id].mainElemHeight;



		code = '<div style="position: absolute; top: '+ offY +'; left: '+ this.x +'"></div>';

		code += '<div id="'+ this.id +'" class="'+ this.style +'" onMouseOver="dover('+ JsMenu.quoteIt(this.id) +')" onMouseOut="dout('+ JsMenu.quoteIt(this.id) +')" style="visibility: hidden; position: absolute; top: '+ offY +'; left: '+ this.x +';z-index: 10;">';

	}



	code += '<table cellpadding="0" cellspacing="0" width="'+this.elemWidth+'">\n';

	

	for(i = 0; i < this.elems.length; i++)

		code += this.elems[i].getHTML();

	

	code += '\n</table></div>';

	return code;

}



// style ma być nazwą identyfikującą klasę stylu np: "styl1"

// zdefiniowane style mająmieć suffixy odpowiednio "over" oraz "out"

// np: "styl1over" i "styl1out"



// dopisać obsługę target!!



JsMenu.MenuElem = function(menuId, elemIdx, label, url, style, submenuId)

{

	this.menuId = menuId;

	this.idx = elemIdx;

	this.label = label;

	this.url = url;

	this.style = style;

	this.submenuId = submenuId;

	this.tdObj = null;

}



//dokończyć

JsMenu.MenuElem.prototype.getHTML = function()

{

	code  = '<tr>\n\t<td class="'+ this.style +'out" style="width: '+ allMenus[this.menuId].elemWidth +'; height: '+ allMenus[this.menuId].elemHeight +'"'+ JsMenu.makeOnClick(this.url) +' onMouseOver="allMenus['+ JsMenu.quoteIt(this.menuId) +'].elems['+ JsMenu.quoteIt(this.idx) +'].tdObj = this;JsMenu.lighten(this, '+ JsMenu.quoteIt(this.menuId) +', '+ this.idx +');JsMenu.shadOn('+ JsMenu.quoteIt(this.menuId) +', '+ JsMenu.quoteIt(this.submenuId) +');" onMouseOut="JsMenu.darken(this, '+ JsMenu.quoteIt(this.menuId) +', '+ this.idx +');JsMenu.shadOff('+ JsMenu.quoteIt(this.submenuId) +');">\n\t\t';

	code += this.label;

	code += '\n\t</td>\n</tr>';

	return code;

}



JsMenu.lighten = function(obj, menuId, elemIdx)

{

	if(elemIdx == null)

		style = allMenus[menuId].style;

	else

		style = allMenus[menuId].getElemByIdx(elemIdx).style;

	doDarken = true;

	if( obj.className == style + 'over' )

	{

		doDarken = false;

	}

	obj.className = style + 'over';

	obj.style.cursor = 'hand';

	JsMenu.lightenParents(menuId);

}



JsMenu.lightenParents = function(menuId)

{

	if(allMenus[menuId].parentElemId != null)

	{

		//alert("lightenParents, menuId: " + menuId);

		//alert("lightenParents, menuId: " + menuId);

		//alert("lightenParents, allMenus[menuId].parentElemId: " + allMenus[menuId].parentElemId);

		//alert("lightenParents, JsMenu.elemIdToMenuId(allMenus[menuId].parentElemId): " + JsMenu.elemIdToMenuId(allMenus[menuId].parentElemId));

		parentMenuId = JsMenu.elemIdToMenuId(allMenus[menuId].parentElemId);

		//alert(allMenus[parentMenuId]);

		parentMenu = allMenus[parentMenuId];

		//parentElem = parent.elems[JsMenu.elemIdToIdx(parentElemId)];

		parentElem = parentMenu.getElemByIdx(JsMenu.elemIdToIdx(allMenus[menuId].parentElemId));

		parentElem.tdObj.className = parentElem.style + 'over';

		//if(parent.parentElemId != null)

		JsMenu.lightenParents(parentMenu.id);

	}

	else

	{

		allMenus[menuId].tdObj.className = allMenus[menuId].style + 'over';

	}

}

		

JsMenu.darken = function(obj, menuId, elemIdx)

{

	if(elemIdx == null)

		style = allMenus[menuId].style;

	else

		style = allMenus[menuId].getElemByIdx(elemIdx).style;



	if(doDarken)

	{

		obj.className = style + 'out';

	}

	JsMenu.darkenParents(menuId);

}



JsMenu.darkenParents = function(menuId)

{

	if(allMenus[menuId].parentElemId != null)

	{

		//alert("darkenParents, menuId: " + menuId);

		parentMenu = allMenus[JsMenu.elemIdToMenuId(allMenus[menuId].parentElemId)];

		//parentElem = parent.elems[JsMenu.elemIdToIdx(parentElemId)];

		//alert('parentElemId: ' + parentElemId + '\nJsMenu.elemIdToIdx(parentElemId): ' + JsMenu.elemIdToIdx(parentElemId));

		parentElem = parentMenu.getElemByIdx(JsMenu.elemIdToIdx(allMenus[menuId].parentElemId));

		parentElem.tdObj.className = parentElem.style + 'out';

		//if(parent.parentElemId != null)

		JsMenu.darkenParents(parentMenu.id);

	}

	else

	{

		allMenus[menuId].tdObj.className = allMenus[menuId].style + 'out';

	}

}



JsMenu.makeOnClick = function(url)

{

	if(url.length > 0)

		return ' onClick="JsMenu.goToUrl(\''+ url +'\')"';

	else

		return '';

}



JsMenu.goToUrl = function(url)

{

  window.location.href = url;		

}



JsMenu.activateDiv = function activateDiv(el, divId)

{

	//tymczasowa poprawka póki błšd się nie znajdzie

	if(!JsMenu.inOpenedMenus(divId))

		openedMenus[openedMenus.length] = divId;

		

	if(el == null || divId == null)

		return false;

	

	//*

	e = event.toElement;

 	while(e)

	{

		if(e == el)

			return;

		e = e.parentNode;

	}

	//*/

	//trace(TRACE, "divId", divId);

	

	//JsMenu.clearTimeoutIdFor(allMenus[divId].getParentMenuId());

	//JsMenu.clearTimeoutIdFor(divId);

	JsMenu.clearAllTimeouts();

	timeId = setTimeout('JsMenu.closeAllTill('+ JsMenu.quoteIt(divId) +')', actionTimeout);

	activeDiv = divId;

	window.document.onmousemove = JsMenu.trackMouse;

}



JsMenu.deactivateDiv = function deactivateDiv(divId)

{

	if(divId == null || divId != activeDiv)	

		return false;

	//trace(TRACE, "divId", divId);

	//JsMenu.clearTimeoutIdFor(divId);

	JsMenu.clearAllTimeouts();	

	timeIds[divId] = setTimeout('JsMenu.closeAll();JsMenu.clearTimeoutIdFor('+ JsMenu.quoteIt(divId) +');', 2*actionTimeout);

	activeDiv = null;

}



JsMenu.closeAllTill = function closeAllTill(divId)

{

	JsMenu.clearAllTimeouts();

	//trace(TRACE, "divId", divId);

	if(divId == null)

		return false;

	if(openedMenus.length > 0)

	{

		if(JsMenu.inOpenedMenus(divId) && openedMenus[openedMenus.length-1] != divId)

		{

			closeId = openedMenus.pop();

			JsMenu._hide(closeId);

			JsMenu.closeAllTill(divId);

		}

	}

	else

		window.document.onmousemove = null;

}



JsMenu.closeAll = function()

{

	JsMenu.clearAllTimeouts();

	

	all = new Array(allMenus);

	all.reverse();

	for(var idx in all)

		JsMenu._hide(all[idx]);

	if(openedMenus.length > 0)

	{

		closeId = openedMenus.pop();

		JsMenu._hide(closeId);

		JsMenu.closeAll();

	}

	activeDiv = null;

	/*

	else

	{

		window.document.onmousemove = null;

		activeDiv = null;

	}

	//*/

}



JsMenu.openSubMenu = function(srcId, submenuId)

{

	if(submenuId == null || srcId == null)

		return false;

	activeDiv = srcId;

	//if(timeIds[submenuId] != null)clearTimeout(timeIds[submenuId]);

	//JsMenu.clearTimeoutIdFor(submenuId);

	JsMenu.clearAllTimeouts();

	if(lastOpened != null && lastOpened != submenuId && lastOpened != srcId)

		JsMenu.hide(lastOpened);

		

	JsMenu.closeAllTill(srcId);	

	

	if(allMenus[srcId].submenuIdToElemIdx[submenuId] >= 0)

	{

		JsMenu.show(submenuId);

		lastOpened = submenuId;

	}

}



JsMenu.show = function(divId)

{

	if(divId == null)

		return false;

	timeIds[divId] = setTimeout('JsMenu._show('+ JsMenu.quoteIt(divId) +');JsMenu.clearTimeoutIdFor('+ JsMenu.quoteIt(divId) +');', actionTimeout);

	//if(!JsMenu.inOpenedMenus(divId))

		//openedMenus[openedMenus.length] = divId;

	//JsMenu.closeAllTill(divId);

}



JsMenu._show = function(divId)

{

	if(divId == null)

		return false;

	divObj = new JsMenu.getObj(divId);

	divObj.style.visibility = "visible";

	window.document.onmousemove = JsMenu.trackMouse;

	if(!JsMenu.inOpenedMenus(divId))

		openedMenus[openedMenus.length] = divId;

	activeDiv = divId;

}



//JsMenu.hide = function(divId)

//{

//	if(divId == null)

//		return false;

//	timeIds[divId] = setTimeout('JsMenu._hide('+ JsMenu.quoteIt(divId) +');JsMenu.clearTimeoutIdFor('+ JsMenu.quoteIt(divId) +');', actionTimeout);

//	activeDiv = null;

//}



JsMenu._hide = function(divId)

{

	if(divId == null || allMenus[divId] == null)

		return false;

	if(allMenus[divId].locked)

		return true;

	if(divId != null && divId == lastOpened)

		lastOpened = null;

	divObj = new JsMenu.getObj(divId);

	divObj.style.visibility = "hidden";

	if(JsMenu.inOpenedMenus(divId))

		while(true)

		{

			//alert('JsMenu._hide: znaleziono, pozostało elementów: ' + openedMenus.length);

			id = openedMenus.pop();

			if(id == divId)

			{

				//alert('JsMenu._hide: znaleziono, pozostało elementów: ' + openedMenus.length);

				break;

			}

		}

	if(openedMenus.length == 0)

		window.document.onmousemove = null;

}



JsMenu.elemIdToIdx = function(elemId)

{

	if(elemId == null)

		return null;

	else

		//return parseInt(elemId.substring(elemId.lastIndexOf('.', elemId.length - 1), elemId.length));

		return elemId.split('.')[1];

}



JsMenu.prototype.getParentMenuElemIdx = function()

{

	return JsMenu.elemIdToIdx(this.parentElemId);

}



JsMenu.elemIdToMenuId = function(elemId)

{

	if(elemId == null)

		return null;

	else

		return elemId.substring(0, elemId.lastIndexOf('.', elemId.length - 1));

}



JsMenu.prototype.getParentMenuId = function()

{

	return JsMenu.elemIdToMenuId(this.parentElemId);

}



JsMenu.quoteIt = function quoteIt(text)

{

	return '\'' + text + '\'';

}



JsMenu.imgSwap = function(which, img)

{

	which.src = img;

}



// dodanie menu głównego					label, url, style, submenuId

JsMenu.registerMainMenu = function(menuId, label, url, style, absPosX, absPosY, elemWidth, elemHeight, mainElemWidth, mainElemHeight, subMenuOffsetX, subMenuOffsetY)

{

	allMenus[menuId] = new JsMenu(menuId, null, absPosX, absPosY, elemWidth, elemHeight, style, mainElemWidth, mainElemHeight);

	

	if(subMenuOffsetX)

		allMenus[menuId].offsetX = subMenuOffsetX;

	else

		allMenus[menuId].offsetX = 0;

	

	if(subMenuOffsetY)

		allMenus[menuId].offsetY = subMenuOffsetY;

	else

		allMenus[menuId].offsetY = 0;

	

	allMenus[menuId].label = label;

	allMenus[menuId].url = url;



	return allMenus[menuId];

}



// dodanie submenu

// dorobić "przypinanie menu" po lewej jeśli po prawej się nie zmieści



JsMenu.registerSubMenu = function(submenuId, parentMenuId, style)

{

	parentElemId = parentMenuId + '.' + allMenus[parentMenuId].submenuIdToElemIdx[submenuId];

	

	if(allMenus[parentMenuId].offsetX)

	{

		if(parentMenuId == null)

			absX = allMenus[parentMenuId].x + allMenus[parentMenuId].mainElemWidth + allMenus[parentMenuId].offsetX;

		else

			absX = allMenus[parentMenuId].x + allMenus[parentMenuId].elemWidth + allMenus[parentMenuId].offsetX;

		

	}

	else

	{

		if(parentMenuId == null)

			absX = allMenus[parentMenuId].x + allMenus[parentMenuId].mainElemWidth;

		else

			absX = allMenus[parentMenuId].x + allMenus[parentMenuId].elemWidth;

	}

	

	if(parentMenuId == null || allMenus[parentMenuId].parentElemId == null)

	{

//		if(allMenus[parentMenuId].offsetY)

//			absY = allMenus[parentMenuId].y + (allMenus[parentMenuId].submenuIdToElemIdx[submenuId]) * allMenus[parentMenuId].elemHeight + allMenus[parentMenuId].mainElemHeight + allMenus[parentMenuId].offsetY;

//		else

			absY = allMenus[parentMenuId].y + (allMenus[parentMenuId].submenuIdToElemIdx[submenuId]) * allMenus[parentMenuId].elemHeight;

	}

	else

	{

//		if(allMenus[parentMenuId].offsetY)

//			absY = allMenus[parentMenuId].y + allMenus[parentMenuId].submenuIdToElemIdx[submenuId] * allMenus[parentMenuId].elemHeight + allMenus[parentMenuId].offsetY;

//		else

			absY = allMenus[parentMenuId].y + allMenus[parentMenuId].submenuIdToElemIdx[submenuId] * allMenus[parentMenuId].elemHeight;

	}



	allMenus[submenuId] =	new JsMenu(submenuId, parentElemId, absX, absY, allMenus[parentMenuId].elemWidth, allMenus[parentMenuId].elemHeight, style);

	allMenus[submenuId].offsetY = allMenus[parentMenuId].offsetY;

	allMenus[submenuId].mainElemHeight = allMenus[parentMenuId].mainElemHeight;

	allMenus[submenuId].mainElemWidth = allMenus[parentMenuId].mainElemWidth;

	return allMenus[submenuId];

}



JsMenu.writeMenu = function(menuId)

{

	document.write(allMenus[menuId].getHTML());

}



JsMenu.writeAllMenus = function()

{

	for(var menuId in allMenus)

	{

		document.write('\n<!-- menuId: '+ menuId +' -->\n' + allMenus[menuId].getHTML());

	}

	

	window.onresize = document.location.reload;

}



JsMenu.trackMouse = function(e)

{

	//alert("a jednak");

	if(activeDiv == null)

	{

		//alert('JsMenu.trackMouse - activeDiv: ' + activeDiv);

		//window.document.onmousemove = null;

		return false;

	}

	

	if(navigator.appName == "Netscape")

	{

		posX = e.pageX;

		posY = e.pageY;	

	}

	else 

	{

		posX = event.clientX + document.body.scrollLeft;

		posY = event.clientY + document.body.scrollTop;

	}

	

	if (posX <= 0) 

		{posX = 0} 

	if (posY <= 0)

		{posY = 0}   

	

	if(openedMenus.length == 0)

	{

		JsMenu.closeAll();

		//window.document.onmousemove = null;

		//return true;

	}

	

	el = new JsMenu.getObj(openedMenus[openedMenus.length-1]);

	if(openedMenus.length-1 > 0)

		el2 = new JsMenu.getObj(openedMenus[openedMenus.length-2]);

	if(

		 !( (  openedMenus.length > 0

				&& allMenus[openedMenus[openedMenus.length-1]].y < posY 

			 	&& allMenus[openedMenus[openedMenus.length-1]].y + el.obj.offsetHeight > posY 

			 	&& allMenus[openedMenus[openedMenus.length-1]].x < posX 

			 	&& allMenus[openedMenus[openedMenus.length-1]].x + el.obj.offsetWidth > posX )

				||

				( openedMenus.length-1 > 0

				&& allMenus[openedMenus[openedMenus.length-2]].y < posY 

			 	&& allMenus[openedMenus[openedMenus.length-2]].y + el2.obj.offsetHeight > posY 

			 	&& allMenus[openedMenus[openedMenus.length-2]].x < posX 

			 	&& allMenus[openedMenus[openedMenus.length-2]].x + el2.obj.offsetWidth > posX )

			)

			|| 

			(  allMenus[openedMenus[openedMenus.length-1]].parentElemId == null

			&& allMenus[openedMenus[openedMenus.length-1]].y + allMenus[openedMenus[openedMenus.length-1]].imgHeight > posY 

			&& allMenus[openedMenus[openedMenus.length-1]].x + allMenus[openedMenus[openedMenus.length-1]].imgWidth < posX 

			|| allMenus[openedMenus[openedMenus.length-1]].parentElemId == null

/*		&& allMenus[openedMenus[openedMenus.length-1]].x + allMenus[openedMenus[openedMenus.length-1]].imgWidth > allMenus[openedMenus[openedMenus.length-1]].x + allMenus[openedMenus[openedMenus.length-1]].elemWidth*/

			&& allMenus[openedMenus[openedMenus.length-1]].y + allMenus[openedMenus[openedMenus.length-1]].imgHeight < posY 

			&& allMenus[openedMenus[openedMenus.length-1]].x +  + allMenus[openedMenus[openedMenus.length-1]].elemWidth < posX )

		)

	{

		//closeId = openedMenus.pop();

		//timeIds[closeId] = setTimeout('JsMenu._hide('+ JsMenu.quoteIt(closeId) +');JsMenu.clearTimeoutIdFor('+ JsMenu.quoteIt(closeId) +');', actionTimeout);

		JsMenu.deactivateDiv(openedMenus[openedMenus.length-1]);

	}



	return true;

}



JsMenu.getObj = function(name)

{

	//alert(name);

	if(name == null)

		return null;

  if (document.getElementById)

  {

    this.obj = document.getElementById(name);

		this.style = document.getElementById(name).style;

  }

  else if (document.all)

  {

    this.obj = document.all[name];

	  this.style = document.all[name].style;

  }

  else if (document.layers)

  {

   	this.obj = document.layers[name];

   	this.style = document.layers[name];

  }

}



JsMenu.wait = function(amount)

{

	d = new Date();

	while(1)

	{

		mill = new Date();

		diff = mill-d;

		if( diff >= amount ) 

			break;

	}

}



JsMenu.preloadImage = function(img)

{

	if(img == null)

		return false;

	preladedImages[img] = new Image();

	preladedImages[img].src = img;

	

	lastDotIdx = img.lastIndexOf('.', img.length);

	if( lastDotIdx >= 0 )

	{

		imgOver = img.substring(0, img.lastIndexOf('.', img.length - 1)) + '_over' + img.substring(img.lastIndexOf('.', img.length), img.length);

	}

	

	preladedImages[imgOver] = new Image();

	preladedImages[imgOver].src = imgOver;

	

	//JsMenu.wait(actionTimeout);

}



JsMenu.inOpenedMenus = function(val)

{

	if(openedMenus.length == 0)

		return false;

	

	for(var idx in openedMenus)

	{

		if(openedMenus[idx] == val)

		{

			//alert(val + ' = ' + openedMenus[idx]);

			return true;

		}

	}

	return false;

}



JsMenu.clearTimeoutIdFor = function(menuId)

{

	if(timeIds[menuId] != null)

		clearTimeout(timeIds[menuId]);

		

	timeIds[menuId] = null;

}



JsMenu.clearAllTimeouts = function()

{

	if(timeId != null)

		clearTimeout(timeId);

		

	for(var idx in timeIds)

		JsMenu.clearTimeoutIdFor(timeIds[idx]);

}



function trace(flag, label, value)

{

	if (flag)

	{

		var msg = "";

		if (trace.caller)

		{

			var funcName = trace.caller.toString();

			funcName = funcName.substring(8, funcName.indexOf(")") + 1);

			msg += "In " + funcName + ": ";

		}

		msg += label + "=" + value + "\n";

		document.forms["debug_f"].debug_ta.value += msg;

	}

}



function updateDebug()

{

	document.forms["debug_f"].opened_val.value = openedMenus.length + '\t' + openedMenus.join();

	setTimeout('updateDebug()', 100);

}