/**********************************************************
 * Globale Variabeln
 **********************************************************/

/* Paths */
var imgArrow         = "../img/invis.gif";
var imgArrowInactive = "../img/invis.gif";

/* bgColors */
var bgHighlight     = '#999999'; 	// bgColor for highlighted items.
var bgColor0        = '#000000'; 	// bgColor for topMenu items.  
var bgColorInactive = '#CCCCCC'; 	// bgColor for inactive items
var colorChange0 	= 999; 			// The topMenus can have different colors.
                        			// Specify at which item the color shall change.
                        			// To feature multiple changes, add further colorChangeX and bgColorX variables.



									
/* CSS Classes */
var naviBorder   = 'navBorder';
var classFont    = 'navFontTop';  	// Font properties for topMenus
var classFontSub = 'navFontSub';	// Font properties for subMenus
var classInactiv = 'navInactive'; 	// Font properties for inactive items
var classChange  = '';

/**********************************************************/

var e = "ebene";
var f = "font";
var action = "";
var subLayer = '';
var subOpen = '';
var inSub = '';
var time = 0;
var overLayer = '';
var timer = 250;	// 500
/* Var Includes */
var tableInclude = '';


/* Var Breiten und Grössen */
var z = 5;
var zSub = 10;
var wt1 = 10;
var wt2 = 8;
var wtNs = 175;				//
var wtNsSub = 113;
var htNs = 17;
var htNsSub = 13;
var wt2Ns = 115;
var wt2NsSub = 94;

var wtIe = 180;				//Breite der Menues 1. Level
var wtIeSub = 119;			//breite SubLevels
var htIe = 25;				//Höhe der Menues 1. Level
var htIeSub = 20;
var wt2Ie = 150;	
var wt2IeSub = 101;

var special = 180; //145,181 ausser Ns 4.7 (141) Ok überall
var specialY = 0;

/* Var Layer-Positionierung */
var contentX = 0;			//Abstand von rechtem Rand
var schieberX = 48;			//Schieber für Sublevel - Abstand gerechnet vom ContentX ausgehend
var contentY = 351;			//Abstand von oben
var schieberY = 18;			//Schieber für Sublevel - Abstand gerechnet vom ContentY ausgehend

/**********************************************************
 * BrowserCheck
 **********************************************************/
function BrowserCheck() {
  var b = navigator.appName;
  if (b=="Netscape") this.b = "ns";
  else if (b=="Microsoft Internet Explorer") this.b = "ie";
  else this.b = b;
  this.version = navigator.appVersion
  this.v = parseInt(this.version)
  this.ns = (this.b=="ns" && this.v>=4)
  this.ns4 = (this.b=="ns" && this.v==4)
  this.ns6 = (this.b=="ns" && this.v>=5)
  this.ie = (this.b=="ie" && this.v>=4)
  this.ie4 = (this.version.indexOf('MSIE 4')>0)
  this.ie5 = (this.version.indexOf('MSIE 5')>0)
  this.ie6 = (this.version.indexOf('MSIE 6')>0)
  this.mac = (navigator.appVersion.indexOf("Mac") != -1)
  this.min = (this.ns||this.ie)
}
is = new BrowserCheck();


/**********************************************************
 * Build DHTML
 **********************************************************/
for (var menueNr = 0; menueNr < menu.length; menueNr++) with (menu[menueNr][0])
{
	for (var subMenueNr in menu[menueNr])
	{
	ebeneId = e+menueNr+subMenueNr;
	fontId = 'font'+menueNr+subMenueNr;
	var mouseEbene = "'"+ebeneId+"'";
	var mouseFont = "'"+fontId+"'";
	var hrefLink = "'"+menu[menueNr][subMenueNr].temphref+"'";

		if(is.ns4)
		{
			tableInclude += '<layer id="' +ebeneId+ '" left="' +getContentX(menueNr,subMenueNr)+ '" top="' +getContentY(menueNr,subMenueNr)+ '" width="' +getWidth(subMenueNr)+ '" height="' +getHeight(subMenueNr)+ '" z-index="' +getZindex(subMenueNr)+ '" bgcolor="' +getColor(menueNr,subMenueNr)+ '" visibility="' +getVisibility(subMenueNr)+ '" class="' + naviBorder + '" ';
		}
		else
		{
			tableInclude += '<div id="' +ebeneId+ '" style="position:absolute; top: ' +getContentY(menueNr,subMenueNr)+ 'px; left: ' +getContentX(menueNr,subMenueNr)+ 'px; width=' +getWidth(subMenueNr)+ 'px; height=' +getHeight(ebeneId,subMenueNr)+ 'px; z-index:' +getZindex(subMenueNr)+ '; background-color:' +getColor(menueNr,subMenueNr)+ '; visibility:' +getVisibility(subMenueNr)+ '; ';
				if (menu[menueNr][subMenueNr].temphref == null) {tableInclude += '";'}
				else{
					if (is.ns6){tableInclude += 'cursor:pointer;" '}
					else {tableInclude += 'cursor:hand;" '}
				}
			tableInclude += ' class="' +naviBorder+ '" ';
		}
		if (menu[menueNr][subMenueNr].temphref == null) {tableInclude += ''}
		else {tableInclude += 'onMouseOver="mouseOver(' +menueNr+ ',' +subMenueNr+ ');window.status=' + getStatus(menu[menueNr][subMenueNr].frame)+ ';return true;" onMouseOut="mouseOut(' +menueNr + ',' + subMenueNr + ')" onClick="' + getAction(menu[menueNr][subMenueNr].frame) + '" '}
    tableInclude += '>';
    tableInclude += '<table width="' +getWidth(subMenueNr)+ '" height="' +getHeight(ebeneId,subMenueNr)+ '" border="0" cellspacing="0" cellpadding="0">';
		tableInclude += '<tr>';
    tableInclude += '<td width="' +wt1+ '">&nbsp;</td>';
    tableInclude += '<td height="' +getHeight(ebeneId,subMenueNr)+ '" width="' +getWidth2(subMenueNr)+ '" align="left" valign="middle" ';
		if (menueNr < 1) {tableInclude += '';} else {tableInclude += 'colspan="2"';}
		if (menu[menueNr][subMenueNr].temphref != null)
		{
			if (is.ns4) {
				tableInclude += '><a class="' +getFont(subMenueNr)+ '"  ';
				tableInclude += 'href="#" onClick="' + getAction(menu[menueNr][subMenueNr].frame)+ '" ';
				tableInclude += '>' +menu[menueNr][subMenueNr].temptext+ '</a>';
			} else {
				tableInclude += ' class="' +getFont(subMenueNr)+ '">' +menu[menueNr][subMenueNr].temptext+ ' ';
			}
		}
		else 	{
			tableInclude += ' class="' +classInactiv+ '">' +menu[menueNr][subMenueNr].temptext+ ' ';
		}
    tableInclude += '</td>';
		if (subMenueNr < 1) {
			if(menu[menueNr][subMenueNr].temphref == null){
				tableInclude += '<td width="4" align="right"><img src="'+imgArrowInactive+'" width="4" height="6"></td>';}
			else {
				tableInclude += '<td width="4" align="right"><img src="'+imgArrow+'" width="4" height="6"></td>';}
		} else {tableInclude += '';}
		tableInclude += '<td width="' +wt2+ '">&nbsp;</td>';
		tableInclude += '</tr>';
		tableInclude += '</table>';
		tableInclude += (is.ns4 ? '</layer>' : '</div>');
	}
}

document.write(tableInclude);


/**********************************************************
 * DHTML Generation
 **********************************************************/
function getVisibility(subMenueNr)
{
	if (subMenueNr < 1){ if (is.ns4){ return('show'); } else { return('visible'); } }
	else { if (is.ns4){ return('hide'); } else { return('hidden'); } }
}

function getFont(subMenueNr)
{
	if (subMenueNr < 1){ return(classFont); }
	else { return(classFontSub); }
}

function getZindex(subMenueNr) {
	if (subMenueNr < 1) { return(z); }
	else { return(zSub); }
}

function getWidth(subMenueNr){
	if (subMenueNr < 1){
		if (is.ns4) { return(wtNs); }
		else { return(wtIe); }
	} else {
		if (is.ns4) { return(wtNsSub); }
		else { return(wtIeSub); }
	}
}

function getWidth2(subMenueNr){
	if (subMenueNr < 1){
		if (is.ns4) { return(wt2Ns); }
		else { return(wt2Ie); }
	} else {
		if (is.ns4) { return(wt2NsSub); }
		else { return(wt2IeSub); }
	}
}

function getHeight(ebeneId,subMenueNr){
	if (subMenueNr < 1) {
		if (is.ns4) { return(htNs); }
		else { return(htIe); }
	} else {
		if (is.ns4) { return(htNsSub); }
		else { return(htIeSub); }
	}
}

function getContentX(menueNr,subMenueNr){
	if (subMenueNr < 1){
		if ((is.ns4)&&(!is.mac)){ return(parseInt(menueNr)*special+contentX); }
		if ((is.mac)&&(is.ns4)){ return(parseInt(menueNr)*special+contentX); }
		if ((is.mac)&&(is.ie5)){ return(parseInt(menueNr)*special+contentX); }
		else { return(parseInt(menueNr)*special+contentX); }
	} else {
		if ((is.ns4)&&(!is.mac)) { return(parseInt(menueNr)*special+contentX+parseInt(subMenueNr-1)*special+parseInt(schieberX)); }
		if ((is.mac)&&(is.ns4)) { return(parseInt(menueNr)*special+contentX+parseInt(subMenueNr-1)*0+parseInt(schieberX)); }
		if ((is.mac)&&(is.ie5)) { return(parseInt(menueNr)*special+contentX+parseInt(subMenueNr-1)*0+parseInt(schieberX)); }
		else { return(parseInt(menueNr)*special+contentX+parseInt(subMenueNr-1)*0+parseInt(schieberX)); }
	}
}

function getContentY(menueNr){
	if (subMenueNr < 1){ return(contentY); }
	//else { return(parseInt(contentY)+schieberY); }
	else {
		if ((is.ns4)&&(!is.mac)) { return(parseInt(menueNr)*specialY+contentY+parseInt(subMenueNr-1)*special+parseInt(schieberY)); }
		if ((is.mac)&&(is.ns4)) { return(parseInt(menueNr)*specialY+contentY+parseInt(subMenueNr-1)*20+parseInt(schieberY)); }
		if ((is.mac)&&(is.ie5)) { return(parseInt(menueNr)*specialY+contentY+parseInt(subMenueNr-1)*19+parseInt(schieberY)); }
		else { return(parseInt(menueNr)*specialY+contentY+parseInt(subMenueNr-1)*21+parseInt(schieberY)); }	
	}
}

function getStatus(status)
{
var linkStatus = menu[menueNr][subMenueNr].temphref;
	if ((status == "_top")||(status == "_blank")){ linkStatus = "'"+linkStatus+"'"; return(linkStatus); }
	else { return("'javascript:'"); }
}

function getAction(action)
{
var js = "javascript:";
var link = menu[menueNr][subMenueNr].temphref;
	if (action == "_top"){
	link = "document.location.href='"+link+"'";
	return(link); }
	if (action == "_blank"){
	link = "window.open('"+link+"')";
	return(link) }
	else { return(js+link); }
}

function getColor(menueNr,subMenueNr){
	if ((activeNr != '')&&(activeNr == menueNr)) {
		return(bgHighlight);
	}
	if (menu[menueNr][subMenueNr].temphref == null){
		return(bgColorInactive);
	} else {
		if (menueNr<=colorChange0){
			return(bgColor0);
		}
		if (menueNr<=colorChange1){
			return(bgColor1);
		}
		if (menueNr<=colorChange2){
			return(bgColor2);
		}
		if (menueNr<=colorChange3){
			return(bgColor3);
		}
	}
}

/**********************************************************
 * MouseOver, MouseOut Handling
 **********************************************************/
function mouseOver(menueNr,subMenueNr)
{
  changeColor((e+menueNr+subMenueNr),(f+menueNr+subMenueNr), true, null, classChange);
  if (subOpen){
  	clearTimeout(time);
  	if (subMenueNr == 0){ inSub = false; }
  	else { inSub = true; }
  	time = setTimeout('subLayersVisible('+menueNr+','+subMenueNr+');time=0;', timer);
  }
	else {
		clearTimeout(timer);
		time = setTimeout('subLayersVisible('+menueNr+','+subMenueNr+');time=0;', timer);
	}
}

function mouseOut(menueNr,subMenueNr)
{
	bgColorBefore = getColor(menueNr,subMenueNr);
	changeColor((e+menueNr+subMenueNr), (f+menueNr+subMenueNr), false, bgColorBefore, classChange);
	if ((menueNr == 0) && !menu[menueNr][subMenueNr].target) {
		time = setTimeout('subLayersHide();subOpen=0;inSub=0;time=0;', timer);
	}else {
		clearTimeout(time);
		time = setTimeout('subLayersHide();subOpen=0;inSub=0;time=0;', timer);
	}
}

function subLayersVisible(menueNr, overLayer)
{
	for (var menueNrx = 0; menueNrx < menu.length; menueNrx++) {
		if (menueNr != menueNrx) {
			for (subMenueNr in menu[menueNrx]){
			subLayer = e+menueNrx+subMenueNr;
				if (subMenueNr > 0){
					if (is.ns4){
            document.layers[subLayer].visibility = 'hide';
					}
					if (is.ie4){
						document.all[subLayer].style.visibility = "hidden";
					}
					if ((is.ns6)||(is.ie5)||(is.ie6)){
						document.getElementById(subLayer).style.visibility = "hidden";
					}
				}
			}
		}
  }
	for (subMenueNr in menu[menueNr]){
		subLayer = e+menueNr+subMenueNr;
		if (subMenueNr > 0){
			if (is.ns4){
        document.layers[subLayer].visibility = 'show';
			}
			if (is.ie4){
				document.all[subLayer].visibility = "visible";
			}
			if ((is.ns6)||(is.ie5)||(is.ie6)){
				document.getElementById(subLayer).style.visibility = "visible";
			}
		  subOpen = menu[menueNr][1];
    }
  }
}
function subLayersHide()
{
	for (var menueNr = 0;menueNr < menu.length; menueNr++) {
		for (subMenueNr in menu[menueNr]){
			if (subMenueNr > 0){
				nrISave = e+menueNr+subMenueNr;
    		if (is.ns4){
					document.layers[nrISave].visibility = "hide";
				}
				if (is.ie4){
				document.all[nrISave].visibility = "hidden";
				}
				if ((is.ns6)||(is.ie5)||(is.ie6)){
					document.getElementById(nrISave).style.visibility = "hidden";
				}
			}
		}
	}
}

function changeColor(menueNr,fontNr, overLayer, bgColorBefore, classChange){
    if ((is.ns4)&&(overLayer == true)){
		document.layers[menueNr].bgColor = bgHighlight;
	}
    if ((is.ns4)&&(overLayer == false)){
		document.layers[menueNr].bgColor = bgColorBefore;
	}
	if ((is.ie4)&&(overLayer == true)){
		document.all[menueNr].style.backgroundColor = bgHighlight;
	}
	if ((is.ie4)&&(overLayer == false)){
		document.all[menueNr].style.backgroundColor = bgColorBefore;
	}
	if (((is.ns6)||(is.ie5)||(is.ie6))&&(overLayer == true)){
		document.getElementById(menueNr).style.backgroundColor = bgHighlight;
	}
	if (((is.ns6)||(is.ie5)||(is.ie6))&&(overLayer == false)){
		document.getElementById(menueNr).style.backgroundColor = bgColorBefore;
	}
}

// Testfunction, remove when not needed
function testFunction() {
  alert("The testFunction() was called.\n\nThe call of this function can be modified to fit your specific needs.");
}

// Set the menupoint to be marked as active
function setActiveMenuPoint(aPoint) {
  activeNr = aPoint;
}