var menuHoverClassName = 'menuHover';
var textNormalColor = 'white';
var textHighlightedColor = 'white';

var	isOpera = false;
var	isIE	= false;

var	agt = navigator.userAgent.toLowerCase();

if ( agt.indexOf("opera") != -1 )
	isOpera = true;
if ( agt.indexOf("msie") != -1 )
	isIE = true;


window.onload = function()
{
	menuSetup(document.getElementById('menu'));
	document.getElementById('menu').style.display = 'block';
	try
	{
		setFocus();
	}
	catch ( e )
	{}
}

var	deselectMenu;
var	numOfHideEvent = -1;
var numOfDeselectEvent = -1;
var	lastIsOnMouseOut = false;

var	lastOpenedMenu		= null;
var lastSelectedMenu	= null;

var	SubmenuTimeout	= 500;
var	DeselectTimeout	= 5;


function MenuDeselectTimeout()
{
	if ( !numOfDeselectEvent )
		if ( lastIsOnMouseOut )
		{
			// optimizacija - nije nuzno
			if ( !getLevel(deselectMenu.id) )
				lastSelectedMenu = null;	
			deselectMenu.style.background = 'none';
			textDeHighlight(deselectMenu);
		}
	
	numOfDeselectEvent--;
}


function SubmenuHideTimeout()
{
	if ( !numOfHideEvent && lastIsOnMouseOut && lastOpenedMenu )
	{
		var	level	= getLevel(lastOpenedMenu.id);
		var	offset	= lastOpenedMenu.id.length;

		for ( i = 0;	i < level + 1;	i++ )
		{
			document.getElementById(lastOpenedMenu.id.substr(0, offset)).style.display = 'none';
			document.getElementById('M' + lastOpenedMenu.id.substr(0, offset).substr(1)).style.background = 'none';
			textDeHighlight(document.getElementById('M' + lastOpenedMenu.id.substr(0, offset).substr(1)));
			offset = lastOpenedMenu.id.substr(0, offset).lastIndexOf('_');
		}
		
		lastOpenedMenu	= null;
	}
	
	numOfHideEvent--;
}


function menuSetup(object, recursionDepth, parentName)
{
	var firstChild		= true;
	var objectLastChild = null;
	var	i, j = 0;
	var	name;

	
	if ( recursionDepth == null )
		recursionDepth = 0;
	
	for ( i = 0;	i < object.childNodes.length;	i++ )
	{
		if ( object.childNodes[i].nodeName == 'LI' && object.childNodes[i].className != 'title' )
		{
			if ( firstChild )
				firstChild = false;
			
			object.childNodes[i].onmouseover	= mOMOver;
			

			object.childNodes[i].onclick		= mOMClick;

			objectLastChild = object.childNodes[i];
			
			if ( parentName == null )
				name = 'M' + j;
			else
				name = parentName + '_' + j;

			object.childNodes[i].id = name;
			
			menuSetup(object.childNodes[i], recursionDepth + 1, name);
			j++;
		}
		else if ( object.childNodes[i].nodeName == 'UL' )
		{
			object.childNodes[i].id = 'S' + parentName.substr(1);
			object.childNodes[i].style.display = 'none';
			menuSetup(object.childNodes[i], recursionDepth, parentName);
		}
	}
	
	// CSS bugfix
	if ( objectLastChild )
		;//objectLastChild.style.borderBottom = "3px outset #fF0000";
}


function getLevel(menu)
{
	var	offset	= 0;
	var level	= 0;
	var	index;
	
	while ( true )
	{
		index = menu.substr(offset).indexOf('_');
		if ( index == -1 )
			break;
		offset += index + 1;
		level++;
	}
	return	level;
}


function textHighlight(object)
{
	var	i;
	for ( i = 0;	i < object.childNodes.length;	i++ )
		if ( object.childNodes[i].nodeName == 'A' )
		{
			if ( object.childNodes[i].className == 'title' )
				return ;
			
			object.childNodes[i].style.color = textHighlightedColor;
			object.childNodes[i].className = menuHoverClassName;
		}
}


function textDeHighlight(object)
{
	var	i;
	for ( i = 0;	i < object.childNodes.length;	i++ )
		if ( object.childNodes[i].nodeName == 'A' )
		{
			if ( object.childNodes[i].className == 'title' )
				return ;

			object.childNodes[i].style.color = textNormalColor;
			object.childNodes[i].className = '';
		}
}



function mOMOver(e)
{
	this.onmouseout = mOMOut;
	lastIsOnMouseOut = false;

	if (!e)
		var e = window.event;
	
	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();
	
	if ( lastSelectedMenu )
	{
		if ( lastSelectedMenu == this )
		{
			textHighlight(this);
			lastIsOnMouseOut = false;
			return	;
		}
		
		var childOperaBF = false;
		var parentOperaBF = false;
		
		if ( this.id.indexOf(lastSelectedMenu.id) != -1 )
			childOperaBF = true;
		else if ( lastSelectedMenu.id.indexOf(this.id) != -1 )
		{
			parentOperaBF = true;
			lastSelectedMenu.style.background = "none";
			textDeHighlight(lastSelectedMenu);
		}
		else
		{
			var lastLevel	= getLevel(lastSelectedMenu.id);
			var level		= getLevel(this.id);
			var	offset		= lastSelectedMenu.id.length;
			
			for ( i = 0;	i < lastLevel - level + 1;	i++ )
			{
				document.getElementById(lastSelectedMenu.id.substr(0, offset)).style.background = 'none';
				textDeHighlight(document.getElementById(lastSelectedMenu.id.substr(0, offset)));
				offset = lastSelectedMenu.id.substr(0, offset).lastIndexOf('_');
			}
	
			if ( lastOpenedMenu )
			{
				var	lastMenuBlockLevel	= getLevel(lastOpenedMenu.id);
				offset = lastOpenedMenu.id.length;
				
				for ( i = 0;	i < lastMenuBlockLevel - level + 1;	i++ )
				{
					document.getElementById(lastOpenedMenu.id.substr(0, offset)).style.display = 'none';
					offset = lastOpenedMenu.id.substr(0, offset).lastIndexOf('_');
				}
				
				if ( level )
					lastOpenedMenu = document.getElementById('S' + this.id.substr(0, this.id.lastIndexOf('_')).substr(1));
				else
					lastOpenedMenu = null;
			}
		}
	}

	var objectName	= this.id;
	var	index		= objectName.lastIndexOf('_');
	
	
	lastSelectedMenu = this;
	textHighlight(this);

	if ( isOpera )
	{
		if ( childOperaBF )
		{
			document.getElementById(this.id.substr(0, this.id.lastIndexOf('_'))).style.background	= "none";
			document.getElementById(this.id.substr(0, this.id.lastIndexOf('_'))).style.background	= "url('" + fHighlight + "')";
		}
		else if ( parentOperaBF )
		{
			this.style.background = "none";
			this.style.background = "url('" + fHighlight + "')";
		}
	}

	 
	for ( i = 0;	i < this.childNodes.length;	i++ )
	{
		if ( this.childNodes[i].nodeName == 'UL' )
		{
			if ( !lastOpenedMenu )
				lastOpenedMenu = this.childNodes[i];
			else
			{
				if ( lastOpenedMenu.id.indexOf(this.childNodes[i].id) == -1 )
					lastOpenedMenu = this.childNodes[i];
			}
			
			this.childNodes[i].style.display = 'block';
			break	;
		}
	}
}







function mOMClick(e)
{
	if (!e)
		var e = window.event;
	
	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();

	if ( e.ctrlKey )
	{
		for ( i = 0;	i < this.childNodes.length;	i++ )
			if ( this.childNodes[i].nodeName == 'A' )
			{
				for ( j = 0;	j < this.childNodes[i].childNodes.length;	j++ )
				{
					if ( this.childNodes[i].childNodes[j].nodeName == 'IMG' )
					{
						if ( this.childNodes[i].childNodes[j].getAttribute('name') == 'normSel' )
						{
							this.childNodes[i].removeChild(this.childNodes[i].childNodes[j]);
							updateChildren(this, 1);
							return	false;	// ne izlucivati!!!
						}
						else if ( this.childNodes[i].childNodes[j].getAttribute('name') == 'childSel' )
						{
							updateChildren(this, 1);
							updateThisUpLevels(this, 1);
							return	false;	// ne izlucivati!!!
						}
					}
				}
				
				
				
				var	selected	= document.createElement('IMG');
				if ( isIE )
				{
					selected.src = 'blank.gif';
					selected.style.filter	= "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + fSelected + "')";
				}
				else
					selected.src	= fSelected;

				selected.className	= 'marker';
				selected.setAttribute('name', 'normSel');
				
				this.childNodes[i].appendChild(selected);
				updateChildren(this, 0);
				updateThisUpLevels(this, 0);
				break;
			}
			
		return	false;
	}
	else	
		return	true;
}


function mOMOut(e)
{
	if (!e)
		var e = window.event;
	
	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();
	
	numOfHideEvent++;
	numOfDeselectEvent++;
	
	deselectMenu = this;
	lastIsOnMouseOut = true;

	setTimeout('SubmenuHideTimeout()',	SubmenuTimeout);
	setTimeout('MenuDeselectTimeout()',	DeselectTimeout);
	
	this.onmouseout = null;
}

