<!-- Inhalt des JavaScripts für den Browser unsichtbar machen.
//
// Dateiname:     antZILLA.rollinit.js
// Copyright (C): aXL keschner / aXL-online.com 2006-2008
// Version:       2008-11-24
//
// Diese Datei enthaelt Funktionen zur Vorbereitung des Rollens:
//
// aXL_rollinit (...)
//    Initialisiert alle RollItems (DIVs) der Seite
//    sowie die dazu gehoerenden RollTools.
//
// aXL_rolltool (...)
//    Fuellt ein RollTool
//    mit den Richtungsknoepfen, der Regler-Spur und dem Regler.
//
// aXL_rollknopf (...)
//    Fuegt einen Richtungsknopf in ein RollTool ein.
//
// aXL_rolladressen (...)
//    Definiert die Zieladressen fuer Querverweise (href="#...") neu,
//    damit das RollTool auch bei Spruengen dorthin korrekt synchronisiert wird.
//
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

// Hilfe-Link:
// file:///D:/webdesign/hilfen_und_scripte/SELFHTML/SELFHTML80/dhtml/beispiele/navigation.htm

//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

function aXL_rollinit (diese_klasse)
//
// Copyright (C): aXL keschner / aXL-online.com 2006-2007
// Version:       2007-07-07
//
// Initialisiert alle RollItems (DIVs) der Seite
// sowie die dazu gehoerenden RollTools.
//
// Parameter:
//   diese_klasse: className der zu rollenden DIVs; default: "rollitem".
//
{
   // Voreinstellung der Klasse der zu suchenden DIVs:
   diese_klasse = (diese_klasse)
                ? diese_klasse
                : "rollitem"
                ;

   // Als RollItem in Frage kommende DIVs ermitteln:
   var diese_divs = document.getElementsByTagName ("div");
   var diese_anzahl = diese_divs.length;
   for (var ii=0; ii<diese_anzahl; ii++)
   {
       // Bei falschem "className" ist das DIV kein RollItem:
       // und das naechste DIV wird bearbeitet:
       if (diese_divs[ii].className != diese_klasse)
          continue;

       // RollBox ermitteln, die das RollItem enthaelt:
       var dieses_rollitem  = diese_divs[ii];
       var diese_rollbox    = dieses_rollitem.parentNode;

       // Das RollItem soll immer mindestens
       // die Groesse der uebergeordneten RollBox haben:
       dieses_rollitem.style.width = Math.max ( dieses_rollitem.offsetWidth
                                              , diese_rollbox.offsetWidth
                                              );
       dieses_rollitem.style.height = Math.max ( dieses_rollitem.offsetHeight
                                               , diese_rollbox.offsetHeight
                                               );

/*
alert ( diese_rollbox.id
      + ": " + diese_rollbox.offsetWidth
      + " / " + diese_rollbox.offsetHeight
      + " /// "
      + dieses_rollitem.id
      + ": " + dieses_rollitem.offsetWidth
      + " / " + dieses_rollitem.offsetHeight
      );
*/

       // Vorhandene RollTools fuer das aktuelle RollItem ermitteln
       // und initialisieren:
       var diese_achse = Array ("x", "y");
       for (var jj=0; jj<2; jj++)
       {
           // Wenn das Item nicht in dieser Achse gerollt werden muss,
           // wird der Schleifendurchlauf abgebrochen:
           if (  (  diese_achse[jj] == "x"
                 && dieses_rollitem.offsetWidth <= diese_rollbox.offsetWidth
                 )
              || (  diese_achse[jj] == "y"
                 && dieses_rollitem.offsetHeight <= diese_rollbox.offsetHeight
                 )
              )
              continue;

           // Moegliches RollTool fuer diese Achse ermitteln:
           var dieses_rolltool = document.getElementById ( dieses_rollitem.id
                                                         + "_rolltool_"
                                                         + diese_achse[jj]
                                                         );
           // Wenn das RollTool fuer diese Achse nicht existiert,
           // wird der Schleifendurchlauf abgebrochen:
           if (  !dieses_rolltool
              || !dieses_rolltool.id
              )
              continue;

/*
           ///////////////////// funktioniert nicht: !!!!!!!!!!!!!!!!!!!!!!!!!
           // Wenn noch nicht geschehen, wird noch ein JavaScript eingebunden:
           for ( kk=0; kk<=meine_module.length; kk++ )
           {
               if (kk == meine_module.length)
               {
                  meine_module[kk] = "rolltool";
//                  var newLI = document.createTextNode (
//                  document.write ( "<script type=\"text/JavaScript\" "
                  var newLI = document.createElement ("script");
                  document.getElementsByTagName("head")[0].appendChild(newLI);
                  newLI.setAttribute ("type","text/JavaScript");
                  newLI.setAttribute ("language","JavaScript");
                  newLI.setAttribute ("src",modul_pfad+"rolltool/antZILLA.rollen.js");
alert ( dieses_rollitem.id + " / " + kk + " module: " + meine_module.length );
               }
               else
               if (meine_module[kk] == "rolltool")
                  break;
           }
*/


           // Im Content vorhandene Querverweise (href="#...")
           // werden durch "onClick"-Attribute ersetzt:
           if (  dieses_rollitem.id == "content"
//              && diese_achse[jj] == "y"  // Nur einmal (bei vertikalem Rollen).
              )
              aXL_rolladressen ();


/*
           // Das RollTool wird mit den Richtungsknoepfen,
           // der Regler-Spur und dem Regler gefuellt:
           aXL_rolltool (dieses_rollitem.id, diese_achse[jj]);
*/


           // Position und Groesse des RollTools
           // sowie der Spur fuer den Regler festlegen:
           var diese_spur = document.getElementById ( dieses_rollitem.id
                                                    + "_rollspur_"
                                                    + diese_achse[jj]
                                                    )
                                                    ;
           if ( diese_achse[jj]=="x" )  // Horizontales Rollen:
           {
              dieses_rolltool.style.left  = diese_rollbox.offsetLeft;
              dieses_rolltool.style.width = diese_rollbox.offsetWidth;
              diese_spur.style.width      = diese_rollbox.offsetWidth
                                          - 2*diese_spur.offsetLeft
                                          ;
           }
           else
           if ( diese_achse[jj]=="y" )  // Vertikales Rollen:
           {
              dieses_rolltool.style.top    = diese_rollbox.offsetTop;
              dieses_rolltool.style.height = diese_rollbox.offsetHeight;
              diese_spur.style.height      = diese_rollbox.offsetHeight
                                           - 2*diese_spur.offsetTop
                                           ;
           }
// alert(diese_rollbox.id + ": " + dieses_rolltool.offsetHeight);
           // RollTool mit dem RollItem synchronisieren:
           aXL_rollsync (dieses_rollitem.id, diese_achse[jj]);
       }
   }
}

//////////////////////////////////////////////////////////////////

function aXL_rolltool (diese_rollid, diese_achse)
//
// Copyright (C): aXL keschner / aXL-online.com 2006-2007
// Version:       2007-07-07
//
// Fuellt ein RollTool
// mit den Richtungsknoepfen, der Regler-Spur und dem Regler;
// deren IDs werden aus der ID des zu rollenden Items gebildet.
//
// Parameter:
//   diese_rollid = ID des zu rollenden Items;
//   diese_achse  = waagerechtes (x) oder senkrechtes (y) Rollen.
//
{
   // Voreinstellung fuer die Achse:
   diese_achse = (diese_achse)
               ? diese_achse.toLowerCase()
               : "y"
               ;


   // Der erste Richtungsknopf:
   diese_richtung = (diese_achse=="x")
                  ? Array ("x", "li", "links")
                  : Array ("y", "auf", "oben")
                  ;
   aXL_rollknopf (diese_rollid, diese_richtung);


   // Die Regler-Spur:
   var dieses_element = document.createElement ("div");
   document.getElementById ( diese_rollid + "_rolltool_" + diese_achse )
                           . appendChild (dieses_element)
                           ;
   dieses_element.id          = diese_rollid + "_rollspur_" + diese_achse;
   dieses_element.className   = "rollspur_" + diese_achse;
/*
   dieses_element.setAttribute ( "id"
                               , diese_rollid + "_rollspur_" + diese_achse
                               );
   dieses_element.setAttribute ( "class"
                               , "rollspur_" + diese_achse
                               );
   dieses_element.setAttribute ( "onmousedown"
                               , "meine_rollspur=this;"
                               );
   dieses_element.onMousedown = "meine_rollspur=this;";
*/
   var dieses_attrib = document.createAttribute ("onMousedown");
   dieses_attrib.nodeValue = "meine_rollspur=this;";
   dieses_element.setAttributeNode (dieses_attrib);
//alert ( dieses_element.getAttribute("onMousedown") );


   // Der Regler:
   var dieses_element = document.createElement ("div");
   document.getElementById ( diese_rollid + "_rollspur_" + diese_achse )
                           . appendChild (dieses_element)
                           ;
   dieses_element.id        = diese_rollid + "_rollregler_" + diese_achse;
   dieses_element.className = "rollregler_" + diese_achse;


   // Der zweite Richtungsknopf:
   diese_richtung = (diese_achse=="x")
                  ? Array ("x", "re", "rechts")
                  : Array ("y", "ab", "unten")
                  ;
   aXL_rollknopf (diese_rollid, diese_richtung);
}

//////////////////////////////////////////////////////////////////

function aXL_rollknopf (diese_rollid, diese_richtung)
//
// Copyright (C): aXL keschner / aXL-online.com 2006-2007
// Version:       2007-07-07
//
// Fuegt einen Richtungsknopf in ein RollTool ein.
//
// Parameter:
//   diese_rollid = ID des zu rollenden Items;
//   diese_richtung = Angaben zur Beschriftung je nach Richtung des Rollens:
//                    Array ("x", "li",  "links",  "&#x25b2;")
//                    Array ("x", "re",  "rechts", "&#x25bc;")
//                    Array ("y", "auf", "oben",   "&#x25c4;")
//                    Array ("y", "ab",  "unten",  "&#x25ba;")
//
{
   var dieses_element = document.createElement ("div");
   document.getElementById ( diese_rollid + "_rolltool_" + diese_richtung[0] )
                           . appendChild (dieses_element)
                           ;
   dieses_element.id = diese_rollid + "_" + diese_richtung[1];
   dieses_element.className = "rollknopf_" + diese_richtung[1];

   var dieses_attrib = document.createAttribute ("onMouseover");
   dieses_attrib.nodeValue = "aXL_rollover (\"" + diese_rollid
                                         + "\", \""
                                         + diese_richtung[1]
                                         + "\");"
                                         ;
   dieses_element.setAttributeNode (dieses_attrib);

/*
                  +     " onmousedown=\"aXL_rollstop (\"" + diese_rollid + "\");"
                  +                    "aXL_rollover (\"" + diese_rollid
                                                            + "\", \""
                                                            + diese_richtung[1]
                                                            + "\", \""
                                                            + 3
                                                            + "\");\" "

                  +     " onmouseup=\"aXL_rollstop (\"" + diese_rollid + "\");"
                  +                  "aXL_rollover (\"" + diese_rollid
                                                          + "\", \""
                                                          + diese_richtung[1]
                                                          + "\");\" "
*/

   var dieses_attrib = document.createAttribute ("onMouseout");
   dieses_attrib.nodeValue = "aXL_rollstop (\"" + diese_rollid + "\");";
   dieses_element.setAttributeNode (dieses_attrib);


   // Das Bild im zweiten Richtungsknopf:
   dieses_element = document.createElement ("img");
   document.getElementById ( diese_rollid + "_" + diese_richtung[1] )
                           . appendChild ( dieses_element )
                           ;
   dieses_element.src   = modul_pfad + "rolltool/" + diese_richtung[1] + ".gif";
   dieses_element.alt   = "nach " + diese_richtung[2] + " scrollen";
   dieses_element.title = "nach " + diese_richtung[2] + " scrollen";
}

//////////////////////////////////////////////////////////////////

function aXL_rolladressen ()
//
// Copyright (C): aXL keschner / aXL-online.com 2006-2007
// Version:       2007-07-06
//
// Definiert die Zieladressen fuer Querverweise (href="#...") neu,
// damit das RollTool auch bei Spruengen dorthin korrekt synchronisiert wird.
//
// Parameter: (keine).
//
{
//window.status = window.location + " || ";

   // Adresszeile ohne den Hash ermitteln:
   var diese_location = String(window.location);  // Umwandlung ist notwendig !!!
   diese_location = ( diese_location.indexOf("#") > -1 )
                  ? diese_location.substr ( 0, diese_location.indexOf("#") )
                  : diese_location
                  ;

   // Als Querverweis in Frage kommende Links ermitteln:
   var diese_links = document.getElementsByTagName ("a");
   var diese_linkanzahl = diese_links.length;
   for (var ii=0; ii<diese_linkanzahl; ii++)
   {
       // Die folgenden Schritte sind so aufwendig noetig,
       // weil sich die Browser bei der Ermittlung des href-Attributes
       // unterschiedlich verhalten:

       // Wenn der a-Tag kein href-Attribut enthaelt,
       // ist es kein Link,
       // und der naechste a-Tag wird bearbeitet:
       if ( !( dieses_ziel=diese_links[ii].getAttribute("href") ) )
          continue;

       // Wenn der Link kein "#..." enthaelt,
       // ist es kein Querverweis,
       // und der naechste a-Tag wird bearbeitet:
       if ( dieses_ziel.indexOf("#") < 0 )
          continue;

       // Wenn der Link vor dem "#..."
       // nicht leer ist oder identisch mit der aktuellen Location,
       // ist es kein Querverweis,
       // und der naechste a-Tag wird bearbeitet:
       if (  dieses_ziel.substr ( 0,dieses_ziel.indexOf("#") ) != ""
          && dieses_ziel.substr ( 0,dieses_ziel.indexOf("#") ) != diese_location
          )
          continue;

       // Anker-Namen fuer den Querverweis ermitteln:
       dieses_ziel = dieses_ziel.substr ( dieses_ziel.indexOf("#") + 1 );

       // Querverweis neu definieren:
       diese_links[ii].href="javascript:aXL_rollezu('"+dieses_ziel+"');";
   }
}

//////////////////////////////////////////////////////////////////
// Folgenden Text für den Browser wieder sichtbar machen. -->
