//+-----------------------------------------------------------------------------+
//| alva & phoenix GmbH                                                         |
//| Gjuchstrasse 19                                                             |
//| 8953 Dietikon                                                               |
//+-----------------------------------------------------------------------------+
//| Projektbezeichnung: yourinternet                                            |
//+-----------------------------------------------------------------------------+
//| Datei:              menus.js                                                |
//+-----------------------------------------------------------------------------+
//| Das Urheberrecht an diesem Dokument (Code) verbleibt auf unbeschränkte Zeit |
//| bei der alva & phoenix GmbH, Dietikon. Ohne deren schriftliche Einwilligung |
//| darf es weder vervielfaeltigt, veraendert noch an Dritte, auch nicht in ab- |
//| geaenderter Form, ganz oder teilweise mitgeteilt, zugaenglich oder nutzbar  |
//| gemacht werden. Dieses Dokument ist nach Art. 2 Abs. 3 URG urheberrechtlich |
//| geschützt. Des weiteren gelten die Allgemeinen Geschäftsbedingungen der     |
//| alva & phoenix GmbH, Dietikon                                               |
//+-----------------------------------------------------------------------------+
// 
// Development History:
// 2002-06-28  ker  created
// 2002-10-24  ker  added support for separators
// 2002-11-22  ker  updated for use with alva.ch

function writeMainMenu() {
	/*var curMId = getMenuId();
	var lastMId = null;*/
	
	document.write(getCurMenu(cmMenuStruct));
}
function getCurMenu(data) {
	var html = '';
	var popups = '';
	var curId = -1;
	var menuPath = getMenuPath(getMenuId());
	
	for (var i = 0; i < data.length; ) {
		if (data[i] > 0) {
			// top level entry
			if (html != '') {
				html += '<br>';
			}
			
			curId++;
			if (data[i + 2] == "-") {
				html += '<img src="/images/blank.gif" width=1 height=8>';
			}
			else {
				html += '<a onmouseover="showMenu(\'' + curId + '\',0)"' + 
					' onmouseout="deactivateMenu(\'' + curId + '\',0)"' + 
					(data[i] == menuPath[0] ? ' class=curmenu' : ' class=menu') +
					' href="' + data[i + 1] + '">' + data[i + 2] + '</a>';
			}
			i += 4;
		}
		else {
			popups += getPopupMenu(curId, data[i + 1], 1);
			i += 2;
		}
	}
	html = '<div style="padding-left:8px">' + html + '</div>';
	
	return html + popups;
}

function getPopupMenu(id, data, indent) {
	var html = '';
	var popups = '';
	var lastMId = null;
	var menuPath = getMenuPath(getMenuId());
	
	for (var i = 0; i < data.length; ) {
		if (data[i] > 0) {
			if (html != '') {
				html += '<br>';
			}
			
			if (data[i + 2] == "-") {
				html += '<img src="/images/blank.gif" width=1 height=8>';
			}
			else {
				html += '<a onmouseover="showMenu(\'' + id + '_' + data[i] + '\',' + indent + ')"' + 
					' onmouseout="deactivateMenu(\'' + id + '_' + data[i] + '\',' + indent + ')"' + 
					(data[i] == menuPath[indent] ? ' class=curmenu' : ' class=menu') + 
					' href="' + data[i + 1] + '">' + data[i + 2] + '</a>';
			}
			lastMId = data[i];
			i += 4;
		}
		else {
			popups += getPopupMenu(id + '_' + lastMId, data[i + 1], indent + 1);
			i += 2;
		}
	}
	html = '<div id="mnu' + id + '" class=mnuPopup><table border=0 cellpadding=4 cellspacing=0><tr><td class=mnuPane>' + 
		html + '</td></tr></table></div>';
	
	return html + popups;
}

function getMenuPath(mid) {
	var path = getMenuPathByAny(cmMenuStruct, mid);
	if (path) {
		return path.split(/;/);
	}
	else {
		return new Array();
	}
}

function getMenuPathByAny(data, mid) {
	var temp;
	var lastMId = null;
	for (var i = 0; i < data.length; ) {
		if (data[i] > 0) {
			// entry on this level
			if (mid == data[i]) {
				return mid;
			}
			lastMId = data[i];
			i += 4;
		}
		else {
			// new level
			temp = getMenuPathByAny(data[i + 1], mid);
			if (temp != null) {
				if (lastMId != null) {
					return lastMId + ";" + temp;
				}
				else {
					return null;
				}
			}
			i += 2;
		}
	}
	return null;
}

function getMenuId() {
	var szSearch = location.search.substr(1);
	var pairs = szSearch.split(/&/);
	var pair;
	
	for (var i = 0; i < pairs.length; i++) {
		pair = pairs[i].split(/=/);
		if (pair[0] == "mid") {
			return pair[1];
		}
	}
	return null;
}

function writeCurLevelMenu() {
	var mid = getMenuId();
	
	if (mid != null) {
		document.write(collectMenus(mid));
	}
}

function collectMenus(id) {
	var data, parentLevel, curLevel;
	var curId;
	var html = '';
	
	data = getLevelFromId(id, cmMenuStruct, null);
	parentLevel = data[0];
	if (parentLevel == null) {
		data = getSubLevelFromId(id, cmMenuStruct, null);
		parentLevel = data[0]
	}
	curLevel = data[1];
	curId = getIndexFromId(id, curLevel);
	
	if (curLevel != null) {
		html = getCodeFromLevel(curLevel, id);
	}
	if (html != '') {
		html += '<br><img src="/images/blank.gif" width=1 height=1>';
	}
	return html;
}

function getCodeFromLevel(level, id) {
	var html = '';
	for (var i = 0; i < level.length; ) {
		if (level[i] > 0) {
			html += (i > 0 ? ' | ' : '') + (id == level[i] ? "<b>" + level[i + 2] + "</b>" : getLink(level[i + 2], level[i + 1]));
			i += 4;
		}
		else {
			i += 2;
		}
	}
	return html;
}

function getLevelFromId(id, data, parentData) {
	for (var i = 0; i < data.length; ) {
		if (data[i] == id) {	// this is, what we're looking for.
			return new Array(parentData, data);
		}
		else if (data[i] <= 0) {
			var temp = getLevelFromId(id, data[i + 1], data);
			if (temp[1] == null) {
				i += 2;
				continue;
			}
			else {
				return temp;
			}
		}
		i += 4;
	}
	return new Array(parentData, null);
}

function getSubLevelFromId(id, data, parentData) {
	for (var i = 0; i < data.length; ) {
		if (data[i] == id) {  // this is the entry which subentries we want
			if (i + 4 < data.length && data[i + 4] <= 0) {
				return new Array(data[i], data[i + 5])
			}
		}
		else if (data[i] <= 0) {
			var temp = getSubLevelFromId(id, data[i + 1], data);
			if (temp[1] == null) {
				i += 2;
				continue;
			}
			else {
				return temp;
			}
		}
		i += 4;
	}
	return new Array(parentData, null);
}

function getIndexFromId(id, data) {
	if (data == null) {
		return -1;
	}
	for (var i = 0; i < data.length; ) {
		if (data[i] == id) {
			return i;
		}
		else if (data[i] <= 0) {
			i += 2;
		}
		else {
			i += 4;
		}
	}
	return null;
}

function getLink(label, data) {
	return '<a class=cmMnuLinkSubs href="' + data + '">' + label + '</a>';
}

function getParentIndexFromData(parentData, data) {
	for (var i = 0; i < parentData.length; ) {
		if (parentData[i] <= 0) {
			if (parentData[i + 1] == data) {
				return i - 4;
				break;
			}
			i += 2;
		}
		else {
			i += 4;
		}
	}
	return null;
}

