var buttons=new Array();
var flags=new Array();
var buttonsLoaded = 0;
var flagsLoaded = 0;

var menuObject
var menuBaseOffset;
var menuActualOffset;
var menuOffsetToBe;
var menuHeight = 277+60;
var oldVerticalScrollPosition = 0;
var lastScrollDirection = 0;    // 1=down 2=up
var scrollPositionPeak = 0;
var menuMoveStep;
var menuMoveStep1 = 8;
var menuMoveDistance1 = 80;
var menuMoveStep2 = 6;
var menuMoveDistance2 = 60;
var menuMoveStep3 = 4;
var menuMoveDistance3 = 40;
var menuMoveStep4 = 2;
var menuMoveDistance4 = 20;
var menuShiftRunning = 0;
var menuShiftStartOffset = 0;
var scrollingJustStopped = 0;

var pictureString = "";




/* Ermittlung einer Objektvariable anhand der ID*/

function GetObj(objId,docObj)
{
  var i,objVar;

  if (!docObj) docObj=document;

  if (docObj.all)
    objVar=docObj.all[objId];
  if (docObj.layers)
    for (i=0; !objVar && i<docObj.layers.length; i++)
      objVar = GetObj(objId,docObj.layers[i].document);
  if (docObj.forms)
    for (i=0; !objVar && i<docObj.forms.length; i++)
      objVar = docObj.forms[i][objId];
  if (!objVar)
    objVar=docObj.getElementById(objId);

  return objVar;
}


function GetVerticalScrollPosition()
{
  var yOffset;

  if (self.pageYOffset)
    yOffset = self.pageYOffset;
  else if (document.documentElement && document.documentElement.scrollTop)
    yOffset = document.documentElement.scrollTop;
  else if (document.body)
    yOffset = document.body.scrollTop;

  return yOffset;
}


function GetWindowInnerHeight()
{
  var windowHeight;
  if (document.all)
    windowHeight = document.body.clientHeight;
  else
    windowHeight = window.innerHeight;
  return windowHeight;
}


function WriteStyles()
{
}


function PreloadStartButtons(rootPath,language)  // language: 1=deutsch 2=english
{
  var languageExtension;

  if (!language)
    language = 1;

  if (language == 1)
    languageExtension = "";
  else if (language == 2)
    languageExtension = "_en";

  for (i=0; i<18; i++) 
    buttons[i] = new Image();

  buttons[0].src =  rootPath + "/bilder/start/04c1" + languageExtension + ".jpg";
  buttons[1].src =  rootPath + "/bilder/start/04c2" + languageExtension + ".jpg";
  buttons[2].src =  rootPath + "/bilder/start/04d1" + languageExtension + ".jpg";
  buttons[3].src =  rootPath + "/bilder/start/04d2" + languageExtension + ".jpg";
  buttons[4].src =  rootPath + "/bilder/start/04e1" + languageExtension + ".jpg";
  buttons[5].src =  rootPath + "/bilder/start/04e2" + languageExtension + ".jpg";
  buttons[6].src =  rootPath + "/bilder/start/04f1" + languageExtension + ".jpg";
  buttons[7].src =  rootPath + "/bilder/start/04f2" + languageExtension + ".jpg";
  buttons[8].src =  rootPath + "/bilder/start/04g1" + languageExtension + ".jpg";
  buttons[9].src =  rootPath + "/bilder/start/04g2" + languageExtension + ".jpg";
  buttons[10].src =  rootPath + "/bilder/start/04h1" + languageExtension + ".jpg";
  buttons[11].src =  rootPath + "/bilder/start/04h2" + languageExtension + ".jpg";
  buttons[12].src =  rootPath + "/bilder/start/04i1" + languageExtension + ".jpg";
  buttons[13].src =  rootPath + "/bilder/start/04i2" + languageExtension + ".jpg";
  buttons[14].src =  rootPath + "/bilder/start/04k1" + languageExtension + ".jpg";
  buttons[15].src =  rootPath + "/bilder/start/04k2" + languageExtension + ".jpg";
  buttons[16].src =  rootPath + "/bilder/start/04l1" + languageExtension + ".jpg";
  buttons[17].src =  rootPath + "/bilder/start/04l2" + languageExtension + ".jpg";

  buttonsLoaded = 1;
}


function PreloadPageButtons(rootPath,language)  // language: 1=deutsch 2=english
{
  var languageExtension;

  if (!language)
    language = 1;

  if (language == 1)
    languageExtension = "";
  else if (language == 2)
    languageExtension = "_en";

  for (i=0; i<20; i++) 
    buttons[i] = new Image();

  buttons[0].src =  rootPath + "/bilder/seite/04c1" + languageExtension + ".jpg";
  buttons[1].src =  rootPath + "/bilder/seite/04c2" + languageExtension + ".jpg";
  buttons[2].src =  rootPath + "/bilder/seite/04d1" + languageExtension + ".jpg";
  buttons[3].src =  rootPath + "/bilder/seite/04d2" + languageExtension + ".jpg";
  buttons[4].src =  rootPath + "/bilder/seite/04e1" + languageExtension + ".jpg";
  buttons[5].src =  rootPath + "/bilder/seite/04e2" + languageExtension + ".jpg";
  buttons[6].src =  rootPath + "/bilder/seite/04f1" + languageExtension + ".jpg";
  buttons[7].src =  rootPath + "/bilder/seite/04f2" + languageExtension + ".jpg";
  buttons[8].src =  rootPath + "/bilder/seite/04g1" + languageExtension + ".jpg";
  buttons[9].src =  rootPath + "/bilder/seite/04g2" + languageExtension + ".jpg";
  buttons[10].src =  rootPath + "/bilder/seite/04h1" + languageExtension + ".jpg";
  buttons[11].src =  rootPath + "/bilder/seite/04h2" + languageExtension + ".jpg";
  buttons[12].src =  rootPath + "/bilder/seite/04i1" + languageExtension + ".jpg";
  buttons[13].src =  rootPath + "/bilder/seite/04i2" + languageExtension + ".jpg";
  buttons[14].src =  rootPath + "/bilder/seite/04k1" + languageExtension + ".jpg";
  buttons[15].src =  rootPath + "/bilder/seite/04k2" + languageExtension + ".jpg";
  buttons[16].src =  rootPath + "/bilder/seite/04l1" + languageExtension + ".jpg";
  buttons[17].src =  rootPath + "/bilder/seite/04l2" + languageExtension + ".jpg";
  buttons[18].src =  rootPath + "/bilder/seite/04m1" + languageExtension + ".jpg";
  buttons[19].src =  rootPath + "/bilder/seite/04m2" + languageExtension + ".jpg";

  buttonsLoaded = 1;
}


function PreloadFlags(rootPath)
{
  for (i=0; i<4; i++) 
    flags[i] = new Image();

  flags[0].src =  rootPath + "/bilder/flaggen/de16.gif";
  flags[1].src =  rootPath + "/bilder/flaggen/de16_2.gif";
  flags[2].src =  rootPath + "/bilder/flaggen/en16.gif";
  flags[3].src =  rootPath + "/bilder/flaggen/en16_2.gif";

  flagsLoaded = 1;
}


function LoadImageSource(dstImgName,srcImg)
{
  document.images[dstImgName].src = srcImg.src;
}


function SetGlobalVariables(ActualMenuBaseOffset, ActualMenuMaxOffset)
{
  menuBaseOffset = ActualMenuBaseOffset;
  menuOffsetToBe = menuBaseOffset;
  menuMaxOffset = ActualMenuMaxOffset;
  menuActualOffset = menuBaseOffset;
}


function HeadScripts(rootPath,isStartPage,language)  // language: 1=deutsch 2=english
{
  if (!rootPath)
    rootPath = "";
  if (!isStartPage)
    isStartPage = 0;
  if (!language)
    language = 1;
  if(top.frames.length > 0)
    top.location.href=self.location;

  WriteStyles();

  if (!buttonsLoaded)
  {
    if (isStartPage)
      PreloadStartButtons(rootPath,language);
    else
      PreloadPageButtons(rootPath,language);
  }

  if (!flagsLoaded) PreloadFlags(rootPath);
}


function OnBodyLoadScripts()
{
  menuObject = GetObj('div_menue');
  SetMenuOffsetToBe();
}


function WriteBodyTag(attributes)
{
  if (!attributes)
    attributes = "";

  document.write("\
    <body leftMargin=0 topMargin=0 marginwidth=0 marginheight=0 onLoad='OnBodyLoadScripts()' " + attributes + ">\
  ");
}


function BodyScripts(rootPath)
{
  if (!rootPath)
    rootPath = "";
}


function AddPicture(path,left,top,width,height)  // vor WriteTopCode aufrufen!
{
  pictureString = pictureString + "<div style=\"position:absolute; top:" + top + "; left:" + left + "; width:" + width + "; height:" + height + "; visibility:visible; z-index:102;\">\
    <table width=" + width + " height=" + height + " cellpadding=0 cellspacing=0 border=0>\
      <tr>\
//        <td><img src='" + path + "' width=" + width + " height=" + height + " border=0></td>\
      </tr>\
    </table>\
  </div>";
}


function AddPictureWithShadow(rootPath,picPath,left,top,width,height,text)  // vor WriteTopCode aufrufen!
{
  var fullWidth = width+23;
  var fullHeight = height+23;
  var finalLeft = left-23;
  var leftShadowHeight = height-46;
  var lowerShadowWidth = width-41;
  var textLeft = left+15;
  var textTop = top+height+4;
  if (!text)
    text="";
  pictureString = pictureString + "<div style=\"position:absolute; top:" + top + "; left:" + left + "; width:" + width + "; height:" + height + "; visibility:visible; z-index:102;\">\
    <table width=" + fullWidth + " height=" + fullHeight + " cellpadding=0 cellspacing=0 border=0>\
      <tr>\
        <td rowspan=3 colspan=3><img src='" + picPath + "' width=" + width + " height=" + height + " border=0></td>\
      </tr>\
      <tr>\
      </tr>\
      <tr>\
      </tr>\
      <tr>\
      </tr>\
    </table>\
  </div>";

  if (text.length > 0)
    pictureString = pictureString + "<div style=\"position:absolute; top:" + textTop + "; left:" + textLeft + "; width:" + width + "; visibility:visible; z-index:103;\">\
    <p class='bildUnterschrift'>" + text + "</p>\
  </div>";
}



function WriteTopCode(rootPath,navigationPaddingRight,navigationString,showLinkToAlternateLanguage,linkToAlternateLanguage,language)
{
  var languageExtension;
  var navigationStringStart;

  if (!language)
    language = 1;

  if (language == 1)
  {
    languageExtension = "";
    navigationStringStart = "Sie sind hier: ";
  }
  else if (language == 2)
  {
    languageExtension = "_en";
    navigationStringStart = "You are here: ";
  }

  document.write("\
\
<table align=center width=100% height=100%>\
  <tr><td align=center style='vertical-align:middle;'>\
\
\
<div style='position:relative; width:812; visibility:visible; z-index:100;'>\
\
  <div id='div_menue' style='position:absolute; top:230; left:40; width:190; visibility:visible; z-index:101;'>\
\
        <table width=190 cellpadding=0 cellspacing=0 border=0>\
          <tr>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/index" + languageExtension + ".html' target=_self\
              onMouseOver=\"LoadImageSource('button_start',buttons[1])\"\
              onMouseOut=\"LoadImageSource('button_start',buttons[0])\">\
              <img name='button_start' src='" + rootPath + "/bilder/seite/04c1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/vorstand" + languageExtension + ".html' target=_self\
              onMouseOver=\"LoadImageSource('button_struktur',buttons[3])\"\
              onMouseOut=\"LoadImageSource('button_struktur',buttons[2])\">\
              <img name='button_struktur' src='" + rootPath + "/bilder/seite/04d1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/informationen_englisch.html' target=_self\
              onMouseOver=\"LoadImageSource('button_forschungsprogramm',buttons[5])\"\
              onMouseOut=\"LoadImageSource('button_forschungsprogramm',buttons[4])\">\
              <img name='button_forschungsprogramm' src='" + rootPath + "/bilder/seite/04e1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/termine.html' target=_self\
              onMouseOver=\"LoadImageSource('button_forschungsprojekte',buttons[7])\"\
              onMouseOut=\"LoadImageSource('button_forschungsprojekte',buttons[6])\">\
              <img name='button_forschungsprojekte' src='" + rootPath + "/bilder/seite/04f1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/publikationen.html' target=_self\
              onMouseOver=\"LoadImageSource('button_graduiertenkolleg',buttons[9])\"\
              onMouseOut=\"LoadImageSource('button_graduiertenkolleg',buttons[8])\">\
              <img name='button_graduiertenkolleg' src='" + rootPath + "/bilder/seite/04g1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/archiv.html' target=_self\
              onMouseOver=\"LoadImageSource('button_veranstaltungen',buttons[11])\"\
              onMouseOut=\"LoadImageSource('button_veranstaltungen',buttons[10])\">\
              <img name='button_veranstaltungen' src='" + rootPath + "/bilder/seite/04h1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/praesidentenbrief.html' target=_self\
              onMouseOver=\"LoadImageSource('button_veranstaltungen',buttons[11])\"\
              onMouseOut=\"LoadImageSource('button_veranstaltungen',buttons[10])\">\
              <img name='button_veranstaltungen' src='" + rootPath + "/bilder/seite/04i1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/kontakt.html' target=_self\
              onMouseOver=\"LoadImageSource('button_berichte',buttons[13])\"\
              onMouseOut=\"LoadImageSource('button_berichte',buttons[12])\">\
              <img name='button_berichte' src='" + rootPath + "/bilder/seite/04k1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/links.html' target=_self\
              onMouseOver=\"LoadImageSource('button_links',buttons[15])\"\
              onMouseOut=\"LoadImageSource('button_links',buttons[14])\">\
              <img name='button_links' src='" + rootPath + "/bilder/seite/04l1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><a href='" + rootPath + "/impressum.html' target=_self\
              onMouseOver=\"LoadImageSource('button_impressum',buttons[17])\"\
              onMouseOut=\"LoadImageSource('button_impressum',buttons[16])\">\
              <img name='button_impressum' src='" + rootPath + "/bilder/seite/04m1" + languageExtension + ".jpg' border=0></a></td>\
          </tr>\
          <tr>\
            <td><img src='" + rootPath + "/bilder/seite/04n.jpg' border=0></td>\
          </tr>\
        </table>\
  </div>\
  \
  ");
  if (pictureString.length > 0)
    document.write(pictureString);

  document.write("\
 <table width=814 cellpadding=0 cellspacing=0 border=0>\
    <tr>\
    </tr>\
    <tr>\
    </tr>\
    <tr>\
\
\
        <table cellpadding=0 cellspacing=0 border=0 align=right>\
          <tr>\
\
  ");




document.write("\
          </tr>\
        </table><br>\
\
        <table cellpadding=0 cellspacing=0 border=0 width=100%>\
          <tr>\
          </tr>\
          <tr>\
            <td style='padding-left:155px; padding-right:50px; padding-top:0px;'>\
\
  ");
}


function WriteBottomCode(rootPath)
{
  document.write("\
            </td>\
          </tr>\
        </table>\
\
        </td>\
        </tr>\
    <tr>\
    </tr>\
  </table>\
</div>\
  </td></tr>\
</table>\
\
  ");
}


function SetMenuOffsetToBe()
{
  var vScrollPosition = GetVerticalScrollPosition();
  var windowHeight = GetWindowInnerHeight();

  if (vScrollPosition > scrollPositionPeak)
    scrollPositionPeak = vScrollPosition;
  if (vScrollPosition == oldVerticalScrollPosition)     // Korrektur von Verschiebungen bei schnellem Scrollen
  {
    if (scrollingJustStopped == 0)
    {
      scrollingJustStopped = 1;
    }
    else
    {
      scrollingJustStopped = 0;
      if ((menuOffsetToBe + menuHeight > windowHeight + vScrollPosition) && (menuOffsetToBe > menuBaseOffset) && (lastScrollDirection == 1) && (vScrollPosition == scrollPositionPeak))
        menuOffsetToBe = windowHeight + vScrollPosition - menuHeight;
      if ((menuOffsetToBe != menuActualOffset) && (menuShiftRunning == 0))
      {
        menuShiftRunning = 1;
        SetMenuOffset();
      }
    }
  }
  else if (vScrollPosition < oldVerticalScrollPosition)      // nach oben
  {
    if (lastScrollDirection != 2)
      menuShiftStartOffset = menuActualOffset;
    lastScrollDirection = 2;
    if (menuOffsetToBe >= vScrollPosition)  // zukuenftiger Startpunkt nicht ausserhalb der oberen Kante
    {
      menuOffsetToBe = menuOffsetToBe + vScrollPosition - oldVerticalScrollPosition;
    }
    if (menuOffsetToBe < menuBaseOffset)  // zukuenftiger Startpunkt waere oberhalb der Menueausgangshoehe
    {
      menuOffsetToBe = menuBaseOffset;
    }
  }
  else   // nach unten
  {
    if (lastScrollDirection != 1)
      menuShiftStartOffset = menuActualOffset;
    lastScrollDirection = 1;
    if ((menuOffsetToBe + menuHeight <= windowHeight + vScrollPosition) && (menuOffsetToBe >= menuBaseOffset))       // zukuenftiger Endpunkt unterhalb der unteren Kante
      menuOffsetToBe = menuOffsetToBe + vScrollPosition - oldVerticalScrollPosition;
  }

  oldVerticalScrollPosition = vScrollPosition;

  window.setTimeout("SetMenuOffsetToBe()",150);
}


function SetMenuOffset()
{
  var distance = menuOffsetToBe - menuActualOffset;
  if (distance < 0)
    distance = -distance;
  var distance2 = (menuShiftStartOffset - menuActualOffset) * 2;
  if (distance2 < 0)
    distance2 = -distance2;
  if (distance2 < distance)
    distance = distance2;

  if (distance > menuMoveDistance1)
    menuMoveStep = menuMoveStep1;
  else if (distance > menuMoveDistance2)
    menuMoveStep = menuMoveStep2;
  else if (distance > menuMoveDistance3)
    menuMoveStep = menuMoveStep3;
  else if (distance > menuMoveDistance4)
    menuMoveStep = menuMoveStep4;
  else
    menuMoveStep = 1;

  if (menuOffsetToBe > menuActualOffset)
  {
    if (menuOffsetToBe - menuActualOffset < menuMoveStep)
      menuActualOffset = menuOffsetToBe;
    else
      menuActualOffset = menuActualOffset + menuMoveStep;
  }
  else if (menuOffsetToBe < menuActualOffset)
  {
    if (menuActualOffset - menuOffsetToBe < menuMoveStep)
      menuActualOffset = menuOffsetToBe;
    else
      menuActualOffset = menuActualOffset - menuMoveStep;
  }
  menuObject.style.top = menuActualOffset;

  if (menuOffsetToBe != menuActualOffset)
    window.setTimeout("SetMenuOffset()",10);
  else
  {
    menuShiftRunning = 0;
    menuShiftStartOffset = menuActualOffset;
  }
 }

