//***********************************************************************
//
//    Javascript Funktionen fuer www.berliner-praxen.de
//    2/2001 V. Schmitt, volker@formfabrik.de 
//    getestet mit Nav4.7, Nav6, IE5.0, Opera5 
//    Nur Nav4x braucht Sonderbehandlung (isNav4 = true)
//
//***********************************************************************

// Konfigurations-Parameter *********************************************

// timeout (Bildwiederholungsrate der Animation in ms)

var timeout = 20;

// Anzahl der Bilder eines "moves"

var steps = 10;
var posArray = new Array(steps);

// Array das den Zustand des Menüs speichert.
// menueArray.length = Anzahl der Buttons

var menueArray = new Array(1,1,1,1,1);

//  Grössen der Zwischenräume für die Submenüs in Pixel

var distArray = new Array(0,43,65,0,0);

//  Anzahl der Submenüs und Maximalwert (von Null zählen)

var subnum = new Array(0,1,2,0,0); 
var submax = 2;

// Markierung der aktiven Seite

var page = new Array("0","0","0","0","0");
var subpage = new Array("0","0","0","0","0");

// Konstruktor für 2-dim Array ******************************************

function dim2Array(x,y) {

  for (var i = 0; i < x; i++) {
     this[i] = new Array(y);
  }
  this.cols = x;
  this.rows = y;

}

// Button Bilder **********************************************************

var butArray = new Array(5);
var butPressArray = new Array(5);
var butAktArray = new Array(5);
for (i=0;i<=4;i++) {
   butArray[i] = new Image();
   butArray[i].src = "bilder/but_" + i + ".gif";
   butPressArray[i] = new Image();
   butPressArray[i].src = "bilder/but_press_" + i + ".gif";
   butAktArray[i] = new Image();
   butAktArray[i].src = "bilder/but_akt_" + i + ".gif";
}
var subArray = new Array(5);
var subPressArray = new Array(5);
var subAktArray = new Array(5);
for (i=0;i<=1;i++) {
   subArray[i] = new Image();
   subArray[i].src = "bilder/sub_1_" + i + ".gif";
   subPressArray[i] = new Image();
   subPressArray[i].src = "bilder/sub_press_1_" + i + ".gif";
   subAktArray[i] = new Image();
   subAktArray[i].src = "bilder/sub_akt_1_" + i + ".gif";
}
for (i=0;i<=2;i++) {
   j = i + 2;
   subArray[j] = new Image();
   subArray[j].src = "bilder/sub_2_" + i + ".gif";
   subPressArray[j] = new Image();
   subPressArray[j].src = "bilder/sub_press_2_" + i + ".gif";
   subAktArray[j] = new Image();
   subAktArray[j].src = "bilder/sub_akt_2_" + i + ".gif";
}
var butAktUpArray = new Array(5);
var butAktDownArray = new Array(5);
butAktUpArray[1] = new Image();
butAktUpArray[2] = new Image();
butAktDownArray[1] = new Image();
butAktDownArray[2] = new Image();
butAktUpArray[1].src = "bilder/but_akt_up_1.gif";
butAktUpArray[2].src = "bilder/but_akt_up_2.gif";
butAktDownArray[1].src = "bilder/but_akt_down_1.gif";
butAktDownArray[2].src = "bilder/but_akt_down_2.gif"; 

var butUpArray = new Array(5);
var butDownArray = new Array(5);
butUpArray[1] = new Image();
butUpArray[2] = new Image();
butDownArray[1] = new Image();
butDownArray[2] = new Image();
butUpArray[1].src = "bilder/but_menue_1.gif";
butUpArray[2].src = "bilder/but_menue_2.gif";
butDownArray[1].src = "bilder/but_press_1.gif";
butDownArray[2].src = "bilder/but_press_2.gif"; 

//var butTempArray = new Array(3);
//for (i=1;i<=2;i++) {
//   butTempArray[i] = new Image();
//   butTempArray[i].src = "bilder/but_menue_" + i + ".gif";
//}
var oldpixpos2 = new dim2Array(4,submax);

// Browser test ************************************************************


var isIE = false;
var isNav4 = false;
var isNav5 = false;

      var vers = parseInt(navigator.appVersion)
      if (navigator.appName.indexOf("Netscape") != -1) {
           if( vers < 5 ) {
               isNav4 = true;
           } else {
               isNav5 = true;
           }
      }
      if (navigator.appName.indexOf("Microsoft") != -1) {
           isIE = true;
      }


// Berechnen der Zwischenpositionen fuer Zeiger-Animation ******************

var pos = 0;
var n1 = 0;
var active = false;
var oldpixpos = new Array(4);

function move(nbut) {
  if (!active) {
     var but = "but_" + nbut;
     n1 = nbut - 1;
     var but1 = "but_" + n1;
     var iname = "but" + n1;
     var oldpos;

     //alte Buttonpositionen merken    

     if (isNav4) { 
       for(i=0;i<=4;i++) {
         oldpixpos[i] = document.layers[i].top;

         // im Falle von Submenüs auch diese Positionen merken
       
         if (subnum[i] > 0) {
            for(j=0;j<=subnum[i];j++) {
              var id = "sub_" + i + "_" + j;
              oldpixpos2[i][j] = document.layers[id].top;
            }
         }

       }

     // das ganze nochmal im IE-style

     } else { 
       for(i=0;i<=4;i++) {
         obj = "but_" + i;
         oldpixpos[i] = parseInt(document.getElementById(obj).style.top) ;

         // im Falle von Submenüs auch diese Positionen merken
       
         if (subnum[i] > 0) {
            for(j=0;j<=subnum[i];j++) {
              var id = "sub_" + i + "_" + j;
              oldpixpos2[i][j] = parseInt(document.getElementById(id).style.top);
            }
         }

       }

     }
 
     // Positionen abhängig von Zwischenraumgrösse (distArray) und Richtung (menueArray = +- 1) bestimmen

     newpixpos = oldpixpos[n1] + (distArray[n1] * menueArray[n1]);
     stepsize =(newpixpos - oldpixpos[n1])/steps;

     for  (var i = 0; i < steps; i++) {     
       posArray[i] = parseInt((i+1)*stepsize) ;                  
     }

    // Bilder für onmouseover-Effekt tauschen

//    src =  butPressArray[n1].src;
//    butPressArray[n1].src = butTempArray[n1].src;
//    butTempArray[n1].src = src;
//     if (isNav4) { document.layers[but1].document.images[iname].src = butPressArray[n1].src; }
//    else  { document.images[iname].src = butPressArray[n1].src; }


     // Richtung für nächste Aktion umkehren 

     menueArray[n1] = -1 * menueArray[n1];  

     // Zuklappendes Submenü verstecken

     if (menueArray[n1] > 0) {
         for(j=0;j<=subnum[n1];j++) {
            var id = "sub_" + n1 + "_" + j;
            if (isNav4) {document.layers[id].visibility = "hide";}
            else       {document.getElementById(id).style.visibility = "hidden";}
         }
     }

    // Animation starten     

     pos = 0;
     setpos();
  }
}

// Setzen der Button-Position ***********************************************
// n1 ist globale variable für aktuellen Button

  
function setpos() {    
    active = true;
    if (isNav4) {
        for (i=n1+1;i<=4;i++) {
           i1 = i - 1;
           but = "but_" + i;
           document.layers[but].top = oldpixpos[i] + posArray[pos];
           if (subnum[i-1] > 0) {
              for(j=0;j<=subnum[i1];j++) {
                id = "sub_" + i1 + "_" + j;
                document.layers[id].top = oldpixpos2[i1][j] + posArray[pos]; 
             }
           }
        }
    } else {
        for (i=n1+1;i<=4;i++) {
           var i1 = i - 1;
           var but = "but_" + i;

           document.getElementById(but).style.top = oldpixpos[i] + posArray[pos];
           if (subnum[i-1] > 0) {
              for(j=0;j<=subnum[i1];j++) {
                var id = "sub_" + i1 + "_" + j;
                document.getElementById(id).style.top = oldpixpos2[i1][j] + posArray[pos]; 
             }
           }
        }
    }

    // Wiederholung von setpos(), bis neue Position erreicht ist

    pos++
    if (pos < steps) { 
      setTimeout("setpos()",timeout);
    } else {
      if (menueArray[subnum[n1]] < 0) {
          for(j=0;j<=subnum[n1];j++) {
             var id = "sub_" + n1 + "_" + j;
             if (isNav4) {document.layers[id].visibility = "show";}
             else       {document.getElementById(id).style.visibility = "visible";}
          }
      }
      active = false;             // move() wieder Befehl zulassen
    }
 }


// Austauch der Button Grafik ****************************************************

function toggle2(num,state) {
 if (page[num] != 1) {
   var id = "but_" + num;
   var iname = "but" + num;
   if (isNav4) {
     switch (state) {
       case "normal":  document.layers[id].document.images[iname].src = butArray[num].src; break;
       case "press":  if (menueArray[num] > 0) document.layers[id].document.images[iname].src = butDownArray[num].src; 
                    if (menueArray[num] < 0) document.layers[id].document.images[iname].src = butUpArray[num].src; break;
     }
   }
   else {
     switch (state) {
       case "normal":  document.images[iname].src = butArray[num].src; break;
       case "press":  if (menueArray[num] > 0) document.images[iname].src = butDownArray[num].src; 
                    if (menueArray[num] < 0) document.images[iname].src = butUpArray[num].src; break;
     }
   }
 } else {
   var id = "but_" + num;
   var iname = "but" + num;
   if (isNav4) {
     switch (state) {
       case "normal":  document.layers[id].document.images[iname].src = butAktArray[num].src; break;
       case "press":  if (menueArray[num] > 0) document.layers[id].document.images[iname].src = butAktDownArray[num].src; 
                      if (menueArray[num] < 0) document.layers[id].document.images[iname].src = butAktUpArray[num].src; break;
     }
   }
   else {
     switch (state) {
       case "normal":  document.images[iname].src = butAktArray[num].src; break;
       case "press":  if (menueArray[num] > 0) document.images[iname].src = butAktDownArray[num].src;
                      if (menueArray[num] < 0) document.images[iname].src = butAktUpArray[num].src; break;
     }
   }
 }
}
function toggle(num,state) {
 if (page[num] != 1) {
   var id = "but_" + num;
   var iname = "but" + num;
   if (isNav4) {
     switch (state) {
       case "normal":  document.layers[id].document.images[iname].src = butArray[num].src; break;
       case "press":  document.layers[id].document.images[iname].src = butPressArray[num].src; break;
       case "akt":  document.layers[id].document.images[iname].src = butAktArray[num].src; break;
     }
   }
   else {
     switch (state) {
       case "normal":  document.images[iname].src = butArray[num].src; break;
       case "press":  document.images[iname].src = butPressArray[num].src; break;
       case "akt":  document.images[iname].src = butAktArray[num].src; break;
     }
   }
 }
}

function toggle_sub(idn,num,state) {
 if (subpage[num] != 1) {
   var id = "sub_" + idn;
   var iname = "sub" + idn;
   if (isNav4) {
     switch (state) {
       case "normal":  document.layers[id].document.images[iname].src = subArray[num].src; break;
       case "press":  document.layers[id].document.images[iname].src = subPressArray[num].src; break;
       case "akt":  document.layers[id].document.images[iname].src = subAktArray[num].src; break;
     }
   }
   else {
     switch (state) {
       case "normal":  document.images[iname].src = subArray[num].src; break;
       case "press":  document.images[iname].src = subPressArray[num].src; break;
       case "akt":  document.images[iname].src = subAktArray[num].src; break;
     }
   }
 }
}


function showLayer(layer) {
  if (isNav4)
    layer.visibility = "show";
  if (isIE)
    layer.style.visibility = "visible";
}



