/*------------------------------------------------------------------+
| HI-Menu           Horizontales ImageMenu     27.06.01/28.07.02    |
| Contact:          contact@swanja.de          http://www.swanja.de |
+-------------------------------------------------------------------+
| Copyright 2001    Martin Hönninger           All Rights Reserved. |
+-------------------------------------------------------------------+

+---------------------------------------------------------------------------+
| Changed 2001    Stadtmobil CarSharing GmbH & Co.KG   All Rights Reserved. |
| Contact:        webmaster@stadtmobil.de         http://www.stadtmobil.de  |
+--------------------------------------------------------------------------*/


var _lid=0;

function Menu(x,y,width,height) {
       // ------------------------------ A: Methoden:
  this.addItem = addItem;
  this.buildMenu = buildMenu;
  this._iniMenu = _iniMenu;
  this._writeMenu = _writeMenu;
  this._showMenu = _showMenu;
  this._resetMenu = _resetMenu;
  this._updateImg = _updateImg;
       // ------------------------------- B: Eigenschaften:
  this.item        = new Array(); //
  this.itemActiv   = -1;
  this.itemHover   = -1;
  this.visible     = false;
  this.x = x || 300;
  this.y = y || 10;

  if ( ! document.swMenu ) document.swMenu = new Array();
  this.id = document.swMenu.length ;
  document.swMenu [ document.swMenu.length ] = this;
}

function Item(alt,img_a,width,height,menunr,link,target)
{
  this.lid = _lid++;
  this.img_a = img_a;
//  this.img_b = img_a.replace(/a\./,"b.");
  this.img_b = img_a.replace(/\.gif/,"_b.gif");
  preloadImages(this.img_a,this.img_b);
  this.alt = alt || "Menu";
  this.width = width || 200;
  this.height = height || 30;
  this.menunr = menunr || 0;
  this.link   = link   || "";
  this.target = target || ltarget;
  this.highlighted = false;
}

function addItem(alt,img_a,width,height,nr,link,target)
{
  this.item[this.item.length] = new Item(alt,img_a,width,height,nr,link,target);
}

function swClick(id,nr)
{
  document.swMenu[id].itemActiv = nr;
  document.swMenu[id]._updateImg();
  window.focus();
}

function swOver(id,nr)
{
  if ( document.swMenu[id].itemHover != nr ) {  // wegen NS wichtig !
    document.swMenu[id].itemHover = nr;
    document.swMenu[id]._updateImg();
  }

     // B. Neues Menue, falls 1. Ebene
  if ( id == 0) {

        //####################################################
        // von Heiko: Wechsel des Slogans und Rubriken-Bildes

         for(var i=0; i <= anzahlrubriken; i++ ) {

                if      (IE4 )  ebene = document.all[ "hkLayer"+ i];
                else if (NS6 )  ebene = document.getElementById( "hkLayer" + i );
                else            ebene = document.layers[ "hkLayer"+ i ];

                if      (IE4 )  bildebene = document.all[ "hkLayerBild"+ i];
                else if (NS6 )  bildebene = document.getElementById( "hkLayerBild" + i );
                else            bildebene = document.layers[ "hkLayerBild"+ i ];

                if      (NS4 )  ns4bildebene = document.layers[ "hkLayerBildNS4"+ i ];

                if (i == nr)
                {
                            if (NS4)   ebene.visibility = "visible";
                            else       ebene.style.visibility =  "visible";
                            if (NS4)   ns4bildebene.visibility = "visible";
                            else       bildebene.style.visibility =  "visible";
                } else {
                            if (NS4)   ebene.visibility = "hidden";
                            else       ebene.style.visibility =  "hidden";
                            if (NS4)   ns4bildebene.visibility = "hidden";
                            else       bildebene.style.visibility =  "hidden";
                }
          }
        //#####################################################


    swClick(id,nr); // setzt Activ-Merker + highlight

    var menakt = document.swMenu[id].item[nr].menunr;

    for(var i=1; i < document.swMenu.length; i++ )   // neues Menu
      if ( i == menakt )
        document.swMenu[i]._showMenu(true);
      else if (document.swMenu[i].visible && i != id)
        document.swMenu[i]._resetMenu();
      //!document.swMenu[i]._showMenu(false); // MenuPkt bleibt aktiv
  }
}

function swOut(id,nr)
{
  // nnn
  if ( id == 0 ) {
    var withSubMenu=false;
    for(var i=1; i < document.swMenu.length; i++ )   // alle Sub-Menus
      if (document.swMenu[i].visible )  withSubMenu = true; // eines sichtbar
    if ( ! withSubMenu )  document.swMenu[0]._resetMenu();
  }
  // nnn

  document.swMenu[id].itemHover = -1;
  document.swMenu[id]._updateImg();
}

function buildMenu(show)
{
  this._iniMenu();      // X/Y-Pos der Items
  this._writeMenu();    // Generiere Layers
  this._showMenu(show); // Zeigt/Versteckt Layers
}

function _getLayer(lid)
{
  if      (IE4 )  layer = document.all[ "swLay"+lid ];
  else if (NS6 )  layer = document.getElementById( "swLay" + lid );
  else            layer = document.layers[ "swLay"+lid ];
  return layer;
}

function _iniMenu() // X/Y-Pos
{
  var x = this.x, y = this.y;
  for(var i=0; i < this.item.length; i++ ) { //
    var layer = _getLayer(this.item[i].lid);
    if (NS4) { layer.left = x; layer.top = y; }
    else     { layer.style.left = x; ; layer.style.top = y; }  // IE korrekt: pixelLeft
    x  += this.item[i].width;
  }
}

function _writeMenu()  // Layers 1x generieren
{
  var html_str;
  for(var i=0; i < this.item.length; i++ ) { //
    if (this.item[i].link != "")
      html_str="<a href=\""+this.item[i].link+"\" target=\""+this.item[i].target+"\" ";
    else
      html_str  = "<a href='#' ";
    html_str += ' onmouseover="swOver('+this.id+','+i+');"';
    html_str += ' onmouseout="swOut('+this.id+','+i+');"';

    if (this.id == 0) // falls Überrubrik, Sprung in erste Unterrubrik
    {
      rubrik = i+1;
      html_str += ' onclick="swClick('+rubrik+',0);"\n';
    }
    else  // ansonsten normal
      html_str += ' onclick="swClick('+this.id+','+i+');"\n';

    html_str += '><img width='+this.item[i].width+' height='+this.item[i].height;
    html_str += ' name="swImg'+this.item[i].lid+'" src="';
    if (i == this.itemActiv || i == this.itemHover )  html_str +=  this.item[i].img_b;
    else                                              html_str +=  this.item[i].img_a;
    html_str += '" alt="';
    html_str +=  this.item[i].alt;
    html_str += '" border=0></a>';

    if (mit_entwickl_umgebung)
      html_str_sum += '<div id="swLay'+this.item[i].lid+'" name="swLay'+this.item[i].lid+'">' + html_str + '</div>\n';

    var layer = _getLayer(this.item[i].lid);
    if      (NS6)   layer.innerHTML = html_str;
    else if (IE4)   layer.innerHTML = html_str;
    else if (NS4) { layer.document.open("text/html");
                    layer.document.write(html_str);
                    layer.document.close();          }

    //alert("this.id: " + this.id + " i: " + i + " html_str: " + html_str);
  }

}

function _resetMenu()
{
  this.itemActiv = -1;   this.itemHover = -1;
  this._updateImg();
  if ( this.id != 0 )  // nnn
    this._showMenu(false);
}

function _showMenu(visible)
{
  visible ? show_hide="visible" : show_hide="hidden";
  for(var i=0; i < this.item.length; i++ ) {
    var layer = _getLayer(this.item[i].lid);
    if (NS4)   layer.visibility = show_hide;
    else       layer.style.visibility =  show_hide;
  }
  this.visible = visible;
}

function _updateImg()                      // Images Updaten
{
  var img;

  for(var i=0; i < this.item.length; i++ ) {
    if ( NS4 ) { var l = _getLayer(this.item[i].lid);
                 img = l.document.images[ "swImg"+this.item[i].lid]; }
    else         img = document.images[ "swImg"+this.item[i].lid];
    if (i == this.itemActiv || i == this.itemHover )  img.src =  this.item[i].img_b;
    else                                              img.src =  this.item[i].img_a;
  }
}

function preloadImages() {
  var d=document;
  if (d.images) {                          // Browser kennt: document.images
    if(!d.swImg)  d.swImg=new Array();         // Array f. Aufnahme der "images"
    var a=preloadImages.arguments;        // Argumente
    var i,j=d.swImg.length;                   //
    for(i=0; i<a.length; i++)  {             // f. alle Argumente
      d.swImg[j]=new Image;                     // neues Image
      d.swImg[j++].src=a[i];}                   // Source zuweisen
  }
}