// Datei buttonchange.js
//
// copyright 2000 by Kaiser/Thiemann Softwaretechnik Koblenz
//
// Steuert den Austausch von Buttons beim Fokussieren und Selektieren
//
// Für jeden Button wird ein Set definiert, zu dem dieser Button gehört. Buttons eines
// Sets werden als eine Gruppe betrachtet in so fern, daß immer nur einer dieser Buttons
// gleichzeitig selektiert sein kann.
// Buttons aus unterschiedlichen Gruppen hgindern sich gegenseitig beim Selektieren nicht.
// Es kann bis zu drei verschiedene Versionen jedes Buttons geben:
//    defokussiert und deselktiert - muß zu Beginn geladen werden
//    fokussiert - wird mit dem Aufruf von focusbutton übergeben
//    selektiert - wird mit dem Aufruf von pressbutton übergeben
//
// Exportierte Funktionen:
// defocusbuttons(set) - setzt den aktuell fokussierten Button in set zurück auf normal
// focusbutton(set,imgID,focusedimg) - Ordnet das Bild mit der ID imgID dem Set set zu und
//                                     ändert das Bild zu focusedimg (fürs Fokussieren)
// pressbutton(set,imgID,pressedimg) - Ordnet das Bild mit der ID imgID dem Set set zu und
//                                     ändert das Bild zu pressedimg (fürs Selektieren)
// preloadimg(imgSrc)                   - Lädt die Graphik mit der Adresse imgSrc vor
//
// Verwendung: onMouseOver=focusbutton(set,imgID,focusedimg)
//             onMouseOut=defocusbuttons(set)
//             pressbutton(set,imgID,pressedimg)
//
// Alle Graphiken für focusbutton und pressbutton sollten m Beginn der Seite durch
// einen entsprechenden Aufruf von preloadimg() vorgeladen werden


var selectedID        = new Array();//aktuell selektierte ID
var normimg        = new Array();//Puffer für Bildquelle vor Selektion
var focusedID        = new Array();//aktuell fokussierte ID
var nonfocusedimg        = new Array();//Puffer für Bildquelle vor Selektion
var preLoadCount = 0;            // Zähler für die Anzahl der bereits geladenen Graphiken
var preLoadImages = new Array(); // Zum Speicher der vorgeladenen Graphiken


function deselbuttons(set)        //zurücksetzen der bestehenden Selektion auf unselektierte Bildquelle
{
 if (selectedID[set]!="")         // Falls im angegeben Set ein Button selktiert ist,
 {                                // Wird dieser deselektiert
    window.document.images[selectedID[set]].src=normimg[set];
 }
 selectedID[set]="";             // Der Puffer für den selektierten Button wird geleert
 normimg[set]="";                // Der Puffer für den normalen Button wird geleert
}

function defocusbuttons(set)        //zurücksetzen der bestehenden Selektion auf unselektierte Bildquelle
{
 if ( (focusedID[set]!="") && (focusedID[set]!=selectedID[set]) )
 {                           // Falls im angegeben Set ein Button fokussiert und nicht selktiert ist,
    window.document.images[focusedID[set]].src=nonfocusedimg[set];  // wird dieser defokussiert
 }
 focusedID[set]="";             // Der Puffer für den fokussierten Button wird geleert
 nonfocusedimg[set]="";         // Der Puffer für den normalen Button wird geleert
}

function pressbutton(set,imgID,pressedimg)  // Selektieren eines Buttons
{
 if (selectedID.length<(set+1))   // Falls das angegeben Set noch nicht existiert...
 {
  for (i=selectedID.length;i<=set;i++)//neue Arrayelemente initialisieren
  {
   selectedID[i]="";
   normimg[i]="";
  }
 }
 else deselbuttons(set);        // ansonsten aktuellen Button deselktieren

 defocusbuttons(set);           // in jedem Fall defocussieren

 normimg[set]=window.document.images[imgID].src;        //aktuelle unselektierte Bildquelle merken
 window.document.images[imgID].src=pressedimg;          //aktuelles Bild auf neue Bildquelle umsetzen
 selectedID[set]=imgID;                        //Bild-ID merken
}

function focusbutton(set,imgID,focusedimg)   // Fokussieren eines Buttons
{
 if (imgID != selectedID[set])               // Falls die übergebene ID nicht selektiert ist...
 {
  if (focusedID.length<(set+1))              // Falls das angegeben Set noch nicht existiert...
  {
   for (i=focusedID.length;i<=set;i++) //neue Arrayelemente initialisieren
   {
    focusedID[i]="";
    nonfocusedimg[i]="";
   }
  }
  else defocusbuttons(set);          // ansonsten Buttons defokusieren

  nonfocusedimg[set]=window.document.images[imgID].src;        //aktuelle unselektierte Bildquelle merken
  window.document.images[imgID].src=focusedimg;                //aktuelles Bild auf neue Bildquelle umsetzen
  focusedID[set]=imgID;                        //Bild-ID merken
 }
}

function preloadimg(imgSrc)
{
 preLoadImages[preLoadCount] = new Image();
 preLoadImages[preLoadCount].src = imgSrc;
 preLoadCount++;
}
