function Menu()
	{
	
		this.current_menu = null;
		this.current_menu_bar_item = null;
		this.previous_menu = null;
		this.heights = {};
		this.widths = {};
		this.delayer = {};
		
		var menu_obj = this;
		
		$('.dhtml_submenu').each(function(i){
			
			menu_obj.heights[ this.id ] = $(this).height(); 
			menu_obj.widths[ this.id ] = $(this).width();
				
		});
		
		this.hideMenu = function()
		{
			$('.dhtml_submenu').hide();
			if(menu_obj.current_menu)
			{
				
				$(menu_obj.current_menu).hide();
				menu_obj.current_menu = null;
				$(menu_obj.current_menu_bar_item).toggleClass('top_menu_item_opened');
			}
			showSelects();			
			
		}
		
		this.showMenu = function(menu_item)
		{
			var id = menu_item.id;
			var _md5 = id.replace('menu_', '');
			var id = 'dhtml_' + _md5;
			var container_id = 'dhtml_submenu_container_' + _md5;
			
			if($('#' + id + ' .content').length == 0)
			{
				return;
			}
			
			if(menu_obj.timer)
			{
				clearTimeout(menu_obj.timer);
			}
			
			if(menu_obj.current_menu && menu_obj.current_menu == '#' + id)
			{	
				return;
			}
			
			
		
			menu_obj.hideMenu();
		
			
			
			
			menu_obj.current_menu_bar_item = '#' + menu_item.id;
			$(menu_obj.current_menu_bar_item).toggleClass('top_menu_item_opened');
			menu_obj.current_menu = '#' + id;
			

			hideSelects(container_id);
			
			
			var object = $(menu_item);
			$('#' + id)
				.css(
					{'top' : object.offset().top + object.height(), 'left' : object.offset().left - 4, 'width' : menu_obj.widths[ id ]}
				)
				.css({'overflow' : 'hidden'})
				.height(1)
				.show()
				.animate(
					{'height' : menu_obj.heights[ id ]},
					300,
					'easeOutQuad',
					function()
					{
						//nu dispareeau meniurile deschise anterior
						//asa ca le parcurg aici si incerc sa le inchid fortat
						//ca naiba !!
						$('.dhtml_submenu').each(function(){
							if(this.id != id)
							{
								$(this).hide();
							}
						});
					}
				);
		};
		
		$(document).click(
			function()
			{
				menu_obj.hideMenu();
			}
		);
		
		
		
		$('.top_menu_item, .top_menu_item_selected').hover(
			function(){//mouse over
				
				
				var menu_item = this;
				menu_obj.delayer[ menu_obj.current_menu ] = setTimeout(function(){menu_obj.showMenu( menu_item )}, 200);
				
				
			}, 
			function(){//mouse out
				
				
				clearTimeout(menu_obj.delayer[ menu_obj.current_menu ]);
				
				menu_obj.timer = setTimeout(
					function(){
						menu_obj.hideMenu();
					}, 1000
				);
				
				
			}
		);
		
		$('.dhtml_submenu').hover(
			function()
			{
				clearTimeout(menu_obj.timer);
				//window.status++;
			},
			function()
			{
				menu_obj.timer = setTimeout(
					function(){
						menu_obj.hideMenu();
					}, 3000
				);
			}
		);
	}
	$(document).ready(
		function()
		{
			new Menu();	
		}
	);
	
	
	
function hideSelects(divId) {

	
	if (!$.browser.msie)
	{
		return false;
	}
		
	
		
	var divObject = document.getElementById(divId);
	if (divObject == null)
		return false;

	
	
	showSelects();
 
	var x1 = $(divObject).offset().left;
	var x2 = x1 + $(divObject).width();
	var y1 = $(divObject).offset().top;
	var y2 = y1 + $(divObject).height();
	  
	var ccx1 = 0;
	var ccx2 = 0;
	var ccy1 = 0;
	var ccy2 = 0;
	
	  
	
	//we now have the menu div coords
	var tags = new Array("applet", "iframe", "select");
	if (($.browser.msie) && ($.browser.version < 7))
	for (var k = tags.length; k > 0; ) {
		var ar = document.getElementsByTagName(tags[--k]);
		var cc = null;
		for (var i = ar.length; i > 0;) {
			cc = ar[--i]; //this is the element we must check
			ccx1 = $(cc).offset().left;
			ccx2 = ccx1 + cc.offsetWidth;
			ccy1 = $(cc).offset().top;
			ccy2 = ccy1 + cc.offsetHeight;
	
			
			if (
				(
					((ccx1 >= x1)&&(ccx1 <= x2))
					||
					((ccx2 >= x1)&&(ccx2 <= x2))
					||
					((x1 >= ccx1)&&(x1 <= ccx2))
					||
					((x2 >= ccx1)&&(x2 <= ccx2))
				)
				&&
				(
					((ccy1 >= y1)&&(ccy1 <= y2))
					||
					((ccy2 >= y1)&&(ccy2 <= y2))
					||
					((y1 >= ccy1)&&(y1 <= ccy2))
					||
					((y2 >= ccy1)&&(y2 <= ccy2))
				)
			) {
				//alert ('Colision with: '+cc.name);
				cc.style.visibility = "hidden";
				cc.setAttribute('hiddenByF', true);
			}
		}
	}
  return false;
}

function showSelects(){
	var tags = new Array("applet", "iframe", "select");
    var isHidden = false;
    if (($.browser.msie) && ($.browser.version < 7))
  	for (var k = tags.length; k > 0; ) {
		var ar = document.getElementsByTagName(tags[--k]);
		var cc = null;
		for (var i = ar.length; i > 0;) {
			cc = ar[--i]; //this is the element we must check
			isHidden = cc.getAttribute('hiddenByF');
			if (isHidden == true) {
				cc.style.visibility = "visible";
				cc.setAttribute('hiddenByF', false);
			}
		}
	}
}
