//+-----------------------------------------------------------------------------+
//| 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
// 2003-03-31  ker  bug fixed
// 2003-04-28  ker  menu adapted for immoostschweiz.ch, fixed all hum-bugs

function writeMainMenu() {
	var html = '<table border=0 cellpadding=0 cellspacing=0 width=137 onmouseleave="hideSubMenu(this)">' + 
		'<tr height=1><td class=bgblack><img src="/images/blank.gif" width=1 height=1></td></tr>';
	var lastMenuId = null;
	
	for (var i = 0; i < cmMenuStruct.length;) {
		if (cmMenuStruct[i] > 0) {
			lastMenuId = cmMenuStruct[i];
			html += '<tr menuId=' + lastMenuId + '><td class=bgwhite><a onmouseenter="showSubMenu(this)"' +
				' class=menu href="' + cmMenuStruct[i + 1] + '">&nbsp;:: ' + cmMenuStruct[i + 2] + '</a></td></tr>' +
				'<tr height=1><td class=bgblack><img src="/images/blank.gif" width=1 height=1></td></tr>';
			i += 4;
		}
		else {
			var displ = lastMenuId == getMenuPath(getMenuId())[0] ? '' : 'none';
			html += '<tr isSubMenu=1 parentMenuId=' + lastMenuId + ' style="display:' + displ + '"><td class=bgwhite>' + 
				writeSubMenu(cmMenuStruct[i + 1], 2) + '</td></tr>' +
				'<tr height=1 isSubMenu=1 parentMenuId=' + lastMenuId + ' style="display:' + displ + '">' +
					'<td class=bgblack><img src="/images/blank.gif" width=1 height=1></td></tr>';
			i += 2;
		}
	}
	html += '</table>';
	document.write(html);
}

function writeSubMenu(SubMenu, indent) {
	var html = '';
	
	for (var i = 0; i < SubMenu.length;) {
		if (SubMenu[i] > 0) {
			if (html != '') {
				html += '<br>';
			}
			
			html += '<a class=submenu href="' + SubMenu[i + 1] + '" style="padding-left:' + (indent * 6) + 'px">:: ' +
				SubMenu[i + 2] + '</a>';
			i += 4;
		}
		else {
			html += '<br>' + writeSubMenu(SubMenu[i + 1], indent + 1);
			i += 2;
		}
	}
	return html;
}

function hideSubMenu(obj) {
	var rows = obj.all.tags("TR");
	for (var i = 0; i < rows.length; i++) {
		if (rows[i].isSubMenu == 1) {
			rows[i].style.display = 'none';
		}
	}
}

function showSubMenu(obj) {
	var tr = obj.parentElement.parentElement;
	var rows = tr.parentElement.all.tags("TR");
	
	for (var i = 0; i < rows.length; i++) {
		if (rows[i].isSubMenu == 1) {
			rows[i].style.display = rows[i].parentMenuId == tr.menuId ? '' : 'none';
		}
	}
}

function writeCurLevelMenu() {
	var mid = getMenuId();
	
	if (mid != null) {
		document.write(collectMenus(mid));
	}
}

function collectMenus(id) {
	var data, parentLevel, curLevel;
	var parentId, curId;
	var html = '';
	
	data = getLevelFromId(id, cmMenuStruct, null);
	parentLevel = data[0];
	curLevel = data[1];
	curId = getIndexFromId(id, curLevel);
	
	if (curLevel == null)
	{
	}
	else if (parentLevel == null && curId + 5 < curLevel.length) {
		// this is a toplevel entry, so display it's children
		html = getCodeFromLevel(curLevel[curId + 5]);
		if (html != '') {
			html = getLink(curLevel[curId + 2], curLevel[curId + 1]) + html;
		}
	}
	else if (parentLevel != null) {
		parentId = getParentIndexFromData(parentLevel, curLevel);
		html = getLink(parentLevel[parentId + 2], parentLevel[parentId + 1]) + getCodeFromLevel(curLevel);
	}
	if (html != '') {
		html += '<br><img src="/images/blank.gif" width=1 height=1>';
	}
	return (html != '' ? '<br>' + html : html);
}

function getCodeFromLevel(level) {
	var html = '';
	for (var i = 0; i < level.length; ) {
		if (level[i] > 0) {
			html += ' | ' + 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 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;
}

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;
}