function getLayerRef (id, document) {
	// Funktion referenziert einen Layer als Objekt
	// Nutzung:
	// object = getLayerRef("layer");
	// object.style.color = "blue"; // nur ein Beispiel
	if (!document)
	document = window.document;
	if (document.layers) {
	for (var l = 0; l < document.layers.length; l++)
	  if (document.layers[l].id == id)
	    return document.layers[l];
	for (var l = 0; l < document.layers.length; l++) {
	  var result = getLayerRef(id, document.layers[l].document);
	  if (result)
	    return result;
	}
	return null;
	}
	else if (document.all) {
	return document.all[id];
	}
	else if (document.getElementById) {
	return document.getElementById(id);
	} else {
	return null;
	}
}
	
	
	
var navListItems;	
var navListSelectedItems;

var subNavListItems;	
var subNavListSelectedItems;

/*
 * navInit
 * 
 **/
function  navInit(){

	navLayer                = getLayerRef("navi");
	navListItems            = new navItemList( navLayer.getElementsByTagName("ul")[0].getElementsByTagName("a") );
	navListSelectedItems    = new navItemList(); 
	
	subNavLayer             = getLayerRef("subnavi");
	subNavListItems         = new navItemList( subNavLayer.getElementsByTagName("ul") );
	subNavListSelectedItems = new navItemList(); 
	
	
	/* provide navigationspoints with onClick-events*/ 
	var navItem;
	while( navItem = navListItems.current() ) {
		navItem.name        = navListItems.currentPosition();
		navItem.onmouseover = function () { 
		                                 this.blur(); 
		                                 return navToggleSelection(this.name);  
		};
		
		
		if (navItem.className == "active" ) {
			navListSelectedItems.addItem(navItem);
		}
		navListItems.next();
	} 
	
	/* subnavigationspoints */ 
	var subNavItem;
	while( subNavItem = subNavListItems.current() ) {
		subNavItem.name        = subNavListItems.currentPosition();
	
		if (subNavItem.style.display != "none" ) {
			subNavListSelectedItems.addItem(subNavItem);
		}
		subNavListItems.next()
	} 
	
}


/*
 * navToggleSelection
 * 
 **/
function navToggleSelection(listItemPosition) 
{	
	navListItems.setPosition( parseInt(listItemPosition) );
		
	switch ( navListItems.current().className)
	{	
		case "active":
			return true;
			break;	
		
		case "":
			navDeselectAllListItems();
			return navSelectListItem( navListItems.current() );
			break;
	}
	
}


/* select current item */
function navSelectListItem(listItem) 
{
	returnVal = true;
	listItem.className  = "active";
	navListSelectedItems.addItem(listItem);
	
	subNavListItems.resetPosition();
	
	while (subNavItem = subNavListItems.current() )	{
		if (subNavItem.id == "sub_" + listItem.id ) {
			subNavItem.style.display = "block";
			subNavListSelectedItems.addItem(subNavItem);
		}	
		
		subNavListItems.next();
	}
}


/* deselect all items */
function navDeselectAllListItems() 
{
	navListSelectedItems.resetPosition();
	subNavListSelectedItems.resetPosition();
	
	while (navItem = navListSelectedItems.current() ) {
		navItem.className = "";
		navListSelectedItems.next();
	}
	
	while (subNavItem = subNavListSelectedItems.current() ) {
		subNavItem.style.display = "none";
		subNavListSelectedItems.next();
	}
	
	navListSelectedItems    = new navItemList();
	subNavListSelectedItems = new navItemList();  
}


/*
 * navItemList
 * 
 **/
function navItemList( listItems )
{
	this._iter                 = 0;
	this._navListItems         = new Array();
	
	/* ---- ---- */
	
	/* get next item */
	this.next     = function nextListItem() {
				if (this._iter == this._navListItems.length) 
					return false;
				else
					return this._navListItems[ this._iter+=1 ];		
	}
	
	/* get previous item*/
	this.prev     = function prevListItem() {
				if (this._iter == 0) 
					return false;
				else
					return this._navListItems[ this._iter-=1 ];	
	}
	
	/* get current item*/
	this.current  = function currentListItem() {
				return (this._iter > this._navListItems.length) ? false : this._navListItems[ this._iter ];	
	}
	
	/* get current item iterator */
	this.currentPosition = function currentListItemIter() {
				return this._iter;
	}
	
	/* add item  */
	this.addItem = function addListItem(listItem) {
				this._navListItems.push(listItem);
	}
	
	/* set iter  */
	this.setPosition = function setIter(iter) {
				this._iter = iter;
	}
	
	/* reset iter  */
	this.resetPosition = function resetIter(iter) {
				this._iter = 0;
	}
	
	
	
	/* ---- ---- */
	
	if (typeof(listItems) != "undefined") {
		for (var i=0; i<listItems.length; i++) {
			this.addItem(listItems[i]);
		}
	}
}