var over_menu_item = [];
var active_menu_item = [];
var menu_stat=false;
var submenu = false;
var emptySubmenu = "<ol id='submenu'><li>&nbsp;</li></ol>";
var restoring = false;
var menu_initialized = false;

function swap_menu (itemid, previd) {
	if (menu_initialized) {
		reset_menu();
		remove_active_item();
		var item = "m_"+itemid;
		var prev = "m_"+previd;
	
		var obj = document.getElementById(item);
		var style_name = obj.className;
	
		var submenu_obj = document.getElementById("sub_"+itemid);
	
		var status_text = "aktive Klasse:"+style_name;
		
		if (submenu) {
			if (submenu_obj ) {
				var sub_innerHTML = (submenu_obj.innerHTML.length) ? submenu_obj.innerHTML : emptySubmenu;
				submenu.innerHTML=sub_innerHTML;
			} else if (itemid == 13744 || itemid ==25157 || itemid ==70569) {
				submenu.innerHTML=emptySubmenu;
			}
		}
		if (style_name.search(/(.*)_aktiv/)<0) {
			style_name= (item=='m_62229' || item=='m_70579') ? 'nav_first_aktiv' :  style_name+"_aktiv";
			obj.className=style_name;
			status_text+="<br/>neue Klasse:"+style_name;
			if (prev) {
				var prevobj = document.getElementById(prev);
				if(prevobj) {
					var p_style_name = prevobj.className;
					status_text+="<br/>vorheriges Element(vorher):"+p_style_name;
					if (p_style_name.search(/.*_nextaktiv/)<0) {
						p_style_name= p_style_name+"_nextaktiv";
						prevobj.className=p_style_name;
						status_text+="<br/>vorheriges Element(nachher):"+p_style_name;
					}
					if (prev=='m_62229' || prev=='m_70579') {
						//alert(prev);
						var home_item = (prev=='m_62229' ) ? document.getElementById('m_13744') : document.getElementById('m_25157');
						if (home_item) {
	
							home_item.className="home";
						}
					}
				}
			}
	
		}
		over_menu_item['akt']=obj;
		over_menu_item['prev']=prevobj;
	// zum debuggen...
	//	menu_status(status_text);
	
		}
}
function remove_active_item() {
	if (menu_initialized) {
	var act = active_menu_item['akt'];
	var prev = active_menu_item['prev'];
	//menu_status('restore_nenu:');
	switch (act.id) {
		case 'm_70569':
		var act_style="home";
		break;
		case 'm_13744':
		var act_style="home";
		break;
		case 'm_25157':
		var act_style="home";
		break;
		case 'm_62229':
		var act_style="nav";
		var prev_style="home";
		break;
		case 'm_70579':
		var act_style="nav";
		var prev_style="home";
		break;
		default:
		var act_style="nav";
		var prev_style="nav";
		break;
	}
	if (act_style && act) {
		act.className=act_style;
	}
	if (prev_style && prev) {
		prev.className=prev_style;
	}
	}
}
function reset_menu () {
	if (menu_initialized) {
		if (over_menu_item['akt']) {
			var item = over_menu_item['akt'];
			var style_name = item.className;
			var ergebnis = style_name.match(/(.*)_aktiv/);
			if (ergebnis) {
				item.className= (item.id=='m_62229' || item.id=='m_70579') ? 'nav' : ergebnis[1];
	
			}
		}
		if (over_menu_item['prev']) {
			var prev = over_menu_item['prev'];
			var p_style_name = prev.className;
			var p_ergebnis = p_style_name.match(/(.*)_nextaktiv/);
			if (p_ergebnis) {
	
				prev.className=  p_ergebnis[1];
			}
	
	
		}
	}
}

function menu_status (txt) {
	var obj=document.getElementById("spalte1");
	if (obj) {
		if (!menu_stat) {
			obj.innerHTML="";
			menu_stat=true;
		}

		obj.innerHTML+=txt+"<br/>";
	}
}
function restore_menu(e) {
	if (menu_initialized) {
	if (restoring) {
		return false;
	}
	restoring=true
	var ec = false;
	ec = captureEventCaller(e);

	if ( ( ec[0]!='depth_1' || ec[1]!='UL' ) && ( ec[0]!='seperator' || ec[1]!='DIV') && ( ec[0]!='headerbg' || ec[1]!='DIV') && ( ec[0]!='spalte3' || ec[1]!='DIV')) {
		//menu_status('blocked');
		restoring = false;
		return false;

	}

	//menu_status('RESTORING MENU');
	reset_menu ();

	var act = active_menu_item['akt'];
	var prev = active_menu_item['prev'];
	//menu_status('restore_nenu:');
	switch (act.id) {
		case 'm_70569':
		var act_style="home_aktiv";
		break;
		case 'm_13744':
		var act_style="home_aktiv";
		break;
		case 'm_25157':
		var act_style="home_aktiv";
		break;
		case 'm_62229':
		var act_style="nav_first_aktiv";
		var prev_style="home_nextaktiv";
		break;
		case 'm_70579':
		var act_style="nav_first_aktiv";
		var prev_style="home_nextaktiv";
		break;
		default:
		var act_style="nav_aktiv";
		var prev_style="nav_nextaktiv";
		break;
	}
	if (is_defined(act_style) && is_defined(act)) {
		act.className=act_style;
	}
	if (is_defined(prev_style) && is_defined(prev)) {
		prev.className=prev_style;
	}
	var submenu_obj = document.getElementById("sub_"+active_menu_item['item_id']);
	if (is_defined(submenu)) {
		if (submenu_obj ) {
			submenu.innerHTML=submenu_obj.innerHTML;
		} else if (active_menu_item['item_id'] == 13744 || active_menu_item['item_id'] == 25157 || active_menu_item['item_id'] == 70569) {
			submenu.innerHTML=emptySubmenu;
		}
	}
	restoring = false;
	}
}

function captureEventCaller(e) {
	var element;
	if (!e) e = window.event;
	if (e.target){
		element = e.target;
		//e.returnValue = true;
	}else{
		element = window.event.srcElement;
		//window.event.returnValue = true;
	}
	return [element.id,element.tagName];
}

function init_menu(act,prev) {
	submenu = document.getElementById('submenu');
	if (act) {
		active_menu_item['akt']=document.getElementById('m_'+act);
		active_menu_item['item_id']=act;
		over_menu_item['akt']=document.getElementById('m_'+act);
	}
	if(prev) {
		active_menu_item['prev']=document.getElementById('m_'+prev);
		over_menu_item['prev']=document.getElementById('m_'+prev);
	}
	//menu_status('menu_init:'+act+", "+prev);

	var mainm = document.getElementById('depth_1');
	var ocs = document.getElementById('headerbg');
	var oce = document.getElementById('seperator');
	var sp = document.getElementById('spalte3');
	add_event_listener(mainm, "mouseover", restore_menu);
	add_event_listener(oce, "mouseover", restore_menu);
	add_event_listener(ocs, "mouseover", restore_menu);
	add_event_listener(sp, "mouseover", restore_menu);
	menu_initialized = true;

}

function add_event_listener (obj, eventname, func) {
	if (obj) {
		if (obj && obj.addEventListener) {
			obj.addEventListener(eventname, func, false);
			//menu_status('add_event_listener: registering '+obj.id);
		} else if (obj && obj.attachEvent) {
			obj.attachEvent('on'+eventname, func);
			//menu_status('add_event_listener: registering '+obj.id);
		} else {
			//menu_status('add_event_listener: registering '+obj.id+' failed');
		}
	}
}

function is_defined(o) {
	try {
		if (o) {
			throw true;
		} else {
			throw false;
		}
	} catch(e) {
		if (e) {
			return true;
		} else {
			return false;
		}
	}
}
