var ani = {
	addEvent: function(elm, evType, fn, useCapture)
	{
		if( elm.addEventListener )
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		}
		else if( elm.attachEvent )
		{
			var r = elm.attachEvent('on'+ evType, fn);
			return r;
		}
		else
			elm['on'+ evType] = fn;
	},
	
	init: function()
	{
		var main_menu = document.getElementById('main_menu');
		var main_divs = main_menu.getElementsByTagName('div');
		var sub_menu_container = document.getElementById('sub_menu_container');
		
		var el = main_menu;
		for (var y = 0; el != null; y += el.offsetTop, el = el.offsetParent);
		ani.hide_pos = y;
		sub_menu_container.style.top = y +'px';

		for( var i = 0; i < main_divs.length; i++)
		{
			div = main_divs[i];
			if( div.className == "main_item" )
			{
				var link = div.getElementsByTagName('a')[0];
				ani.links.push(link);
				ani.addEvent(link, 'click', ani.clicked, false);
			}
		}
		
		ani.show_pos = y + ani.links[1].parentNode.offsetHeight;
		
		for( var i = 1; i < ani.links.length; i++ )
		{
			var parent = ani.links[i].parentNode;
			var div = parent.getElementsByTagName('div')[0];
			
			ani.links[i].id = "main_item_"+ i;
			
			if( typeof(div) != 'undefined' )
			{
				var sub_links = div.getElementsByTagName('a');
				
				for( var j = 0; j < sub_links.length; j++ )
				{
					sub_links[j].id = "sub_item_"+ i +"_"+ (j + 1);
					if( sub_links[j].href && sub_links[j].href != "#" )
					{
						if( sub_links[j].href.indexOf('?') == -1 )
							sub_links[j].href += "?menu=_"+ i +"_"+ (j + 1);
						else
							sub_links[j].href += "&menu=_"+ i +"_"+ (j + 1);
					}
				}
				
				sub_menu_container.appendChild(div);
				div.style.display = 'block';
				div.style.top = y +'px';
				
				ani.links[i].sub_menu = div;
				ani.links[i].sub_state = 'none';
			}
			else
			{
				if( ani.links[i].href && ani.links[i].href != "#" )
				{
					if( ani.links[i].href.indexOf('?') == -1 )
						ani.links[i].href += "?menu=_"+ i;
					else
						ani.links[i].href += "&menu=_"+ i;
				}

				ani.links[i].sub_menu = "";
				ani.links[i].sub_state = 'none';
			}
		}
		setInterval(ani.move, 25);
		ani.highlight();
	},
	
	clicked: function(e)
	{
		var link;
		if( e && e.target )
			link = e.target;
		if( window.event && window.event.srcElement )
			link = window.event.srcElement;
		if( !link )
			return;
			
		if( link.nodeType == 3 )
			link = link.parentNode;
		
		if( link.sub_state != 'full' )
		{
			link.sub_state = 'showing';
			link.className = 'main_item_selected';
			for( var i = 1; i < ani.links.length; i++ )
			{
				if(ani.links[i].sub_state == "full")
				{
					ani.links[i].sub_state = "hiding";
					ani.links[i].className = 'main_item';
				}
			}
		}
	},
	
	move: function()
	{
		for( var i = 1; i < ani.links.length; i++ )
		{
			var link = ani.links[i];
			if( link.sub_state == 'none' || link.sub_state == 'full' )
				continue;
				
			var div = link.sub_menu;
				
			var height = parseInt(div.style.top);
			if( isNaN(height) )
				height = 0;
				
			if( link.sub_state == 'showing' )
			{
				height += 2;
				if( height >= ani.show_pos )
					link.sub_state = 'full';
			}
			else
			{
				height -= 2;
				if( height <= ani.hide_pos )
					link.sub_state = 'none';
			}
			div.style.top = height +'px';
		}
	},
	
	highlight: function()
	{
		if( typeof(ani.mi) != "undefined" )
		{
			document.getElementById('main_item_'+ ani.mi).className = "main_item_selected";
			ani.links[ani.mi].sub_state = "showing";
			if( typeof(ani.si) != "undefined" && document.getElementById('sub_item_'+ ani.mi +'_'+ ani.si) )
			{
				document.getElementById('sub_item_'+ ani.mi +'_'+ ani.si).className = "sub_item_selected";
			}
		}
	},
	
	hide_pos: "",
	show_pos: "",
	mi: "",
	si: "",
	links: ['empty']
}

ani.addEvent(window, 'load', ani.init, false);
