/*

  LINK-TEXT-TITEL-AUSTAUSCHSCRIPT

  Script durchsucht Links einer Seite
  nach bestimmten Strings (z.B. PDF, Word)
  extrahiert diesen aus dem Link-Text
  und ergänzt den Link-Titel um einen
  entsprechenden Zusatz.

  Durch dieses Script wird gewährleistet,
  dass die Links für Screenreader
  mit der kompletten Information zur Verfügung stehen,
  für die grafische Ausgabe die Zusatzinformation
  allerdings aus dem Text in den Titel verschoben werden.

  Kompatibel mit XHTML 1.0 strict und WCAG1/BITV          */
  
  
  
  // Funktion wird vom Skript externeLinks aufgerufen

// Konfiguration: Array mit Suchstrings aus dem Linktext
var aSuchStrings = new Array(2);
for (i = 0; i < aSuchStrings . length; i++) {
    aSuchStrings[i] = new Array(2);
}
// PDF
aSuchStrings[0][0] = "PDF: ";
aSuchStrings[0][1] = " (PDF)";

// Doc
aSuchStrings[1][0] = " (DOC)";
aSuchStrings[1][1] = "DOC: ";
// Für jeden weiteren Eintrag
// muss die Array-Initialisierung um (1) erhöht werden
// Konfiguration: Array mit Ersatz-String für den Title
var replace = new Array(2);
replace[0] = 'PDF-Dokument';
replace[1] = 'Word-Dokument';
// Konfiguration Target:
// val -1: es wird kein Target hinzugefügt
// val 1: ein Target mit "_blank" wird hinzugefügt
var addTarget = 1;

function changeTextAndTitle()
{
    // Test, ob DOM unterstützt wird
    if (!document . getElementsByTagName) {
        return;
    }
    // Überführen der Links in ein Array
    var aLinks = document . getElementsByTagName("a");
    // Durchlaufen des Link-Arrays
    
    
    for (i = 0; i < aLinks . length; i++) {
        // ermitteln von Title und Text des Links
        sOrigTitle = aLinks[i] . getAttribute("title");
        
	if (aLinks[i] . firstChild != null ) { //&& aLinks[i] . firstChild . data != null) {
	  //        sLinkText = aLinks[i] . firstChild . data;

	  chldCount = aLinks[i].childNodes.length;
	  //	  alert("Child elements cnt: " + chldCount);

	  elNode = aLinks[i] . firstChild;
	  patternFound = 0;

	  while( elNode != null ) {

	    switch( elNode.nodeType ) {

	    case 1:
	      //	      alert("is ein weiterer child element: " + elNode.nodeName);
	      break;
	    case 3:
	      //	      alert("ist TEXT element: " + elNode.data);
	      sLinkText = elNode.data;
	      if( sLinkText != null ) {
		// Durchlaufen des Konfig-Arrays
		for (j = 0; j < aSuchStrings . length; j++) {
		  // Durchlaufen der Details im Konfig-Array
		  for (k = 0; k < aSuchStrings[j] . length; k++) {
		    // falls im Text ein Teilstring des Konf-Detail-Array gefunden wirdn
		    // wird nun Text und Link verändert.
		    if (sLinkText . indexOf(aSuchStrings[j][k]) > -1) {
		      // Firefox steigt aus, fall kein title-Attr. gesetzt ist
		      // deswegen Anwendung im try-catch-Block
		      try {
			var sNeuerText = '';
			// Der Linktext wird anhand des gefundenen
			// Suchstring geteilt
			var aLinkTexte = sLinkText . split(aSuchStrings[j][k]);
			// Das Array wird wieder zusammen gesetzt (der Suchsting fehlt nun!)
			if (aLinkTexte[0]) {
			  sNeuerText = aLinkTexte[0] ;
			} else if (aLinkTexte[1]) {
			  sNeuerText += aLinkTexte[1] ;
			}
			// Link-Text wird ersetzt
			elNode. nodeValue = sNeuerText;
			// Link-Title wird um File-Typ-Erweiterung ergänzt
			// jenachdem, ob der alte Link-Title gesetzt war
			// wird der Zusatz in Klammern gesetzt
			if (sOrigTitle . length > 0) {
			  sZusatzInfo = ' (' + replace[j] + ')';
			} else {
			  sZusatzInfo = replace[j];
			}
			aLinks[i] . setAttribute("title", sOrigTitle + sZusatzInfo);
			// je nach Konfiguration hinzufügen eines Targets
			if (addTarget == 1) {
			  aLinks[i] . target = "_blank";
			}

			/*
			newTitle = aLinks[i] . getAttribute("title"); 
			if( newTitle != null )
			  alert("New: " + newTitle);
			*/
			//elNode = null; // while schleife beenden 
			break;
		      }
		      catch(err) {
		      }
		    } // end-of if
		  } // end-of for Def-Array-Detail
		} // end-of for Def-Array        // Durchlaufen des Konfig-Arrays
	      }
	      //	      break;
	    default:
	      //	      alert("Node type: " + elNode.nodeType);
	    }
	    elNode =  elNode.nextSibling;
	  }
	} // end-of if 


    } // end-of for Link-Array
}
