/* ---------------------------------------------------------
  Standard Startcodes für jede Seite
   --------------------------------------------------------- */

var path_abs = location.pathname.match(/\/de\/|\/fr\/|\/en\//);  // Web Hauptverzeichnis abh. von Sprachversion

//
/* ----------------------------------------------------------------------------------------------------
  funktion std_pgc_checkFrameset()       Ermitteln ob Seite in Framefenster läuft und wenn nicht
                                         veranlassen, dass Seite im Frameset angezeigt wird
 ------------------------------------------------------------------------------------------------------ */
function std_pgc_checkFrameset() {
  if(!top.mainFrame) {                                               // Seite niicht im Frame?
    location.href=path_abs+'index.php?fmain=' + location.pathname;   // Frameseite laden mit aktueller Seite in Anzeige
  }
// alert(location.pathname);
}

/* ----------------------------------------------------------------------------------------------------
  funktion std_pgc_startsequence()       Bündelungsroutine
                                         fuer alle Initialisierungsroutinen zum Seitenstart
 ------------------------------------------------------------------------------------------------------ */
function std_pgc_startsequence() {
  std_pgc_checkFrameset();            // Prüfung ob Seite im Frame laeuft
}

std_pgc_startsequence();

/* ---------------------------------------------------------
  Codes fuer Pulldown-Menues
   --------------------------------------------------------- */
var layerlist_parentinx = new Array;    // gleiche Liste wie layerlist_parent bloss mit Index auf layerlist
var HIDE_TIMEOUT   = 100;              // alle wieviel Millisekunden soll Menue verschwinden wenn Mauss ausserhalb
var CHK_TIMEOUT    = 100;               // alle wieviel Millisekunden soll geprueft werden ob Maus noch innerhalb Menue

// make_layerlist_parentinx();                                    // fuelle layerlist_parentinx mit Werten


function browserinfos() {

  element=document.getElementById("menu_ifliese");         // Menueobjekt

  alert(parseInt("123px"));
//  alert(element.style.top);
//  alert(document.body.scrollTop);
  return;

  alert('navigator.appCodeName='+navigator.appCodeName);
  alert('navigator.appName='+navigator.appName);
  alert('navigator.appVersion='+navigator.appVersion);
  alert('navigator.cookieEnabled='+navigator.cookieEnabled);
  alert('navigator.language='+navigator.language);
  alert('navigator.platform='+navigator.platform);
  alert('navigator.userAgent='+navigator.userAgent);
}


function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {
    if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
      document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage;
    }
  }
  else
    if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH)
      location.reload();
}





/* ----------------------------------------------------------------------------------------------------
  funktion make_layerlist_parentinx()       Indexliste auf Elternobjekte in parentlist erstellen
 ------------------------------------------------------------------------------------------------------ */
function make_layerlist_parentinx() {
  var i;

  for(i=0; i<layerlist.length; i++)
    layerlist_parentinx[i]=findindex(layerlist_parent[i]);

}

/* ----------------------------------------------------------------------------------------------------
  funktion findindex()           Index in layerlist ermitteln
  Parameter:                     name - Name des zu suchenden Layers
  return:                        Index oder -1 falls nicht gefunden
 ------------------------------------------------------------------------------------------------------ */
function findindex(name) {
  var i;

  for(i=0; i<layerlist.length; i++)
    if( layerlist[i]==name )
      return i;
  return -1;
}


function find_parentmenue(id) {
  var i,p;

  i=findindex(id);               // Index in layerliste
  p='';
  if( i>=0 ) {
    p=layerlist[layerlist_parentinx[i]];        // und eltern-layer holen

  }
  return p;
}






/* ----------------------------------------------------------------------------------------------------
  funktion MM_findObj()          Objektreferenz ermitteln
  Parameter:                     n - ID Objekt
                                 d - Referenz Dokumentobjekt (optional)
  return:                        Objektreferenz
 ------------------------------------------------------------------------------------------------------ */
function MM_findObj(n, d) { //v4.01
  var p,i,x;

  if(!d)
    d=document;
  if((p=n.indexOf("?"))>0 && parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document;
    n=n.substring(0,p);
  }

  if(!(x=d[n])&&d.all)
    x=d.all[n];

  for (i=0;!x&&i<d.forms.length;i++)
    x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++)
    x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById)
    x=d.getElementById(n);

  return x;
}




/* ----------------------------------------------------------------------------------------------------
  funktion SS_showLayers()       Menuelayer sichtbar machen
  Parameter:                     Liste der Layer-IDs
 ------------------------------------------------------------------------------------------------------ */
function SS_showLayers() { //v6.0
  var i,p,v,obj,args=SS_showLayers.arguments;

  for (i=0; i<args.length; i++)  {
    obj=MM_findObj(args[i]);
    if( obj!=null ) {
      if (obj.style) {
        obj=obj.style;
        obj.visibility='visible';
      }
    }
  }
}


/* ----------------------------------------------------------------------------------------------------
  funktion SS_hideLayers()       Menuelayer unsichtbar machen
  Parameter:                     Liste der Layer-IDs
 ------------------------------------------------------------------------------------------------------ */
function SS_hideLayers() { //v6.0
  var i,p,v,obj,args=SS_hideLayers.arguments;

  for (i=0; i<args.length; i++)  {
    obj=MM_findObj(args[i]);
    if( obj !=null ) {
      if (obj.style) {
        obj=obj.style;
        obj.visibility='hidden';
      }
    }
  }

}


/* ----------------------------------------------------------------------------------------------------
  funktion SS_recalc_pos_menuelayer()     setzt die y-Positionen aller Menuelayer neu
                                          gemaes der aktuellen Scrollposition
 ------------------------------------------------------------------------------------------------------ */
old_scroll =0;
function SS_recalc_pos_menuelayer() {
  var i, new_scroll, objid, y, new_y, diff;

  new_scroll=document.body.scrollTop;     // aktuelle Scrollposition

  if( new_scroll==old_scroll )            // wenn aktuelle Scrollposition = Scrollpos. vom letzen Aufruf
    return;                               //   dann gibts nichts zu berechnen, Abbruch

  diff=new_scroll-old_scroll;             // Differenzwert Scrollpositionen alt und neu

  for(i=0; i<layerlist.length; i++) {               // alle Menueobjekte abarbeiten
    objid=layerlist[i];
    element=document.getElementById(objid);         // Menueobjekt
    y=parseInt(element.style.top);                  // Y-Position holen

    new_y=y+diff;                                   // neue y-Position berechnen
    element.style.top=(new_y+'px');                 // und zuweisen
  }

  old_scroll=new_scroll;                            // Scrollposition merken fuer naechsten Aufruf
//  alert('diff='+diff)

}

/* ----------------------------------------------------------------------------------------------------
  funktion SS_get_menulevel()      Holt die Ebenennummer eines Menus
  Parameter:                       menu_id - Menue ID
  Returnn:                         Level
 ------------------------------------------------------------------------------------------------------ */
function SS_get_menulevel(menu_id) {
  var ll, i;

  ll=-1;
  for(i=0; i<layerlist.length; i++) {
    if( layerlist[i]==menu_id ) {
      ll=layerlist_level[i];
      break;
    }
  }
  return ll;
}



/* ----------------------------------------------------------------------------------------------------
  funktion SS_hide_menus_on_level() Macht alle Menues eines Levels unsichtber
  Parameter:                       level - Level
 ------------------------------------------------------------------------------------------------------ */
function SS_hide_menus_on_level(level) {
  var i;

  for(i=0; i<layerlist.length; i++) {
    if( layerlist_level[i]>=level ) {
      objid=layerlist[i];
      obj=document.getElementById(objid);
      if (obj.style) {
        obj=obj.style;
        obj.visibility='hidden';
      }
    }
  }
}

/* ----------------------------------------------------------------------------------------------------
  funktion SS_hide_all_menus() Macht alle Menues unsichtber
 ------------------------------------------------------------------------------------------------------ */
function SS_hide_all_menus() {
  var i;

  for(i=0; i<layerlist.length; i++) {
    objid=layerlist[i];
    obj=document.getElementById(objid);
    if (obj) {
      if (obj.style) {
        obj=obj.style;
        obj.visibility='hidden';
      }
    }
  }
}


/* ----------------------------------------------------------------------------------------------------
  funktion SS_glob_click()   Funktion die aufgerufen wird geklickt wird
 ------------------------------------------------------------------------------------------------------ */
function SS_glob_click() {
  SS_hide_all_menus();    // alle Menues unsichtbar
}



var glob_over_menu = "";                        // Glob. Var. speichert ueber welchem Menue (id) sich Maus befindet
setInterval("SS_check_inmenue()",CHK_TIMEOUT);  // zyklische Pruefung ob Maus in Menue
/* ----------------------------------------------------------------------------------------------------
  funktion SS_check_inmenue()   Zyklisch auferufene Funktion die Prueft ob Mauszeiger
                                noch ueber Menue und ggf. Loeschung (unsichtbar) aller Menues veranlasst
 ------------------------------------------------------------------------------------------------------ */
function SS_check_inmenue() {
  if( glob_over_menu=="" ) {                    // Maus befindet sich in keinem Menue
                                                // Timeout fuer Loeschung (unsichtbar) aller Menues
    setTimeout('if(glob_over_menu==""){SS_hide_all_menus();glob_over_menu="";}',HIDE_TIMEOUT);
  }
}


/* ----------------------------------------------------------------------------------------------------
  funktion SS_inmenue()      Funktion die aufgerufen wird wenn Mauszeiger in ein Menueobjekt eintritt
  Parameter:                 id - Objekt ID des Menues
 ------------------------------------------------------------------------------------------------------ */
function SS_inmenue(id) {
  glob_over_menu=id;         // glob. Variable die festhält über welchem Menue sich der Mauszeiger befindet
}

/* ----------------------------------------------------------------------------------------------------
  funktion SS_outmenue()     Funktion die aufgerufen wird wenn Mauszeiger ein Menueobjekt verlaesst
  Parameter:                 id - Objekt ID des Menues
 ------------------------------------------------------------------------------------------------------ */
function SS_outmenue(id) {
  glob_over_menu="";         // glob. Variable die festhält über welchem Menue sich der Mauszeiger befindet löschen
}



/* ----------------------------------------------------------------------------------------------------
  funktion SS_inlink()       Funktion die aufgerufen wird wenn Mauszeiger in einen Menuelink eintritt
  Parameter:                 id - Objekt ID des Links
                             menueid - Objekt ID des zugehörigen Menues
 ------------------------------------------------------------------------------------------------------ */
function SS_inlink(id, menue_id) {
  var level;

  if( menue_id != "" ) {
    level=SS_get_menulevel(menue_id);
    SS_hide_menus_on_level(level);

    SS_recalc_pos_menuelayer();      // Position Menuelayer korrigieren falls gescrollt wurde
    SS_showLayers(menue_id);         // zugehoeriges Menue sichtbar schalten
  }

  glob_over_menu=menue_id;         // glob. Variable die festhält über welchem Menue sich der Mauszeiger befindet
/*
  obj=document.getElementById(id);   // Mouseover Effekt
  if (obj) {
    if (obj.style) {
      obj.style.color='white';
    }
  }
*/
}

/* ----------------------------------------------------------------------------------------------------
  funktion SS_outlink()      Funktion die aufgerufen wird wenn Mauszeiger einen Menuelink verlaesst
  Parameter:                 id       - Objekt ID des Links
                             menue_id - Objekt ID des zugehörigen Menues
 ------------------------------------------------------------------------------------------------------ */
function SS_outlink(id, menue_id) {
  glob_over_menu="";         // glob. Variable die festhält über welchem Menue sich der Mauszeiger befindet löschen
/*
  obj=document.getElementById(id);    // Mouseover Effekt
  if (obj) {
    if (obj.style) {
      obj.style.color='#034287';
    }
  }
*/
}

/* ----------------------------------------------------------------------------------------------------
  funktion SS_clicklink()    Sammelroutine fuer Funktionen die ausfeuehrt werden sollen wenn Menuelink geklickt
  Parameter:                 link_id  - Objekt ID des Links
                             menue_id - Objekt ID des zugehörigen Menues
 ------------------------------------------------------------------------------------------------------ */
function SS_clicklink(link_id, menue_id) {

}

/* ----------------------------------------------------------------------------------------------------
  funktion getPosition()     ermittelt die absoluten Koordinaten eines Objektes
  Parameter:                 element - Objekt ID
 ------------------------------------------------------------------------------------------------------ */

function getPosition(element)  {
  var elem=element,tagname="",x=0,y=0;

/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="BODY")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}



/* ----------------------------------------------------------------------------------------------------
  Funktion menu_position_a() Errechnet die Position des <div>-Menues
  Funktion menu_position_b() in Abhängigkeit zur Position des Menuelinks auf der
                             Navigations-Kopfzeile und den Untermenues
                             Version "_a" - Rechnet Pos. fuer Waagerechte Hauptlinks
                             Version "_b" - Rechnet Pos. Untermenues
  Parameter:                 link_id - Objekt ID des Links
                             menu_id - Objekt ID des <div>-Menues
 ------------------------------------------------------------------------------------------------------ */
var menu_diff_x_a = 0;     // relative Position nach Rechts
var menu_diff_y_a = 16;    // relative Position nach Unten

function menu_position_a(link_id, menu_id) {
//  element=getElementById(link_id);          // Linkobjekt
//  pos=getPosition(element);                              // position linkobjekt
  pos=top.frames[0].window.getPosition_2(link_id);                              // position linkobjekt

  element=document.getElementById(menu_id);              // Menueobjekt

//  element.style.position='fixed';

  element.style.left =((pos.x+ menu_diff_x_a) +"px");               // Menueobjekt x-Position setzen
//  element.style.top  =((pos.y+ menu_diff_y_a) +"px");               // Menueobjekt x-Position setzen
  element.style.top  =("0px");               // Menueobjekt x-Position setzen

//  alert(element);
}

var menu_diff_x_b = 100;      // relative Position nach Rechts
var menu_diff_y_b = 10;        // relative Position nach Unten

function menu_position_b(link_id, menu_id) {
//alert( 'menu_position_b '+link_id, menu_id);
  element=document.getElementById(link_id);          // Linkobjekt
  pos=getPosition(element);                              // position linkobjekt

  element=document.getElementById(menu_id);         // Menueobjekt

//  element.style.position='fixed';

  element.style.left =((pos.x+ menu_diff_x_b) +"px");               // Menueobjekt x-Position setzen
  element.style.top  =((pos.y+ menu_diff_y_b) +"px");               // Menueobjekt x-Position setzen

//alert((pos.x+ menu_diff_x_b) +"px "+(pos.y+ menu_diff_y_b) +"px");               // Menueobjekt x-Position setzen

}