/********************buttonclass.js******************************
Diese Klasse definiert ein Button-Objekt und ein Buttongroup-
Objekt.

Author: Michael Binninger
Stand:  02.02.2000
Status: OK, getestet auf NS4, IE4, NS3

Diese Klasse ist geistiges Eigentum von Michael Binninger und
darf nur mit Erlaubniss des Autors weiterverbreitet und benuetzt
werden.
*****************************************************************/

//Wrapper fuer Objektzugriff von HTML
function xx(z){
         eval(z);
}


/***********************Buttonobjekt*****************************/

//Methode: Schaltet Button aktiv
function aktiv(){
         document.images[this.name].src=this.outimg.src;
         this.isaktiv=true;
}

//Methode: schaltet Button inaktiv
function inaktiv(){
         document.images[this.name].src=this.aktivimg.src;
         this.isaktiv=false;
}

//Methode: aktiver, ausgeschalteter Button leuchtet bei MouseOver
function over(){
         if(this.isaktiv && !this.isan)
              document.images[this.name].src=this.overimg.src;
}

//Methode: aktiver, ausgeschalteter Button hoert bei MouseOut auf zu leuchten
function out(){
         if(this.isaktiv && !this.isan)
              document.images[this.name].src=this.outimg.src;
}

//Methode: schaltet aktiven Button an und alle anderen in der Gruppe aus und fuehrt das in //action hinterlegte Script aus
function on(x){
         if(this.isaktiv){
             eval(this.group+".off()");                    //alle Buttons der Gruppe ausschalten
             document.images[this.name].src=this.onimg.src;//*diesen* Button anschalten
             this.isan=true;
             if(x) {this.action=x};
             //alert(this.action);
             eval(this.action);                            //action ausfuehren
         }
}
//Methode: schaltet aktiven Button aus
function off(){
         if(this.isaktiv)
             document.images[this.name].src=this.outimg.src;
             this.isan=false;
}


//Konstruktor Button-Objekt
function button(name,group,aktivgif,outgif,overgif,ongif,action){
         //Default Anfangs-Status eines neuen Buttons auf inaktiv und ausgeschaltet setzen
         this.isaktiv=false;
         this.isan   =false;
         //sonstige Instanzvariablen belegen
         this.name=name;
         this.group=group;
         this.action=action;
         //icons laden
         this.aktivimg  = new Image();
         this.outimg    = new Image();
         this.overimg   = new Image();
         this.onimg     = new Image();
         this.aktivimg.src  = aktivgif;
         this.outimg.src    = outgif;
         this.overimg.src   = overgif;
         this.onimg.src     = ongif;
         //methoden
         this.aktiv   = aktiv;
         this.inaktiv = inaktiv;
         this.over    = over;
         this.out     = out;
         this.on      = on;
         this.off     = off;
}

/****************************Buttongroup-Objekt******************************/

//Methode: aktiviert alle Buttons der Gruppe
function groupaktiv(){
         for (var i in this){
             if (this[i].aktiv)
                this[i].aktiv();
         }
}

//Methode: deaktiviert alle Buttons der Gruppe
function groupinaktiv(){
         for (var i in this){
             if (this[i].inaktiv)
                this[i].inaktiv();
         }
}

//Methode: schaltet alle Buttons der Gruppe aus
function groupoff(){
         for (var i in this){
             if (this[i].off)
                this[i].off();
         }
}

//Konstruktor: Buttongroup-Objekt
function buttongroup(){
         //Methoden
         this.aktiv=groupaktiv;
         this.inaktiv=groupinaktiv;
         this.off=groupoff;

}

