// ----------------------------------------------
// Skript zur dynamischen Anzeige von Menüs
// author: Marco Kawollek
// tested: IE4,IE5.x,IE6;Netscape 6;Mozilla 1.7;Firefox 1;Opera 7;Safari
//
// last modified:23.06.06
// ----------------------------------------------
var DHTML=0,DOM=0,OP=0,IE=0;
if(window.opera) {OP = 1;}
if(document.getElementById){DHTML = 1;DOM = 1;}
if(document.all && !OP && !DOM){DHTML=1;IE=1;}

var mel = new Array();
var open_mc = new Array;
var timeouts = new Array();
var mcs = new Array();
var wnd_width = 0;

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function init_menu() {
	wnd_width=document.body.offsetWidth;
	if(DHTML)start_menu_set_pos();
	window.onresize = start_menu_set_pos;
}
function recomp_pos() {
	for(var i=0;i<mcs.length;i++) {
		var id_me = mcs[i].replace(/mc/,"me");
		set_pos(mcs[i],id_me);
	}
}
function getPos(el,sProp) {
	var p=0;
	if (el.offsetParent) {
		while (el!=null) {
			p+=eval("el.offset"+sProp);
			el=el.offsetParent;
		}
	}
	return(p);
}
function set_pos(id_mc,id_me) {
	o_mc=MM_findObj(id_mc);
	o_mc=eval(o_mc.style); 
	id_me_tmp = id_mc.replace(/mc/,"me");
	o_me = MM_findObj(id_me_tmp);
	count_el = id_mc.split("_");
	if(count_el.length == 2) {
		o_mc.left = getPos(o_me,"Left")+m_offset_left_2ndlevel+"px";
		o_mc.top = getPos(o_me,"Top")+o_me.offsetHeight+m_offset_top+m_offset_top_2ndlevel+"px";
	} else {
		o_mc.top = getPos(o_me,"Top")+"px";
		var new_pos_left = getPos(o_me,"Left")+o_me.offsetWidth+m_offset_left;
		if((new_pos_left + parseInt(m_width)) >= wnd_width) {
			new_pos_left = 	getPos(o_me,"Left")-m_width-m_offset_left;
		}
		o_mc.left = new_pos_left+"px";
	}
}
function make_mel(level,text,a) {
	var args = make_mel.arguments;
	mel[mel.length]=new make_mel_obj(args);
}
function make_mel_obj(args) {
	var m=this;
	m.id='mc_'+args[0];
	return this;
}
function addEvent(obj, evType, fn, useCapture){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, useCapture);
    	return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}
} 
function start_menu_set_pos() {
	wnd_width=document.body.offsetWidth;	
	for (i=0;i<mel.length;i++) {
		set_pos(mel[i].id,'');

	}
}

function get_id_mc_ch_par(id_me) {
	ids=new Array();
	var o_me = MM_findObj(id_me);
	ids["ch"] = id_me.replace(/me/,"mc");
	ids["par"] = ids["ch"].substring(0,ids["ch"].lastIndexOf("_"));
	return ids;
}

function mov(ev) {
	var me,id_mc_par,id_mc_ch;
	if(DOM) {
		if(window.event) {me = window.event.srcElement;}
		if(ev.target) {me = ev.target;}
		if(ev.getAttribute('id')) {id_me = ev.getAttribute('id')} else {id_me = me.id;}
// 		id_me = me.id; // alt ohne mozilla, neu ist zeile vorher
		while(!id_me) {me=me.parentNode;id_me=me.id;}	
		o_me = MM_findObj(id_me);
		o_me.style.backgroundColor = m_color_active;
		o_me.firstChild.style.color = m_text_color_active;
	} else if (IE) {
		id_me=ev.id;
		while(!id_me) {me=me.parentElement;id_me=me.id;}
	}
	var ids = get_id_mc_ch_par(id_me);

	for(i=0;i<open_mc.length;i++) {
		if( ((open_mc[i].split("_").length) > (ids["par"].split("_").length)) && (open_mc[i] != ids["ch"]) ) {
			window.clearTimeout(timeouts[open_mc[i]]);delete timeouts[open_mc[i]];
			exec_hide_mc(open_mc[i],false);open_mc[i] = "_";
		}
	}
	for(i=0;i<open_mc.length;i++){if(open_mc[i]=="_"){open_mc[i]=open_mc[open_mc.length-1];
		open_mc.length=open_mc.length-1;
		}
	}

	var	id_pars_split = ids["par"].split("_");
	while(id_pars_split.length > 1) {
		show_mc(ids["par"],false);
		ids["par"] = ids["par"].substring(0,ids["par"].lastIndexOf("_"));
		id_pars_split = ids["par"].split("_");
	}
	if(MM_findObj(ids["ch"])) {show_mc(ids["ch"],false);}
}
function mout(ev) {
	var me,id_mc_par,id_mc_ch;
	if(DOM) {
		if(window.event) {me = window.event.srcElement;}
		if(ev.target) {me = ev.target;}
		if(ev.getAttribute('id')) {id_me = ev.getAttribute('id')} else {id_me = me.id;}
//		id_me = me.id; // alt ohne mozilla, neu ist zeile vorher
		while(!id_me) {me=me.parentNode;id_me=me.id;}
		o_me = MM_findObj(id_me);
		o_me.style.backgroundColor = m_color_inactive;
		o_me.firstChild.style.color = m_text_color_inactive;
	} else if (IE) {
		id_me=ev.id;
		while(!id_me) {me=me.parentElement;id_me=me.id;}	
	}
	var ids = get_id_mc_ch_par(id_me);
	if(MM_findObj(ids["ch"])) hide_mc(ids["ch"]);
	var id_pars_split = ids["par"].split("_");
	while(id_pars_split.length > 1) {
		hide_mc(ids["par"]);
		ids["par"] = ids["par"].substring(0,ids["par"].lastIndexOf("_"));
		id_pars_split = ids["par"].split("_");
	}
}
function show_mc(mc_id,close_all) {
	window.clearTimeout(timeouts[mc_id]);
	delete timeouts[mc_id];
	if(close_all) {
		var el;	var count = open_mc.length;
		for(el in timeouts) {window.clearTimeout(timeouts[el]);}
		for(el in timeouts) {delete timeouts[el];}
		for(i=0;i<count;i++) {exec_hide_mc(open_mc[i],false);}
		for(i=0;i<count;i++) {
			open_mc.length=open_mc.length-1;
		}	
	}
	if(o_m = MM_findObj(mc_id)) {
		var op=false;var tbc=false;
		for(i=0;i<open_mc.length;i++) {if(open_mc[i]==mc_id)op = true;}
		if(!op) {o_m = eval(o_m.style);o_m.visibility="visible";
			open_mc[open_mc.length]=mc_id;
		}
	}
}
function hide_mc(mc_id) {
	if(timeouts[mc_id]) {window.clearTimeout(timeouts[mc_id]);}
	timeouts[mc_id] = window.setTimeout("exec_hide_mc('"+mc_id+"',true)",m_delay);
}
function exec_hide_mc(mc_id,check) {
	var o_m = MM_findObj(mc_id);
	if(!o_m) return;
	o_m.style.visibility='hidden';
	if(check){
		for(i=0;i<open_mc.length;i++){
			if(open_mc[i]==mc_id){
				open_mc[i]=open_mc[open_mc.length-1];
				open_mc.length=open_mc.length-1;
			}
		}
	}
}

function openMenuLink(url,useUID,target) {
	if (useUID == 0) {
		addUID = (url.indexOf('?') == -1) ? '?' : '&' ;
		url = url + addUID + 'UID=' + JS_FUID_PAR;
	}
	
	if(target == '') window.location.href = url;
	if(target == '_blank') {
		window.open(url,'','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width=780,height=550');
	}
}