if(menutype == 1 || menutype == 2) menucontent=new Array();
else var menucontent='';
var active_doc;
var opened = new Array();
var active = new Array();
var do_update = new Array();
var pathstring = pathstring_delimiter;
var rootmenu;

function init(menuid, noload) {
	rootmenu = menuid;
	opened = new Array();
	active = new Array();
	active_doc='';
	reset_menu();
	for(var i=0; i<menudepth; i++) {
		do_update[i] = true;
	}
	if(expanded) open_all(rootmenu);
	make_menucontent(rootmenu);
	build_menu();
	if(!noload) if(parent.fContent) if(parent.fContent.doc_id) check_activestatus(parent.fContent.doc_id);
}

function level_entryid(entryid, level) { //entryIDs übergeordneter Level
	levelentryid = '';
	if(entryid.split('.').length > level+1) {
		for(var i=0; i<level+2; i++) {
			levelentryid += entryid.split('.')[i];
			if(i<level+1) levelentryid += '.';
		}
	}
	return levelentryid;
}

function parent_menu(entryid) { //Vater-Menu holen
	return entryid.substr(0,entryid.lastIndexOf('.'));
}

function menulevel(entryid) { //Hierarchie-Tiefe holen
	return entryid.split('.').length-2;
}

function entry_get(entryid, value) { // Eintrags-Eigenschaften holen
	if(value == 'label') return menu[entryid].split('|')[0];
	if(value == 'action') return menu[entryid].split('|')[1];
	if(value == 'doc_url') return menu[entryid].split('|')[2];
	if(value == 'property') return menu[entryid].split('|')[3];
}

function write_menu(content, menuid) { // Menu ausgeben
	if(ie) document.all['m'+menuid].innerHTML = content;
	else
		if(w3c) document.getElementById('m'+menuid).innerHTML = content;
		else
			if(ns4) with(document.layers['m'+menuid].document) {
				open();
				write(content);
				close();
			}
}

function reset_menu() {
	if(menutype == 1 || menutype == 2) {
		for(var i=0; i<menudepth; i++) {
			menucontent[i]='';
		}
	}
	else menucontent='';
}

function do_open(entryid) { //aufklappen
	if(keep_open) opened[entryid] = !opened[entryid];
	else {
		opened = new Array();
		for(var i=0; i<=menulevel(entryid); i++) {
			opened[level_entryid(entryid, i)] = 1;
		}
		if(closeable) {
			for(var i=menulevel(entryid); i<menudepth; i++ ) {
				opened[level_entryid(entryid, i)] = 0;
			}
		}
	}
	for(i=0;i<menulevel(entryid);i++) do_update[i] = false;
	for(i=menulevel(entryid);i<menudepth;i++) do_update[i] = true;
}

function open_all(menuid, startentry) {	//alle aufklappen
	if(!startentry) startentry=1;
	for(i=startentry;i<maxentries;i++)	{
		entryid = menuid +'.'+i;
		if(menu[entryid]) {
			opened[entryid] = true;
			if(menu[entryid] && menu[entryid + '.1']) { //Submenu
				open_all(entryid, 1);
				return;
			}
		}
		else {
			if(menulevel(entryid)) {
				parentmenu = parent_menu(parent_menu(entryid));
				nextparent = parseInt(parent_menu(entryid).substr(parent_menu(entryid).lastIndexOf('.')+1,parent_menu(entryid).length))+1;
				open_all(parentmenu, nextparent); 
				return;
			}
			else return;
		}
	}
}

function build_menu() {
	menuout = m_start;
	menuout += menucontent;
	menuout += m_end;
	write_menu(menuout,0);
	if(ns4) document.height = document.layers['m0'].document.height + document.layers['m0'].top + 5;
}

/* Action-IDs:
0: Category only
1: Page + Category
2: Page only
3: ext. Menu Category
4: ext. Menu Page + Category
5: Skip-Level
7: int. Link, Content Window
8: ext. Link + Category
9: ext. Link, new Window
10: ext. Link, same Window
11: ext. Link, Content Window
*/
function entryclick(entryid, noload) { //Klick auf Menueintrag
	var action = entry_get(entryid, 'action');
	do_open(entryid);
	reset_menu();
	if(action == '1' || action == '2' || action == '7' || action == '8' || action == '9' || action == '10' || action == '11') { 
		if(!noload) {
			switch (action) {
				case '1': //Page+Category
				case '2': //Page only
				case '7': //int. Link + Content Window
				eval(targetframe+'.location.href = contentpath + entry_get(entryid, \'doc_url\')');
				break;
				
				case '8': //ext. Link + Category
				case '9': //ext. Link, new Window
				window.open(entry_get(entryid, 'doc_url'));
				break;
				
				case '10': //ext. Link, same Window
				top.location.href = entry_get(entryid, 'doc_url');
				break;
				
				case '11': //ext. Link, Content Window
				eval(targetframe+'.location.href = entry_get(entryid, \'doc_url\')');
				break;				
			}
			active_doc = entry_get(entryid, 'doc_url');
		}
		pathstring = '';
		for(var i=0; i<menudepth; i++) {
			active[i] = level_entryid(entryid, i);
			if(menu[level_entryid(entryid, i)]) pathstring += entry_get(level_entryid(entryid, i), 'label') + pathstring_delimiter;
		}
		set_pathstring();
	}
	make_menucontent(rootmenu);
	
	build_menu();
	//if((menu[entryid+'.1'] && action == '0' && menulevel(entryid) == 2 && show_first) || (menu[entryid+'.1'] && entry_get(entryid+'.1', 'action') == '5') || (menu[entryid+'.1'] && action == '5')) {
	if(action == '0' && show_first && menu[entryid+'.1']) {
		entryclick(entryid+'.1'); 
		return;
	}
}

function make_menucontent(menuid, startentry) {	//Menu aufbauen
	if(!startentry) startentry=1;
	for(i=startentry;i<maxentries;i++)	{
		entryid = menuid +'.'+i;
		if(menu[entryid]) {
			if(menutype == 1 || menutype == 2) menucontent[menulevel(entryid)] += make_entryline(entryid);
			else menucontent += make_entryline(entryid);
			if(menu[entryid] && menu[entryid + '.1'] && opened[entryid]) { //Submenu
				make_menucontent(entryid, 1);
				return;
			}
		}
		else {
			if(menulevel(entryid)) {
				parentmenu = parent_menu(parent_menu(entryid));
				nextparent = parseInt(parent_menu(entryid).substr(parent_menu(entryid).lastIndexOf('.')+1,parent_menu(entryid).length))+1;
				make_menucontent(parentmenu, nextparent); //Parent zu Ende schreiben
				return;
			}
			else return;
		}
	}
}

function has_opensub(entryid) {
	for(var i=1;i<maxentries;i++) {
		if(menu[level_entryid(entryid, menulevel(entryid)-1)+'.'+i]) {
			if(opened[level_entryid(entryid, menulevel(entryid)-1)+'.'+i] == 1) return true;
		}
		else return false;
	}
}

function make_entryline(entryid) { // Menueintrag erzeugen
	menutemplate = m_template[menulevel(entryid)];
	entryline = menutemplate.replace(/<entry-id>/g, entryid);
	entryline = entryline.replace(/<entry-label>/g,  entry_get(entryid, 'label'));

	if(opened[entryid] && page[active_doc] != entryid) {
		//entryline = entryline.replace(/<entry-imgsrc>/g, menubullet_o.src);
		entryline = entryline.replace(/<entry-class>/g, 'entry-o'+menulevel(entryid));
	}
	else if(page[active_doc] == entryid) {
	//else if(active[menulevel(entryid)]==entryid) {
		//entryline = entryline.replace(/<entry-imgsrc>/g, menubullet_a.src);
		entryline = entryline.replace(/<entry-class>/g, 'entry-a'+menulevel(entryid));
	}	
	else {
		//entryline = entryline.replace(/<entry-imgsrc>/g, menubullet_n.src);
		entryline = entryline.replace(/<entry-class>/g, 'entry-n'+menulevel(entryid));
	}
	return entryline + '\n';
}

function check_activestatus(docid) {  //passt Menu zum Content?
	if(!page[docid]) init(rootmenu, 1);
	else {
		if(active_doc != docid) {
			active_doc = docid;
			for(var i=-1; i<=menulevel(page[docid]); i++) {
				opened[level_entryid(page[docid], i)] = 0;
				entryclick(level_entryid(page[docid], i), 1);
			}
		}
	}
}

