function lw_transformierenUndEinfuegen(xmlDocument, id) {
  // Du dachtest, du könntest dir Cross-Browser-Programmierung 
  // endlich sparen? Ha! :-(
  if (window.ActiveXObject) { // MSIE
      // Transformation durchfuehren
      var newDocument = lwXsltAjaxTreeProcessor.transformToDocument(xmlDocument);
  
      // Webseite aktualisieren
      // MSIE liefert "Object Error" bei appendChild.
      // Deshalb für MSIE zuerst Serialisieren, innerHTML zuweisen 
      // und damit intern wieder Deserialisieren lassen (autsch!).
      // Vermutlich Bug in Sarissa.
  
      $(id).innerHTML += new XMLSerializer().serializeToString(newDocument.documentElement);
  
  } else { // andere Browser
  
      // Transformation durchführen
      var newDocumentFragment = lwXsltAjaxTreeProcessor.transformToFragment(xmlDocument, document);
      // Webseite aktualisieren
      $(id).appendChild(newDocumentFragment);
  }
}

//
// aufklappen/zuklappen
//
function lw_aufklappen(id, wurzel) {
  var callbackHandler = function(responseXML) {
        if (wurzel === true) {
          lwXsltAjaxTreeProcessor.setParameter("", "id", "");
          lw_transformierenUndEinfuegen(responseXML, id);
        } else {
          lwXsltAjaxTreeProcessor.setParameter("", "id", id);
          lw_transformierenUndEinfuegen(responseXML, "lwAjaxTree_node_" + id);
          $("lwAjaxTree_plus_"  + id).style.display = "none";
          $("lwAjaxTree_minus_" + id).style.display = "inline";
        }
      }

  var queryString = "";
  if (wurzel !== true) {
    queryString = '?id=' + id;
  }

  Lokris.AjaxCall('../lwAjaxTreeWS/' + queryString, callbackHandler);
}

function lw_zuklappen(id) {
  $("lwAjaxTree_subtree_" + id).parentNode.removeChild($("lwAjaxTree_subtree_" + id));
  $("lwAjaxTree_plus_"  + id).style.display = "inline";
  $("lwAjaxTree_minus_" + id).style.display = "none";
}

// 
// Konstruktor für stylesheet-gebundenen XSLTProcessor.
//
function lwXsltProcessor(uri) {
   var processor = new XSLTProcessor();

   var xmlhttp = Lokris.AjaxCall(uri, null, {async: false});
   processor.importStylesheet(xmlhttp.responseXML);
   return processor;
}

//
// XSLT-Stylesheet laden / XSLTProcessor initialisieren
//
var lwXsltAjaxTreeProcessor = new lwXsltProcessor("/code/beispiele/lwAjaxTree/lwAjaxTree.xslt");

//
// Inspiriert durch Prototypes $()-Funktion
//
function $(id) {
  return document.getElementById(id);
}
