function partner(land) {
 // erzeugt den Partner-Container und holt die Inhalte
 if (PA.container) PA.schliessen();
 document.getElementById("partner_platzhalter").appendChild(PA.erzeugen());
 PA.partnerueber.nodeValue = PA.partnervorspann + land;
 PA.holen(land);
 document.getElementById("hiddenHeadline").style.visibility="visible";
}

// Partner-Layer-Objekt
var PA = {
 // Die Partner sollen von außen zugänglich sein:
 container: null,		// DIV-Container
 partnervorspann: "Partner: ",	// Überschrift-Vorspann
 partnerueber: null,		// Überschriftentext
 partnerabsatz: null,		// Absatz für partnertext
 ajax: false,			// XMLHttpRequest-Objekt
 div_breite: 20,		// Breite und ...
 div_hoehe: 30,			// Höhe des Partner-Containers

 erzeugen: function() {
  // Der Partner-Layer wird bei jedem Aufruf neu erzeugt.
  // Alternativ könnte er mit den Stylesheet-Eigenschaften
  // visibility oder display aus- und eingeblendet werden.
  // erzeugt Div-Container
  PA.container = document.createElement("div");
  PA.container.id = "partner";
  PA.container.style.width = PA.div_breite + "em";

  // Partner-Überschrift
  PA.titel = document.createElement("h1");
  PA.partnerueber = document.createTextNode(PA.partnervorspann);
  PA.titel.appendChild(PA.partnerueber);
  // Link zum Schließen
  var fn_link = document.createElement("a");
  fn_link.setAttribute("href", "javascript:PA.schliessen()");
  // Absatz für Partnertext vorbereiten
  PA.partnerabsatz = document.createElement("p");
  // zusammensetzen
  PA.titel.appendChild(fn_link);
  PA.container.appendChild(PA.titel);
  PA.container.appendChild(PA.partnerabsatz);

  // zurückgeben
  return PA.container;
 },

 holen: function(land) {
  // Ajax-Verbindung herstellen
  try {			// W3C-Standard
   PA.ajax = new XMLHttpRequest();
  } catch(w3c) {
   try {			// Internet Explorer
    PA.ajax = new ActiveXObject("Msxml2.XMLHTTP");
   } catch(msie) {
    try {		// Internet Explorer alt
     PA.ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(msie_alt) {
     alert("Ihr Browser kann keine Partner anzeigen.");
     return false;	// !!! Link auf XML-Dokument
    }
   }
  }
  // Datei anfordern (asynchron)
  PA.ajax.open('GET', 'partners.xml', true);
  PA.ajax.setRequestHeader('Content-Type', 'text/xml');
  // umgeht Internet Explorers Caching von GET-Anfragen
  PA.ajax.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
  PA.ajax.send(null);
  // nach Status-Änderungen der Verbindung
  // werden die empfangenen Inhalte geparst
  PA.ajax.onreadystatechange = function() {
   // wenn Datei komplett empfangen ist ...
   if (PA.ajax.readyState == 4) {
    // Dokument nicht gefunden (Code 0 für lokale Tests):
    if (PA.ajax.status != 200 && PA.ajax.status != 0) {
     PA.partnerabsatz.firstChild.nodeValue = "No partners in this country";
     return false;
    }
    // schreibe alle Partner in pas
    var pas = PA.ajax.responseXML.getElementsByTagName("partner");
    // Eine Schleife sucht nach der Partnernummer
    for(var i = 0; i < pas.length; i++) {
     if (pas[i].getElementsByTagName("land")[0].firstChild.nodeValue == land) {
      klonen(pas[i].getElementsByTagName("p")[0].cloneNode(true), PA.partnerabsatz);
      return true;
     }
    }
    var nicht_gefunden = document.createTextNode("No partners in " + land);
    PA.partnerabsatz.appendChild(nicht_gefunden);
    return false;
   }
   return false;
  }
  return false;
 },

 schliessen: function() {
  // löscht den Partner-Container
  document.getElementById("partner_platzhalter").removeChild(PA.container);
  PA.container = null;
  document.getElementById("hiddenHeadline").style.visibility="hidden";
 }
};

function klonen(quelle, ziel) {
 // Hilfsfunktion für Partner-Darstellung im DOM
 // Einfaches cloneNode() funktioniert nicht bei komplexen
 // Gebilden; eine Schleife baut den Teilbaum nach.
 for(var i = 0; i < quelle.childNodes.length; i++) {
  var knoten = quelle.childNodes[i];
  switch (knoten.nodeType) {
   case 1:	// Elementknoten
    var neu = ziel.appendChild(document.createElement(knoten.nodeName));
    for (var j = 0; j < knoten.attributes.length; j++) {
     neu.setAttribute(knoten.attributes[j].nodeName, knoten.attributes[j].nodeValue);
    }
    klonen(knoten, neu);
    break;
   case 3:	// Textknoten
    subknoten = document.createTextNode(knoten.nodeValue);
    ziel.appendChild(subknoten);
   // andere Knotentypen sind nicht relevant
  }
 }
}

// Funktion für das Jump-Menü
function openDir( form ) { 
	var newIndex = form.fieldname.selectedIndex; 
	if ( newIndex == 0 ) { 
		alert( "Please select a country!" ); 
	} else { 
		var cururl = form.fieldname.options[ newIndex ].value; 
		window.location.assign( cururl );
		form.fieldname.selectedIndex = 0;
	} 
} 
