
/* Activate the current document in the navigation div */
function navi_activate_current(destination) {
  var requester=document.location.href;
  var alleListen=destination.getElementsByTagName("ul");
  for (j=0; j<alleListen.length; j++) {
    var liste=alleListen[j];
    var alleEintraege=liste.getElementsByTagName("li");
    for (k=0; k<alleEintraege.length; k++) {
      var eintrag=alleEintraege[k];
      var alleLinks=eintrag.getElementsByTagName("a");
      for (i=0; i<alleLinks.length; i++) {
        var link=alleLinks[i];
        if (link.href==requester) {
          // found the link and the parent list item and the parent list
          link.className="active";
          liste.className="visible";
          // find the direct sub-lists and make them active
          var alleKinder=eintrag.childNodes;
          for (l=0; l<alleKinder.length; l++) {
            var kind=alleKinder[l];
            if (kind.tagName!=null && kind.tagName.toLowerCase()=="ul") {
              kind.className="visible";
            }
          }
        }
      }
    }
  }
}

/* handle klick events on a folder */
function navi_klick_folder(id) {
  var liste=document.getElementById(id);
  if (liste.className=="hidden")
    liste.className="visible";
  else
    liste.className="hidden";
}

/* Load navigation HTML fragment into the destination element 
   id = id of the destination div
   url = url of the navigation HTML fragment
   prefix = prefix to relative links
*/
function navi_load(id,url,prefix) {
  var destination=document.getElementById(id);
  try {
    // Send HTTP request (IE requires ActiveX, all other require XMLHttpRequest)
    // Konqueror does not work with POST request.
    var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
    request.open("GET", url, true);
    request.send(null);
    // wait for the result
    var counter=0;
    var timer = function() {
      if (request.readyState == 4) { 
         // fix the directory of all relative links
         var fixed=request.responseText.replace(/".\//g,"\""+prefix);
         // show the result
         destination.innerHTML=fixed;
         // activate the current page in the navigation
         navi_activate_current(destination);
      }
      else if (++counter>50) {
        // report timeout and cancel the request
        destination.innerHTML="AJAX timeout";
        request.abort();
      }
      else {
        // continue waiting
        window.setTimeout(timer,100);
      }
    }
    window.setTimeout(timer,100);
  }
  catch (e) {
    destination.innerHTML="AJAX compatible browser required";
  }
}
