/* 
   * Fügt den Listeneinträgen Eventhandler und CSS Klassen hinzu,
   * um die Menüpunkte am Anfang zu schließen.
   * 
   * navmenu: Referenz auf die Liste.
   * data: String, der die Nummern aufgeklappter Menüpunkte enthält.
   */
  function navMenu_init(navmenu, data) {
    if(document.getElementById('navmenu')) {
    if(document.getElementById('folder_all_img')) {document.getElementById('folder_all_img').style.display = "block";}
	var array = new Array(0);
    if(data != null && data != "") {
      array = data.match(/\d+/g);
    }
    var items = navmenu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
		items[i].onclick = navMenu_handleClick;
		var classes = navMenu_getClasses(items[i]);
		
		if(items[i].nextSibling && items[i].nextSibling.nodeName=="#text") {
			var sib = items[i].nextSibling.nextSibling;
		}
		else {
			var sib = items[i].nextSibling;
		}
		if(sib) {
			classes.push("arm")
		}
		else {
			if(items[i].getElementsByTagName("li")[0]) {
				classes.push("begin")
			}
			else {
				classes.push("end")
			}
		}
		items[i].className = classes.join(" ");
		/*
		if(array.length > 0 && array[0] == i) {
			 array.shift();
		}
		*/
		if(!navMenu_contains(navMenu_getClasses(items[i]), "navmenu_opened")
			  && items[i].getElementsByTagName("ul").length
				+ items[i].getElementsByTagName("ol").length > 0) {
			//var classes = navMenu_getClasses(items[i]);
			if((!array == null) && (array.length > 0 && array[0] == i)) {
			  classes.push("navmenu_opened")
			}
			else {
			  classes.push("navmenu_closed")
			}
			items[i].className = classes.join(" ");
			if((!array == null) && (array.length > 0 && array[0] == i)) {
			  array.shift();
			}
		}
    }
	var items = navmenu.getElementsByTagName("a");
    for(var i = 0; i < items.length; i++) {
      items[i].onclick = navMenu_handleClick;
    }
	navMenu_open_current(navmenu);
  }
  }
  
  
  /*
   * Ändert die Klasse eines angeclickten Listenelements, sodass
   * geöffnete Menüpunkte geschlossen und geschlossene geöffnet
   * werden.
   *
   * event: Das Event Objekt, dass der Browser übergibt.
   */
  function navMenu_handleClick(event) {
	if(event == null) { //Workaround für die fehlenden DOM Eigenschaften im IE
      event = window.event;
      event.currentTarget = event.srcElement;
      while(event.currentTarget.nodeName.toLowerCase() != "li") {
        event.currentTarget = event.currentTarget.parentNode;
      }
      event.cancelBubble = true;
    }
    else {
      event.stopPropagation();
    }
	//alert(event.currentTarget);
	var array = navMenu_getClasses(event.currentTarget);
	for(var i = 0; i < array.length; i++) {
      //if(array[i] == "current") var is_current = true;
	  if(array[i] == "navmenu_closed") {
        array[i] = "navmenu_opened";
      }
      else if(array[i] == "navmenu_opened") {
        array[i] = "navmenu_closed"
      }
    }
    event.currentTarget.className = array.join(" ");
	navMenu_open_current("");
  }
  
  /*
   * Gibt alle Klassen zurück, die einem HTML-Element zugeordnet sind.
   * 
   * element: Das HTML-Element
   * return: Die zugeordneten Klassen.
   */
  function navMenu_getClasses(element) {
    if(element.className) {
      return element.className.match(/[^ \t\n\r]+/g);
    }
    else {
      return new Array(0);
    }
  }
  
  /*
   * Überprüft, ob ein Array ein bestimmtes Element enthält.
   * 
   * array: Das Array
   * element: Das Element
   * return: true, wenn das Array das Element enthält.
   */
  function navMenu_contains(array, element) {
    for(var i = 0; i < array.length; i++) {
      if(array[i] == element) {
        return true;
      }
    }
    return false;
  }
  
  /*
   * Gibt einen String zurück, indem die Nummern aller geöffneten
   * Menüpunkte stehen. 
   *
   * menu: Referenz auf die Liste
   * return: Der String
   */
  function navMenu_store(navmenu) {
    var result = new Array();;
    var items = navmenu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
      if(navMenu_contains(navMenu_getClasses(items[i]), "navmenu_opened")) {
        result.push(i);
      }
    }
    return result.join(" ");
  } 
  
  function navMenu_unload() {
	  window.name = navMenu_store(document.getElementById('navmenu'));
  }
  
  function navMenu_collapse_all(navmenu) {
	var items = navmenu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
      if(navMenu_contains(navMenu_getClasses(items[i]), "navmenu_opened")
          && items[i].getElementsByTagName("ul").length
            + items[i].getElementsByTagName("ol").length > 0) {
		var classes = navMenu_getClasses(items[i]);
		items[i].className = classes.join(" ");
		items[i].className = items[i].className.replace(/navmenu_opened/, "navmenu_closed");
      }
    }
	navMenu_open_current(navmenu);
  }
  
  function navMenu_expand_all(navmenu) {
	var items = navmenu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
      if(navMenu_contains(navMenu_getClasses(items[i]), "navmenu_closed")
          && items[i].getElementsByTagName("ul").length
            + items[i].getElementsByTagName("ol").length > 0) {
		var classes = navMenu_getClasses(items[i]);
		items[i].className = classes.join(" ");
		items[i].className = items[i].className.replace(/navmenu_closed/, "navmenu_opened");
      }
    }
  }
  
  function navMenu_open_current(navmenu) {
	if(navmenu == "") var navmenu = document.getElementById('navmenu');
	var items = navmenu.getElementsByTagName("li");
    for(var i = 0; i < items.length; i++) {
	  if(navMenu_contains(navMenu_getClasses(items[i]), "current")) {
		var classes = navMenu_getClasses(items[i]);
		items[i].className = classes.join(" ");
		items[i].className = items[i].className.replace(/navmenu_closed/, "navmenu_opened");
		if(items[i].parentNode.parentNode.nodeName == "LI") {
			navMenu_open_item(items[i].parentNode.parentNode);
		}
      }
    }
  }
  
  function navMenu_open_item(item) {
	if(navMenu_contains(navMenu_getClasses(item), "navmenu_closed")
          && item.getElementsByTagName("ul").length
            + item.getElementsByTagName("ol").length > 0) {
		var classes = navMenu_getClasses(item);
		item.className = classes.join(" ");
		item.className = item.className.replace(/navmenu_closed/, "navmenu_opened");
    }
	if(item.parentNode.parentNode.nodeName == "LI") {
		navMenu_open_item(item.parentNode.parentNode);
	}
  }

function changeClassName(class_name_old, class_name_new) {
  var all_obj,ret_obj=new Array(),j=0,teststr;
  if(document.all)all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)all_obj=document.getElementsByTagName("*");
  for(i=0;i<all_obj.length;i++)
  {
    if(all_obj[i].className.indexOf(class_name_old)!=-1)
    {
      teststr=","+all_obj[i].className.split(" ").join(",")+",";
      if(teststr.indexOf(","+class_name_old+",")!=-1)
      {
        all_obj[i].className = class_name_new;
        //ret_obj[j]=all_obj[i];
        j++;
      }
    }
  }
  return ret_obj;
}

function new_page_val(pagename) {
  if(pagename == '') {
    alert("Bitte gib einen Seitennamen ein!");
    return false;
  }
  else return true;
}




  
addInitEvent(function(){navMenu_init(document.getElementById('navmenu'), window.name );});
addInitEvent(function(){addEvent(window,'unload',navMenu_unload); });

