

var Mainmenu = {
		
	init: function(target)
	{
		var container = $(target);	
		// ul referenz	
		this.menu_target = container.find('ul:first-child');
		
		this.time_out = 200;
		this.a_over = false;
		this.do_mouse_out = false;
		
		if (!this.menu_target.length)
		{
				alert('Mainmenu: Target nicht gefunden!');
		}
		
		// links Referenz
		var li_items = this.menu_target.children('li');	
		this.a_items = li_items.find("a:first");
		
		this.ul_items = li_items.find("ul:first"); 


		// Aktive Links zweiter ebene holen
		var li_items_sub = this.ul_items.children('li');
		var a_items_sub = li_items_sub.find("a:first");
		var current_li_to_set = a_items_sub.filter(".active").parents("li:eq(1)");
		if(current_li_to_set.length)
		{
			current_li_to_set.find("a:first").addClass('active');
			//current_li_to_set.find("ul:first").addClass('show'); 
		}
		
		// Referenz aktueller li
		var current_li = this.a_items.filter(".active").parent("li:first");
		this.li_current = 	current_li.length ? current_li : false;	
		
		//console.log(this.li_current);
		
		
				
		// Color-Classen an li hizufügen
		this.addColorClass(li_items);
		
		
		// Aktuelle Untemenü zeigen
		var ul_sub_current = current_li ? this.getSubUlCurrent(current_li) : false;
		if (ul_sub_current){
				//ul_sub_current.removeClass("show");
				//ul_sub_current.slideDown();
				ul_sub_current.show();
		}		
		
		// mouseOver, mouseOut an Links binden
		this.a_items.bind("mouseover", function(){			
			//Mainmenu.onMouseOver(this);
		});
		
		this.a_items.bind("mouseout", function(){			
			Mainmenu.onMouseOut(this);
		});	
		
		// mouseOver, mouseOut an Links binden
		this.ul_items.bind("mouseover", function(){			
			Mainmenu.onUlMouseOver();
		});
		
		this.ul_items.bind("mouseout", function(){			
			Mainmenu.onUlMouseOut();
		});		
		
	},
	
	addColorClass: function(li_items)
	{
		var i, li_temp;
		
		for (i = 0 ; i < li_items.length ; i++)
		{
			li_temp = $(li_items[i]);			
			li_temp.addClass('navi_color_' + (i+1));
			
			// Linkfarbe für die Wesite definieren
			if (this.li_current[0] == li_items[i])
			{
				$('#row_3').find('a').addClass('navi_color_' + (i+1));
			}
		}
	},
	
	onMouseOver: function(a_elem)
	{		
		var ul_sub = this.getSubUl(a_elem);
		var li_current = this.li_current;
		var ul_sub_current = li_current ? this.getSubUlCurrent(li_current) : false;
		
		var is_active = $(a_elem).hasClass("active");
		
		if (ul_sub && !is_active)
		{	
		  // zuerst mouseOut
			this.do_mouse_out = true;
			this.doMouseOut();
				
			if (ul_sub_current){
				//ul_sub_current.removeClass("show");
				ul_sub_current.hide();
			}
			
			//ul_sub.addClass("show");
			//ul_sub.hide();
			//ul_sub.slideDown();
			ul_sub.show();
			
			this.a_over = a_elem;
			
			this.do_mouse_out = false;
		}
				
	},
	
	onUlMouseOver: function()
	{				
		this.do_mouse_out = false;				
	},
	
		
	doMouseOut: function()
	{
		
		var ul_sub = this.getSubUl(this.a_over);
		var li_current = this.li_current;
		var ul_sub_current = li_current ? this.getSubUlCurrent(li_current) : false;

		if (ul_sub && this.do_mouse_out)
		{
			
			if (ul_sub_current){
				//ul_sub_current.addClass("show");
				//ul_sub_current.slideDown(200);
				ul_sub_current.show();
			}
			
			
			//ul_sub.removeClass("show");
			//ul_sub.slideUp();
			ul_sub.hide();
			
			this.do_mouse_out = false;
		}
	},
	
	onMouseOut: function(a_elem)
	{

				
		var ul_sub = this.getSubUl(a_elem);		
		var is_active = $(a_elem).hasClass("active");
		
		if (ul_sub && !is_active)
		{	
			this.do_mouse_out = true;
			window.setTimeout(function(){
				Mainmenu.doMouseOut();												 
			}, this.time_out);

		}
		
	},	
	
	onUlMouseOut: function()
	{
			this.do_mouse_out = true;
			window.setTimeout(function(){
				Mainmenu.doMouseOut();												 
			}, this.time_out);
		
	},

	
	getSubUlCurrent: function(li_elem)
	{

		var ul_sub = $(li_elem).children("ul:first");
				
		if (ul_sub.length)
		{
			return ul_sub;
		}
		else
		{
			false;
		}
	},	
	
	getSubUl: function(a_elem)
	{

		var ul_sub = $(a_elem).parent("li:first").children("ul:first");
				
		if (ul_sub.length)
		{
			return ul_sub;
		}
		else
		{
			false;
		}
	}
	
}