// ##################################################################	
// # (C) 2005 Bliib Gsund Natur-Versand, www.bliib-gsund-versand.ch
// # ================================================================	
// # Projekt: Internet-Shop               						
// # ----------------------------------------------------------------
// # Beschreibung:								
// #   DHTML-Menue
// # 										
// # History:									
// #   24.03.2005 - Neuanlage (sh)
// ################################################################## 

// ----------------------------------------------------------------
// Konstanten fuer Navigations-Menue
// ----------------------------------------------------------------

// Menue-Elemente; die Anordnung in der Liste entspricht
// der Anordnung in der HTML-Seite von oben nach unten
var menue_ids = new Array ("navlBrotMenue","navlHznMenue","navlWeitereProdukteMenue","navlSchnaeppchenMenue");

// diverse regulaere Ausdruecke
var regexp_ismenue = /navl/;
var ismenue = "navl";
var regexp_ismenue2 = /wrka/;
var ismenue2 = "wrka";
var regexp_ismenue3 = /bnav/;
var ismenue3 = "bnav";
var regexp_untermenue = /Menue/;
var regexp_jsmenue = /navl/;
var regexp_isselected = /Selected/;
var isselected = "Selected";
                           
// Startposition des ersten Untermenue-Elementes links oben
var offset_top = 181;
var offset_left = 150;

// Hoehen der eingeklappten Menue-Elemente
var menue_heights = new Array ();
menue_heights["navlBrotMenue"] = 28;
menue_heights["navlHznMenue"] = 84;
menue_heights["navlWeitereProdukteMenue"] = 28;
menue_heights["navlSchnaeppchenMenue"] = 325;

// Hoehen der ausgeklappten Menue-Elemente
var untermenue_heights = new Array ();
untermenue_heights["navlBrotMenue"] = 80;
untermenue_heights["navlHznMenue"] = 136;
untermenue_heights["navlWeitereProdukteMenue"] = 93;
untermenue_heights["navlSchnaeppchenMenue"] = 50;

// Sonderfall: "zurueck"-Button bei PROD-Seiten
menue_prod_height = 31;


// ----------------------------------------------------------------
function JSMenue(menue_id,mode,menue_element) {
// ----------------------------------------------------------------
// Steuert das Einblenden der Menue- und Untermenue-Elemente.
//
// Aufruf-Parameter:
//   1: ID des Menue-Elementes
//   2: Modus - reset: alle Elemente zuruecksetzen
// ----------------------------------------------------------------	
  
  // schwebendes Untermenue nur anzeigen, wenn das feste
  // Untermenue nicht bereits angezeigt wird
  if (! document.getElementById(menue_id + "Vorhanden")) {
    // Menuenamen-Variablen setzen
    untermenue_id = menue_id.replace(regexp_untermenue,"Untermenue");
    jsmenue_id = menue_id.replace(regexp_jsmenue,"navlJS");
 
    if(MS) {  
      // Position des Untermenues berechnen
      jsmenue_top = offset_top;
      
      // Sonderfall: "zurueck"-Button bei PROD-Seiten
      if (document.getElementById("navlPRODMenueVorhanden")) {
        jsmenue_top = jsmenue_top + menue_prod_height;
      }
      
      for (i = 0; i < menue_ids.length; i++) {
        // aktuelle Menue-Button wurde erreicht
        if (menue_ids[i] == menue_id) {
          break;
        }
        // Hoehe des Menue-Elementes addieren
        else {
          // Hoehe des ausgeklappten Elementes addieren
          if (document.getElementById(menue_ids[i] + "Vorhanden")) {
            jsmenue_top = jsmenue_top + untermenue_heights[menue_ids[i]];
          }
          // Hoehe des eingeklappten Elementes addieren
          else {
            jsmenue_top = jsmenue_top + menue_heights[menue_ids[i]];
          }
        }
      }

      // Position des Menue-Containers setzen
      getElem("id","navlJSMenue",null).style.top = jsmenue_top;
      getElem("id","navlJSMenue",null).style.left = offset_left;  

      // Position des aktuellen Untermenue-Elementes setzen
      getElem("id",jsmenue_id,null).style.top = jsmenue_top;
      getElem("id",jsmenue_id,null).style.left = offset_left;
      
      // Menue-Container einblenden
      getElem("id","navlJSMenue",null).style.visibility = "visible";
      
      // Untermenue-Element einblenden
      getElem("id",jsmenue_id,null).style.display = "block";      
    }
  }
}


// ----------------------------------------------------------------
function noJSMenue() {
// ----------------------------------------------------------------
// Steuert das Ausblenden der Menue- und Untermenue-Elemente.
// ----------------------------------------------------------------

  // Alle Menue-Elemente zuruecksetzen
  for (i = 0; i < menue_ids.length; i++) {
    if(DOM || MS) {
      // Untermenue-Elemente ausblenden
      jsmenue_id = menue_ids[i].replace(regexp_jsmenue,"navlJS");     
      if (getElem("id",jsmenue_id,null) != null) {
        getElem("id",jsmenue_id,null).style.display = "none";
      }
    }
    
    // Menue-Container ausblenden
    if (getElem("id","navlJSMenue",null) != null) {
      getElem("id","navlJSMenue",null).style.visibility = "hidden";         
    }
  }
}


// ----------------------------------------------------------------
function JSMenueHover(menue_element,mode) {
// ----------------------------------------------------------------
// Steuert das Hover-Verhalten von Menue-Elementen
// ----------------------------------------------------------------

  if (mode == "on" || mode == "off") {
    // rekursiv nach aussen pruefen, falls das aufrufende Objekt
    // als Klasse keine Menue-Klasse besitzt
    klasse = menue_element.className;   
    if (klasse.match(regexp_ismenue) != ismenue && klasse.match(regexp_ismenue2) != ismenue2 && klasse.match(regexp_ismenue3) != ismenue3) {
      klasse = menue_element.parent.className;
      if (klasse.match(regexp_ismenue) != ismenue && klasse.match(regexp_ismenue2) != ismenue2 && klasse.match(regexp_ismenue3) != ismenue3) {
        klasse = menue_element.parent.className;
        if (klasse.match(regexp_ismenue) != ismenue && klasse.match(regexp_ismenue2) != ismenue2 && klasse.match(regexp_ismenue3) != ismenue3) {
          klasse = menue_element.parent.className;
          if (klasse.match(regexp_ismenue) != ismenue && klasse.match(regexp_ismenue2) != ismenue2 && klasse.match(regexp_ismenue3) != ismenue3) {
            menue_element = menue_element.parent;
          }
        }
        else {
          menue_element = menue_element.parent;
        }
      }
      else {
        menue_element = menue_element.parent;
      }
    }
  }
  
  if (mode == "on" || mode == "menue_on" || mode == "all_off") {
    noJSMenue();
    for (i = 0; i < menue_ids.length; i++) {
      if (getElem("id",menue_ids[i],null) != null) {
        getElem("id",menue_ids[i],null).className = getElem("id",menue_ids[i],null).className.replace(regexp_isselected,"");
      }
    }
  }
  else {
    menue_element.className = menue_element.className.replace(regexp_isselected,"");
  }
  if (mode == "on" || mode == "menue_on") {
    if (menue_element.className.match(regexp_isselected) != isselected) {
      menue_element.className = menue_element.className + isselected;
    }  
  }
  if (mode == "menue_on") {
    JSMenue(menue_element.id);  	
  }
  else if (mode == "menue_off") {
    noJSMenue();
  }
}