/**
 * Menüfunktionen
 *
 * $URL: svn://localhost/RBL-dev/tags/2010-11-25-a_rbl/jkcms/js/menu.js $
 * $Rev: 1593 $
 * $Author: jk $
 * $Date: 2010-11-16 10:37:38 +0100 (Di, 16 Nov 2010) $
 */
 
var mitem = new Array();
var mitemop = new Array();
var menu = new Array();
var actmenuname;
var actmenuitemcnt;
var submenu="";
var mwidth=0;
var defaultMenu="";
var obj = null;
var tmpLayer = null;
var debugLayer = null;
var hoverstyle="color: #FFB000; text-decoration: none; font-size: 12px; font-weight: bold; font-family: Arial;";
var linkstyle= "color: #000000; text-decoration: none; font-size: 12px; font-weight: bold; font-family: Arial;";
var oldLoad = null;
var actlayername="m";
var actlayerx=0;
var actlayery=0;
var menutext='';
var menuready=false;
var mousex;
var mousey;
var menu_pattern;

//Create Menu
function CM(mname) {
	CM_DOM(mname);
}

//Create Menu DOM-fähige Browser
function CM_DOM(mname) {
	var link = "";
	var linksubid = "";
	var top = 102;

	var i = 0;

	pleft = 104;
	menutext = '';

	menu[mname] = document.createElement("div");
	menu[mname].className = "jsmenu";
//	menu[mname].style.position = "absolute";
	menu[mname].style.left = pleft+"px";
	menu[mname].style.top = top+"px";
//	menu[mname].style.visibility = "hidden";
	menu[mname].onmouseover = clearclosetimer;
	menu[mname].onmouseout = setclosetimer;

	itemnr = 0;
	menu[mname].height = 0;
	for (var subid in mitem[mname]) {
		if (mitem[mname][subid].rubrik) {
			var H = document.createElement("h4");
			var Htext = document.createTextNode(mitem[mname][subid].caption);
			H.appendChild(Htext);
			menu[mname].appendChild(H);
			menu[mname].height += 16;
		} else {
			var H = document.createElement("h5");
			var A = document.createElement("a");
			A.href = mitem[mname][subid].link;
			A.target = "_top";
			var Atext = document.createTextNode(mitem[mname][subid].caption);
			A.appendChild(Atext);
			H.appendChild(A);
			menu[mname].appendChild(H);
			menu[mname].height += 18;
		}
		itemnr++;
	}
	//menu[mname].height=itemnr*20;

	var topnode = document.getElementById('main');
	if ((topnode) && (topnode.nodeName == 'DIV')) {
		topnode.appendChild(menu[mname]);
	} else {  
		document.getElementsByTagName("body")[0].appendChild(menu[mname]);
	}
}

//New Menu
function NM(mname) {
	mitem[mname] = new Array();
	mitemop[mname] = new Array();
	actmenuname = mname;
	actmenuitemcnt = 0;
}

//Menu Item
function MI(iname,caption,link) {
	mitem[actmenuname][iname] = new CMI(caption, link, false);
	mitemop[actmenuname][actmenuitemcnt] = iname;
	actmenuitemcnt++;
}

//Menu Item: Link aus menu_pattern und itemid erzeugen
function MP(itemid, caption) {
	link = menu_pattern.replace(/##/g, itemid);
	MI(itemid, caption, link);
}

function SP(pattern) {
  menu_pattern = pattern;
}

//Menu Rubrik
function MR(iname, caption) {
	mitem[actmenuname][iname] = new CMI(caption, '', true);
	mitemop[actmenuname][actmenuitemcnt] = iname;
	actmenuitemcnt++;
}

function CMI(caption, link, rubrik) {
	// evtl eine PHP Sessionid anhängen
	/*if (SESSID) {
		if (link.indexOf(SESSID) == -1) {
			if (link.search(/\?/) >= 0) {
				link = link.concat('&' + SESSID);
			} else {
				link = link.concat('?' + SESSID);
			}
		}
	}*/

	this.caption = caption;
	this.link    = link;
	this.rubrik  = rubrik;
}

function SM(mname, lnk) {
	var t = -20;
	var h = 0;
	var sh = 0;

	if (menuready) {
		clear_menu();

		var pos = getPosition(document.getElementById('main'));
		t = - (2 + pos.y);
		pos = getPosition(lnk);
		t += pos.y;
		menu[mname].style.top = t+"px";
		menu[mname].style.visibility = "visible";

		submenu = mname;
	}
}

function RM() {
	if (menuready) setclosetimer();
}

function initmenu() {
	init_menu();
	menuready=true;
}

function clear_menu() {
	clearclosetimer();
	if (submenu != "") {
		
		menu[submenu].style.visibility = "hidden";
		
		submenu = "";
	}
}

function setclosetimer() {
	if (window.closetimer) window.clearTimeout(closetimer);
	closetimer = setTimeout("clear_menu()", 1000);
}

function clearclosetimer() {
	if (window.closetimer) window.clearTimeout(closetimer);
}

/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
   des Objekts element */
function getPosition(element) {
	var pos = {x:0, y:0};
	var o = element;
	while (o) {
		pos.y += o.offsetTop;
		pos.x += o.offsetLeft;
		o = o.offsetParent;
	}
	return pos;
}

