var ACTIVATE_TIMEOUT = 5;
var ACTIVATE_CHILD_TIMEOUT = 250;
//var ACTIVATE_SIBLING_TIMEOUT = 200;
var DEACTIVATE_TIMEOUT = 500;
var DEACTIVATE_CHILD_TIMEOUT = 200;

var RETRY_TIMEOUT = 5;


var showing = null, locked = false;


function getPageOffsetLeft(elem) {
  var x = elem.offsetLeft;
  if (elem.offsetParent) x += getPageOffsetLeft(elem.offsetParent);
  return x;
}

function getPageOffsetTop(elem) {
  var y = elem.offsetTop;
  if (elem.offsetParent) y += getPageOffsetTop(elem.offsetParent);
  return y;
}





function MenuBar_activate(mid, isTitle) {
	if (isNaN(mid))
		for (i = 0; i<this.childMenuList.length; i++)
			if (this.childMenuList[i].name && this.childMenuList[i].name==mid) {
				mid = i;
				break;
			}
	
	if (locked) {
		window.setTimeout(this.name +".activate("+ mid +", "+ isTitle +")", RETRY_TIMEOUT);
		return;
	}
	
	var menu = this.childMenuList[mid];
	
	menu.resetHideTimer();
	
	if (showing==null) {
		menu.show(isTitle);
	}
	else if (showing!=menu) {
		if (!showing.isRelated(menu)) showing.queueHide(ACTIVATE_TIMEOUT);
		if (menu.parentMenu) menu.queueShow(ACTIVATE_CHILD_TIMEOUT, isTitle);
		else menu.queueShow(ACTIVATE_TIMEOUT, isTitle);
	}
}

function MenuBar_deactivateAfter(menu, time, isTitle) {
	menu.queueHide(time, isTitle);
}

function MenuBar_deactivate(mid, isTitle) {
	if (isNaN(mid)) {
		for (i = 0; i<this.childMenuList.length; i++)
			if (this.childMenuList[i].name && this.childMenuList[i].name==mid) mid = i;
	}
	
	if (locked) {
		window.setTimeout(this.name +".deactivate("+ mid +")", RETRY_TIMEOUT);
		return;
	}
	
	var menu = this.childMenuList[mid];
	
	if (isTitle) menu.queueHide(DEACTIVATE_TIMEOUT);
	else menu.queueHide(DEACTIVATE_CHILD_TIMEOUT);
}




function MenuBar_renderMenuBar() {
	var output = "<div class=\"menuBar\" style=\"width:100%\">"+
			"<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"+
			"<tr>\r\n";

	for (var i=0; i<this.items.length; i++) {
		var menu = this.items[i];
		output += "<td><a id=\"menu"+ (menu.name ? menu.name : menu.id) +"Title\" ";
		
		if (menu.href) output += "href=\""+ menu.href +"\"";
		else output += "href=\"#\" onClick=\"return false;\"";
		
		output += " onMouseover=\""+ this.name +".activate("+ menu.id +",true);\" onMouseout=\""+ this.name +".deactivate("+ menu.id +",true)\">"+
				menu.title +"<\/a><\/td>\r\n";
	}
	
	output += "<\/tr><\/table><\/div>\r\n";
		
	return output;
}

function MenuBar_renderMenus() {
	var output = "";
	for (var i=0; i<this.items.length; i++) output += this.items[i].renderAsHTML();
	return output;
}

function MenuBar_addMenu(menu) {
	if (!menu) return;
	menu.parentBar = this;
	this.items[this.items.length] = menu;
}

function MenuBar_finalize() {
	this.activate = MenuBar_activate;
	this.addMenu = null;
	this.deactivate = MenuBar_deactivate;
	this.finalize = null;
	this.renderMenuBar = MenuBar_renderMenuBar;
	this.renderMenus = MenuBar_renderMenus;
	
	for (var i=0; i<this.items.length; i++) {
		var menu = this.items[i];
		menu.finalize();
		this.childMenuList[this.childMenuList.length] = menu;
		this.childMenuList = this.childMenuList.concat(menu.childMenuList);
	}
	
	for (var i=0; i<this.childMenuList.length; i++) this.childMenuList[i].id = i;

}


function MenuBar(barName) {
	this.childMenuList = new Array();
	this.items = new Array();
	this.name = barName;
	
	this.addMenu = MenuBar_addMenu;
	this.finalize = MenuBar_finalize;
}






function Menu_renderAsHTML() {
	var output = "", suboutput = "";
	
	output = "<div id=\"menu"+ this.id +"\" class=\"menu\" style=\"position:absolute;visibility:hidden;z-index:10001;\" "+
			"onMouseover=\""+ this.getParentBar().name +".activate("+ this.id +",true)\" "+
			"onMouseout=\""+ this.getParentBar().name +".deactivate("+ this.id +",true)\">"+
			"<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n";
	
	for (var i=0; i<this.items.length; i++) {
		var item = this.items[i];
		output += "<tr><td>";
		
		if (item.isSeparator == true) {
			if (document.all) output += "<span class=\"separator\">"+ item.title +"<\/div>";
			else output += "<div class=\"separator\">"+ item.title +"<\/div>";
		} else {
			
			if (item.childMenu) {
				output += "<a id=\"menu"+ item.childMenu.id +"Title\" ";
				
				if (item.href) output += "href=\""+ item.href +"\"";
				else output += "href=\"#\" onClick=\"this.blur();return false;\"";
				
				output += " onMouseover=\""+ this.getParentBar().name +".activate("+ item.childMenu.id +",false)\" "+
						"onMouseout=\""+ this.getParentBar().name +".deactivate("+ item.childMenu.id +",false)\">"+
						"<span class=\"menuText\">"+ item.title +"<\/span><span class=\"menuArrow\"";
						
				if (document.all) output += " style=\"font-family:Webdings;font-size:14px;\">4<\/span><\/a>";
				else output += " style=\"font-size:11px;\">&#9654;<\/span><\/a>";
				
				suboutput += item.childMenu.renderAsHTML();
			} else {
				output += "<a href=\""+ item.href +"\">"+ item.title +"<\/a>";
			}
		}
		
		output += "<\/td><\/tr>\r\n";
	}
	
	output += "<\/table><\/div>\r\n\r\n" + suboutput;
	return output;
}

function Menu_addChildMenu(menu) {
	if (!menu) return;
	var item = new MenuItem(menu.title, menu.href);
	item.childMenu = menu;
	this.addMenuItem(item);
	menu.parentMenu = this;
}

function Menu_addMenuItem(item) {
	if (!item) return;
	item.parentMenu = this;
	this.items[this.items.length] = item;
}

function Menu_addSeparator(title) {
	if (title!=null) this.addMenuItem(new MenuItem("-", title));
	else this.addMenuItem(new MenuItem("-"));
}

function Menu_getParentBar() {
	var menu = this;
	while (menu.parentMenu) menu = menu.parentMenu;
	return menu.parentBar;
}

function Menu_resetShowTimer() {
	if (this.showTimer!=null) window.clearTimeout(this.showTimer);
	this.showTimer = null;
	if (this.parentMenu) this.parentMenu.resetShowTimer();
}

function Menu_resetHideTimer() {
	if (this.hideTimer!=null) window.clearTimeout(this.hideTimer);
	this.hideTimer = null;
	if (this.parentMenu) this.parentMenu.resetHideTimer();
}

function Menu_init() {
	var depMenu = this.Depiction = document.getElementById("menu"+ this.id);
	var depTitle = this.DepictionTitle = document.getElementById("menu"+ (this.name ? this.name : this.id) +"Title");
	
	var x = getPageOffsetLeft(depTitle);
	var y = getPageOffsetTop(depTitle) + depTitle.offsetHeight - 1;
	
	if (this.parentMenu) {
		x += depTitle.offsetWidth;
		y -= depTitle.offsetHeight;
	} else if (document.all) {	// && parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE") +4))<=5.01) {
		x -= (getPageOffsetLeft(depTitle) - getPageOffsetLeft(depTitle.offsetParent));
	}
	
	var depTable = depMenu.getElementsByTagName("table")[0];
	var anti_IE_bug = depTable.offsetWidth;
	
	if (depTitle.offsetWidth>depMenu.offsetWidth && this.parentMenu == null) {
		var padding = depMenu.offsetWidth - depTable.offsetWidth;
		depTable.style.width = (depTitle.offsetWidth-padding) + "px";
	}
	
	
	var itemList = depMenu.getElementsByTagName("a");
	
	if (itemList.length>0) {
		if (document.all) {
			var tableWidth = depTable.offsetWidth +"px";
			for (i=0; i<itemList.length; i++) {
				anti_IE_bug = itemList[i].offsetWidth;
				itemList[i].style.width = tableWidth;
			}
		}
		
		var itemWidth = itemList[0].offsetWidth;
		for (i=0; i<itemList.length; i++) {
			var spanText = null, spanArrow = null;
			spanList = itemList[i].getElementsByTagName("span");
			
			for (j=0; j<spanList.length; j++) {
				if (spanList[j].className == "menuArrow") spanArrow = spanList[j];
				else if (spanList[j].className == "menuText") spanText = spanList[j];
			}
			
			if (!document.all && spanText && spanArrow)
				spanText.style.paddingRight = (itemWidth - (depTable.offsetWidth - itemList[i].offsetWidth) - (spanText.offsetWidth + spanArrow.offsetWidth)) + "px";
		}
	}
	
	depMenu.style.left = x + "px";
	depMenu.style.top  = y + "px";
}

function Menu_show(hltitle) {
	if (this.items.length==0) return;
	
	if (!this.Depiction) {
		locked = true;
		this.init();
		window.setTimeout(this.getParentBar().name +".childMenuList["+ this.id +"].show("+ hltitle +")", RETRY_TIMEOUT);
		return;
	}
	
	if (hltitle && this.DepictionTitle) this.DepictionTitle.className = "activeTitle";
	
	this.Depiction.style.visibility = "visible";
	
	if (document.getElementById && document.getElementById("hide_on_menu_show"))
		document.getElementById("hide_on_menu_show").style.visibility = "hidden";
	
	showing = this;
	locked = false;
}

function Menu_queueShow(time, hltitle) {
	this.resetShowTimer();
	this.resetHideTimer();
	this.showTimer = window.setTimeout(this.getParentBar().name +".childMenuList["+ this.id +"].show("+ hltitle +")", time);
	if (this.parentMenu) this.parentMenu.queueShow(time+50, hltitle);
}

function Menu_hide() {
	if (this.items.length==0) return;
	
	if (this.Depiction) {
		if (this.DepictionTitle) this.DepictionTitle.className = "";
		this.Depiction.style.visibility = "hidden";
		if (!this.parentMenu && document.getElementById && document.getElementById("hide_on_menu_show"))
			document.getElementById("hide_on_menu_show").style.visibility = "visible";
		
		this.hideTimer = null;
		showing = null;
	}
}

function Menu_queueHide(time) {
	this.resetShowTimer();
	this.resetHideTimer();
	this.hideTimer = window.setTimeout(this.getParentBar().name +".childMenuList["+ this.id +"].hide()", time);
	if (this.parentMenu) this.parentMenu.queueHide(time+50);
}

function Menu_isRelated(tomenu) {
	for (var i=0; i<this.childMenuList.length; i++)
		if (this.childMenuList[i]==tomenu) return true;
	
	for (var i=0; i<tomenu.childMenuList.length; i++)
		if (tomenu.childMenuList[i]==this) return true;
		
	return false;
}

function Menu_isSibling(tomenu) {
	if (this.parentMenu!=null && this.parentMenu==tomenu.parentMenu) return true;
	else return false;
}

function Menu_finalize() {
	this.addMenuItem = null;
	this.addChildMenu = null;
	this.addSeparator = null;
	this.finalize = null;
	this.getParentBar = Menu_getParentBar;
	this.show = Menu_show;
	this.queueShow = Menu_queueShow;
	this.hide = Menu_hide;
	this.queueHide = Menu_queueHide;
	this.init = Menu_init;
	this.isRelated = Menu_isRelated;
	this.isSibling = Menu_isSibling;
	this.renderAsHTML = Menu_renderAsHTML;
	this.resetShowTimer = Menu_resetShowTimer;
	this.resetHideTimer = Menu_resetHideTimer;
	
	for (var i=0; i<this.items.length; i++)
		if (this.items[i].childMenu) {
			var item = this.items[i];
			item.childMenu.finalize();
			this.childMenuList[this.childMenuList.length] = item.childMenu;
			this.childMenuList = this.childMenuList.concat(item.childMenu.childMenuList);
		}
}


function Menu() {
	if (Menu.arguments.length>=1) {
		this.title = Menu.arguments[0];	
		if (Menu.arguments.length>=2) this.href = Menu.arguments[1];
		if (Menu.arguments.length>=3) this.name = Menu.arguments[2];
	}
	else {
		return null;
	}
	
	this.childMenuList = new Array();
	this.Depiction = null;
	this.DepictionTitle = null;
	this.id = -1;
	this.items = new Array();
	this.parentBar = null;
	this.parentMenu = null;
	this.hideTimer = null;
	this.showTimer = null;
	
	this.addMenuItem = Menu_addMenuItem;
	this.addChildMenu = Menu_addChildMenu;
	this.addSeparator = Menu_addSeparator;
	this.finalize = Menu_finalize;
}





function MenuItem() {
	if (MenuItem.arguments.length>=1) {
		this.childMenu = null;
		this.parentMenu = null;
		
		if (MenuItem.arguments[0]=="-") {
			this.isSeparator = true;
			if (MenuItem.arguments.length>=2) this.title = MenuItem.arguments[1];
			else this.title = "";
		} else {
			this.isSeparator = false;
			this.title = MenuItem.arguments[0];
			if (MenuItem.arguments.length>=2) this.href = MenuItem.arguments[1];
		}
	}
	else {
		return null;
	}
}





var menubar = new MenuBar("menubar");


menu = new Menu("Service","/service/", "Service");
menu.addMenuItem(new MenuItem("Service &amp; Support: Übersicht", "/service/"));
menu.addMenuItem(new MenuItem("Treiberdownload", "/service/treiber.asp"));
menu.addMenuItem(new MenuItem("FAQ", "/service/faq/index.html"));
menu.addSeparator();
menu.addMenuItem(new MenuItem("PC Systeme", "/service/desktops.asp"));
menu.addMenuItem(new MenuItem("Notebooks", "/service/notebooks.asp"));
menu.addMenuItem(new MenuItem("Server", "/service/server.asp"));
menu.addMenuItem(new MenuItem("Externe Festplatten/Brenner", "/service/externehdd.asp"));
menu.addMenuItem(new MenuItem("Monitore", "/service/monitore.asp"));
menu.addMenuItem(new MenuItem("Pixelfehler-Policy", "/service/pixelfehler.asp"));
menu.addMenuItem(new MenuItem("Einzelkomponenten", "/service/einzelkomponenten.asp"));
menu.addSeparator();
menu.addMenuItem(new MenuItem("Geräte- und Garantieauskunft", "/service/abfrage.asp"));
menu.addMenuItem(new MenuItem("Reparaturstatus", "/service/reparaturstatus.asp"));
menu.addMenuItem(new MenuItem("Sendungsverfolgung", "/service/sendungsverfolgung.asp"));
menubar.addMenu(menu);


menu = new Menu("Kontakt","/site/kontakt.asp", "Kontakt");
menubar.addMenu(menu);


menu = new Menu("Vertriebspartner","/site/vertriebspartner-at.asp", "Vertriebspartner");
menu.addMenuItem(new MenuItem("in Österreich", "/site/vertriebspartner-at.asp"));
menu.addMenuItem(new MenuItem("in Deutschland", "/site/vertriebspartner-de.asp"));
menu.addMenuItem(new MenuItem("Rest Europa", "/site/vertriebspartner-eu.asp"));
menu.addSeparator();
menu.addMenuItem(new MenuItem("Login für Vertriebspartner", "/shop/login.asp"));
menubar.addMenu(menu);


menu = new Menu("Company","/company/profile.asp", "Company");
menu.addMenuItem(new MenuItem("Company Profile", "/company/profile.asp"));
//menu.addMenuItem(new MenuItem("Jobs bei chiliGREEN", "/jobs/"));
menu.addMenuItem(new MenuItem("Jobs bei Quanmax", "http://www.quanmax.ag/unternehmen/jobs.aspx"));
menu.addSeparator("Pressespiegel");
menu.addMenuItem(new MenuItem("bis Jahr 2001", "/company/presse_2001.asp"));
menu.addMenuItem(new MenuItem("Jahr 2002", "/company/presse_2002.asp"));
menu.addMenuItem(new MenuItem("Jahr 2003", "/company/presse_2003.asp"));
menu.addMenuItem(new MenuItem("Jahr 2004", "/company/presse_2004.asp"));
menu.addMenuItem(new MenuItem("Jahr 2005", "/company/presse_2005.asp"));
menu.addMenuItem(new MenuItem("Jahr 2006", "/company/presse_2006.asp"));
menu.addMenuItem(new MenuItem("Jahr 2007", "/company/presse_2007.asp"));
menu.addMenuItem(new MenuItem("Jahr 2008", "/company/presse_2008.asp"));
menu.addMenuItem(new MenuItem("Jahr 2009", "/company/presse_2009.asp"));
menu.addSeparator("Pressemeldungen");
menu.addMenuItem(new MenuItem("Jahr 2007", "/company/meldungen_2007.asp"));
menu.addMenuItem(new MenuItem("Jahr 2008", "/company/meldungen_2008.asp"));
menu.addMenuItem(new MenuItem("Jahr 2009", "/company/meldungen_2009.asp"));
menu.addSeparator();
menu.addMenuItem(new MenuItem("Allgemeine Geschäftsbedingungen", "/agb/"));
menubar.addMenu(menu);


menu = new Menu("Neukunden","/nkreg/", "Neukunden");
menu.addMenuItem(new MenuItem("Neukundenregistrierung", "/nkreg/kundenreg.asp"));
menu.addMenuItem(new MenuItem("Formulare", "/nkreg/default.asp"));
menubar.addMenu(menu);



