
function getTopMenu (arrMainMenu, arrSingleMenu, dbMenu)
{
	
	this.arrMainMenu = arrMainMenu;
	this.arrSingleMenu = arrSingleMenu;
	this.dbMenu = dbMenu;
	this.active;
	this.browser;
	this.activeNav;
	this.activeSubmenu;
	this.activeSubmenu_b;
	this.ext = 'png';
	
	if (navigator.userAgent.indexOf('Chrome') != -1) 
	{
		this.browser = 'chrome';
	}
	else if ($.browser.opera && parseInt ($.browser.version) < 9.26) 
	{ 
		this.browser = 'opera_old';
	}
	else if ($.browser.safari) 
	{
		this.browser = 'safari';
	}
	else if ($.browser.msie && $.browser.version >= 7) 
	{
		this.browser = 'msie';
	}
	else if ($.browser.msie &&  $.browser.version < 7) 
	{
		this.browser = 'msie6';
		this.ext = 'gif';
	}
	else if (navigator.userAgent.indexOf('Firefox') != -1) 
	{
		this.browser = 'ff';
	}
	else if (navigator.userAgent.indexOf('Firefox') != -1 && navigator.userAgent.indexOf('Firefox/3') != -1) 
	{
		this.browser = 'ff3';
	}
	
	this.str_replace = function (search, replace, subject)
	{
		return subject.split(search).join(replace);
	}

	this.in_array = function (array, value) 
	{
		for (var j = 0; j < array.length; j++)
			if( array[j] == value )
				return true;
		return false;
	}

	this.getSubmenu = function (id)
	{
		// offene menüs/submenüs schließen
		this.closeSubmenus();
		this.cancelPassiveMenu();
		this.passiveMenu (this.activeNav);
		for (var i = 0; i < this.arrMainMenu.length; i++)
		{
			if ('a_' + this.arrMainMenu[i] != id)
			{
				$("#a_" + this.arrMainMenu[i]).removeClass("active_item");
			}
		}

		var sid = this.str_replace ('a_','',id);
		var yleft = 1;
		var ywidth = -1;
		if (sid == 1)
		{
			yleft = 0;
			ywidth = 0;
		}

		var xtop = 0;
		var xleft = 0;
		var xheight = 0;
		
		var submenu_1 = '';
		var width = $("#" + id).width();
		var height = $("#" + id).height();
		var top = $("#" + id).offset().top;
		var left = $("#" + id).offset().left;
		$("#submenu_1").css({ top: (top + height + xheight + xtop) + "px", left: (left + xleft + yleft) + "px", width: (width + ywidth) + 'px' });
		
		// untermenüpunkte ermitteln und einblenden
		var where = new Array('sub_level', '==', '1');
		var and = new Array('parent_id', '==', sid);
		var items = this.dbMenu.selectRow(where, and, false);
		for( var i=0; i < items.length; i++ )
		{
			submenu_1 += '<div class="submenu" id="div_' + items[i].element_id + '"><a class="' + items[i].classname + '" href="' + items[i].href + '" target="' + items[i].target + '" id="a_' + items[i].element_id + '" onmouseover="topmenu.cancelPassiveMenu(); topmenu.getSubmenu2(this.id);" onmouseout="topmenu.outMenu(\'a_' + items[i].parent_id + '\', this.id)">' + items[i].text + '</a></div>';
		}
		
		$("#" + id).addClass("active_item");
		submenu_1+= '<div class="fl_l"><img src="css/navigation/images/bl.' + this.ext + '" alt=""></div>';
		submenu_1+= '<div class="submenu_1_line"></div>';
		submenu_1+= '<div class="fl_l"><img src="css/navigation/images/br.' + this.ext + '" alt=""></div>';
		submenu_1+= '<div class="clear"></div>';
		$('#submenu_1').html(submenu_1);
		var width = $("#submenu_1").width();
		$("div").each(function(i){
			if (this.className == 'submenu_1_line')
			{
				$(this).css({ width: (width - 10) + "px" });
			}
		});
		$("#submenu_1").show();
		var top = $("#submenu_1").offset().top;
		var left = $("#submenu_1").offset().left;
		var height = $("#submenu_1").height();
		$("#subframe1").css({ top: top + 'px', left: left + 'px', width: width + 'px', height: height + 'px' });
		if (this.browser == 'ff')
		{
			$("#subframe1").show();
		}
		
	}
	
	this.getSubmenu2 = function (id)
	{
		// alle submenu 1 normal colorieren
		$("a").each(function(i){
			if (this.className == 'active_sub_menu')
			{
				$(this).removeClass("active_sub_menu");
				$(this).css("color", "#e8e8e8");
			}
		});
		// active submenu 1 colorieren
		$("#" + id).addClass("active_sub_menu");
		$("#" + id).css("color", "#41bed2");
		// offenes submenü2 schließen
		$("#subframe2").hide();
		$("#submenu_2").hide();
		$("#submenu_2").empty();

		// position des submenüpunktes ermitteln und submenü2 entsprechend positionieren
		var xwidth = 2;
		var xtop = 1;
		var xheight = 22;

		var width = $("#submenu_1").width();
		var top = $("#" + id).offset().top;
		var left = $("#" + id).offset().left;
		$("#submenu_2").css({ top: (top - xtop) + "px", left: (left - xwidth + 1 + width) + "px" });
		
		var submenu_2 = '';
		// untermenüpunkte ermitteln und einblenden
		var where = new Array('sub_level', '==', '2');
		var and = new Array('parent_id', '==', this.str_replace('a_','',id));
		var items = this.dbMenu.selectRow(where, and, false);
		if (items.length > 0)
		{
			submenu_2+= '<div class="fl_l"><img src="css/navigation/images/tl.' + this.ext + '" alt=""></div>';
			submenu_2+= '<div class="submenu_2_line"></div>';
			submenu_2+= '<div class="fl_l"><img src="css/navigation/images/tr.' + this.ext + '" alt=""></div>';
			submenu_2+= '<div class="clear"></div>';
		}
		for( var i=0; i < items.length; i++ )
		{
			submenu_2 += '<div class="submenu" id="div_' + items[i].element_id + '"><a rel="sub2" class="' + items[i].classname + '" href="' + items[i].href + '" target="' + items[i].target + '" id="a_' + items[i].element_id + '" onmouseover="topmenu.cancelPassiveMenu(\'' + items[i].parent_id + '\');" onmouseout="topmenu.outMenu(\'a_' + items[i].parent_id.substr(0,1) + '\', false)">' + items[i].text + '</a></div>';
		}

		if (items.length > 0)
		{
			submenu_2+= '<div class="fl_l"><img src="css/navigation/images/bl.' + this.ext + '" alt=""></div>';
			submenu_2+= '<div class="submenu_2_line"></div>';
			submenu_2+= '<div class="fl_l"><img src="css/navigation/images/br.' + this.ext + '" alt=""></div>';
			submenu_2+= '<div class="clear"></div>';
			$('#submenu_2').html(submenu_2);
			var width = $("#submenu_2").width();
			$('#submenu_2').css({ width: (width) + "px" });
			$("div").each(function(i){
				if (this.className == 'submenu_2_line')
				{
					$(this).css({ width: (width - 10) + "px" });
				}
			});
			$("#submenu_2").show();
			var top = $("#submenu_2").offset().top;
			var left = $("#submenu_2").offset().left;
			var height = $("#submenu_2").height();
			$("#subframe2").css({ top: top + 'px', left: left + 'px', width: width + 'px', height: height + 'px' });
			if (this.browser == 'ff')
			{
				$("#subframe2").show();
			}
		}
	}
	
	this.outMenu = function (parent_id, id)
	{
		// highlight von submenü 1 entfernen
		if (id)
		{
			this.activeSubmenu = eval("window.setTimeout(\"$('#" + id + "').css('color', '#e8e8e8');\", 70);");
			this.activeSubmenu_b = eval("window.setTimeout(\"$('#" + id + "').removeClass('active_sub_menu');\", 70);");
		}
		// single besitzt keine submenüs
		var sid =  this.str_replace ('a_','',parent_id);

		this.active = eval ("window.setTimeout(\"topmenu.passiveMenu('" + parent_id + "');\", 300);");
	}
	
	this.passiveMenu = function (id)
	{
		// offene submenüs schließen
		this.closeSubmenus();
		
		// klasse entfernen
		$("#" + id).removeClass("active_item");

	}
	
	this.cancelPassiveMenu = function (id)
	{
		if (id)
		{
			// active submenu 1 colorieren
			$("#a_" + id).addClass("active_sub_menu");
			$('#a_' + id).css('color', '#41bed2');
			window.clearTimeout(this.activeSubmenu);
			window.clearTimeout(this.activeSubmenu_b);
		}
		window.clearTimeout(this.active);
	}
	
	this.closeSubmenus = function ()
	{
		$("#subframe1").hide();
		$("#subframe2").hide();
		$("#submenu_1").hide();
		$("#submenu_2").hide();
		$("#submenu_1").empty();
		$("#submenu_2").empty();
	}
	
	// db initialisieren
	this.init = function ()
	{
		
		var el = document.getElementById('initTopmenu').getElementsByTagName('*');
		for (var i = 0; i < el.length; i++)
		{
			if (el[i].tagName.toLowerCase() == 'a')
			{
				var strNum = this.str_replace('a_', '', el[i].id);
				var arrNum = strNum.split('_');
				if (arrNum.length > 2) 
				{
					var sub_level = 2;
					var parent_id = arrNum[0] + '_' + arrNum[1];
				}
				else
				{
					var sub_level = 1;
					var parent_id = arrNum[0];
				}
				var data = new Array(arrNum.join('_'), sub_level, parent_id, el[i].firstChild.data, el[i].href, el[i].className, el[i].target);
			//	alert (data.join(' - '));
				this.dbMenu.insertRow(data);
			}
		}
		$("#initTopmenu").empty();
	}
	
}