/********************************************************************
* These functions allow dynamic HTML effects to be added to any     *
* web page and will work on both Netscape Communicator 4.0+ and MS  *
* Internet Explorer 4.0+ browsers.                                  *
********************************************************************/

var layerList = new Array();

function createLayer(name, left, top, width, height, visible, content) {

  var z = layerList.length;
  var layer;

  layerList[z] = name;

  if (document.layers) {
    document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') + ' z-index=' + z + '>');
    document.writeln(content);
    document.writeln('</layer>');
    layer = getLayer(name);
    layer.width = width;
    layer.height = height;
  }

  if (document.all) {
    document.writeln('<div id="' + name + '" style="position:absolute; overflow:none; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') + ' z-index=' + z + '">');
    document.writeln(content);
    document.writeln('</div>');
  }

  clipLayer(name, 0, 0, width, height);
}

function hideLayer(name) {

  var layer = getLayer(name);

  if (document.layers)
    layer.visibility = "hide";
  if (document.all)
    layer.visibility = "hidden";
}

function showLayer(name) {

  var layer = getLayer(name);

  if (document.layers) layer.visibility = "show";
  if (document.all) layer.visibility = "visible";
}

function isVisible(name) {

  var layer = getLayer(name);

  if (document.layers && layer.visibility == "show")
    return(true);
  if (document.all && layer.visibility == "visible")
    return(true);
  return(false);
}


function moveLayer(name, x, y) {

  var layer = getLayer(name);

  if (document.layers)
    layer.moveTo(x, y);
  if (document.all) {
    layer.left = x;
    layer.top  = y;
  }
}

var animRate = 25;    // Basically sets the update rate for animations.

function slideLayer(name, x, y, speed) {

  var layer = getLayer(name);
  var hrzn, vert, left, top, steps;

  // If the layer is currently being moved, wait and try again later.
 
  if (layer.slideID && layer.slideID != null) {
    setTimeout('slideLayer("' + name + '", ' + x + ', ' + y + ', ' + speed + ')', animRate);
    return;
  }

  if (document.layers) {
    hrzn = x - layer.left;
    vert = y - layer.top;
    left = layer.left;
    top  = layer.top;
  }

  if (document.all) {
    hrzn = x - layer.pixelLeft;
    vert = y - layer.pixelTop;
    left = layer.pixelLeft;
    top  = layer.pixelTop;
  }

  // Calculate how many steps it will take and the size of each step.

  steps = (Math.max(Math.abs(hrzn), Math.abs(vert)) / speed) * (1000 / animRate);

  if (steps <= 0)
    return;

  layer.slideLeft   = left;
  layer.slideTop    = top;
  layer.slideDx     = hrzn / steps;
  layer.slideDy     = vert / steps;
  layer.slideFinalX = x;
  layer.slideFinalY = y;
  layer.slideSteps  = Math.floor(steps);
  layer.slideID     = setTimeout('slideStep("' + name + '")', animRate);
}

function slideStep(name) {

  // Moves the layer one step.

  var layer = getLayer(name);

  layer.slideLeft += layer.slideDx;
  layer.slideTop  += layer.slideDy;
  if (document.layers)
    layer.moveTo(layer.slideLeft, layer.slideTop);
  if (document.all) {
    layer.left = layer.slideLeft;
    layer.top  = layer.slideTop;
  }

  // If more steps remain, call this function again.

  if (layer.slideSteps-- > 0)
    layer.slideID = setTimeout('slideStep("' + name + '")', animRate);

  // Otherwise, move layer to final position.

  else {
   if (document.layers)
      layer.moveTo(layer.slideFinalX, layer.slideFinalY);
    if (document.all) {
      layer.left = layer.slideFinalX;
      layer.top  = layer.slideFinalY;
    }

    layer.slideID = null;
  }
}

function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {

  var layer = getLayer(name);

  if (document.layers) {
    layer.clip.left   = clipleft;
    layer.clip.top    = cliptop;
    layer.clip.right  = clipright;
    layer.clip.bottom = clipbottom;
  }
  if (document.all)
    layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
}

function swipeLayer(name, clipleft, cliptop, clipright, clipbottom, speed) {

  var layer = getLayer(name);
  var hrzn1, vert1;
  var hrzn2, vert2;
  var max1, max2;
  var steps;

  // If the layer is currently being clipped, wait and try again later.
 
  if (layer.swipeID && layer.swipeID != null) {
    setTimeout('swipeLayer("' + name + '", ' + clipleft + ', ' + cliptop + ', ' + clipright + ', ' + clipbottom + ', ' + speed + ')', animRate);
    return;
  }

  if (document.layers) {
    hrzn1 = clipleft - layer.clip.left;
    vert1 = cliptop - layer.clip.top;
    hrzn2 = clipright - layer.clip.right;
    vert2 = clipbottom - layer.clip.bottom;
  }
  if (document.all) {
    if (!layer.clip)
      clipLayer(name, 0, 0, layer.pixelWidth, layer.pixelHeight);
    var clip = getClipValues(layer.clip);
    hrzn1 = clipleft - clip[3];
    vert1 = cliptop - clip[0];
    hrzn2 = clipright - clip[1];
    vert2 = clipbottom - clip[2];
  }
  max1 = Math.max(Math.abs(hrzn1), Math.abs(vert1));
  max2 = Math.max(Math.abs(hrzn2), Math.abs(vert2));
  steps = (Math.max(max1, max2) / speed) * (1000 / animRate);

  if (steps <= 0)
    return;

  if (document.layers) {
    layer.swipeLeft   = layer.clip.left;
    layer.swipeTop    = layer.clip.top;
    layer.swipeRight  = layer.clip.right;
    layer.swipeBottom = layer.clip.bottom;
  }
  if (document.all) {
    layer.swipeLeft   = parseInt(clip[3], 10);
    layer.swipeTop    = parseInt(clip[0], 10);
    layer.swipeRight  = parseInt(clip[1], 10);
    layer.swipeBottom = parseInt(clip[2], 10);
  }
  layer.swipeDx1 = hrzn1 / steps;
  layer.swipeDy1 = vert1 / steps;
  layer.swipeDx2 = hrzn2 / steps;
  layer.swipeDy2 = vert2 / steps;
  layer.swipeFinalLeft   = clipleft;
  layer.swipeFinalTop    = cliptop;
  layer.swipeFinalRight  = clipright;
  layer.swipeFinalBottom = clipbottom;
  layer.swipeSteps = Math.floor(steps);
  layer.swipeID = setTimeout('swipeStep("' + name + '")', animRate);
}

function swipeStep(name) {

  var layer = getLayer(name);

  // Adjust the layer's clipping area by one step.

  layer.swipeLeft   += layer.swipeDx1;
  layer.swipeTop    += layer.swipeDy1;
  layer.swipeRight  += layer.swipeDx2;
  layer.swipeBottom += layer.swipeDy2;

  if (document.layers) {
    layer.clip.left   = layer.swipeLeft;
    layer.clip.top    = layer.swipeTop;
    layer.clip.right  = layer.swipeRight;
    layer.clip.bottom = layer.swipeBottom;
  }
  if (document.all)
    layer.clip = 'rect(' + layer.swipeTop + ' ' + layer.swipeRight + ' ' + layer.swipeBottom + ' ' + layer.swipeLeft +')';

  // If more steps remain, call this function again.

  if (--layer.swipeSteps > 0)
    layer.swipeID = setTimeout('swipeStep("' + name + '")', animRate);

  // Otherwise, set layer's final clip area.

  else {
    if (document.layers) {
      layer.clip.left   = Math.round(layer.swipeFinalLeft);
      layer.clip.top    = Math.round(layer.swipeFinalTop);
      layer.clip.right  = Math.round(layer.swipeFinalRight);
      layer.clip.bottom = Math.round(layer.swipeFinalBottom);
    }
    if (document.all)
      layer.clip = 'rect(' + layer.swipeFinalTop + ' ' + layer.swipeFinalRight + ' ' + layer.swipeFinalBottom + ' ' + layer.swipeFinalLeft +')';

    layer.swipeID = null;
  }
}

function getLeft(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.left);
  else if (document.all)
    return(layer.pixelLeft);
  else
    return(null);
}

function getTop(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.top);
  else if (document.all)
    return(layer.pixelTop);
  else
    return(null);
}

function getWidth(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.width);
  else if (document.all)
    return(layer.pixelWidth);
  else
    return(null)
}

function getHeight(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.height);
  else if (document.all)
    return(layer.pixelHeight);
  else
    return(null);
}

function getClipLeft(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.clip.left);
  else if (document.all) {
    var str =  layer.clip;
    if (!str)
      return(0);
    var clip = getClipValues(layer.clip);
    return(clip[3]);
  }
  else
    return(null);
}

function getClipTop(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.clip.top);
  else if (document.all) {
    var str =  layer.clip;
    if (!str)
      return(0);
    var clip = getClipValues(layer.clip);
    return(clip[0]);
  }
  else
    return(null);
}

function getClipWidth(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.clip.width);
  else if (document.all) {
    var str =  layer.clip;
    if (!str)
      return(layer.pixelWidth);
    var clip = getClipValues(layer.clip);
    return(clip[1] - clip[3]);
  }
  else
    return(null);
}

function getClipHeight(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.clip.height);
  else if (document.all) {
    var str =  layer.clip;
    if (!str)
      return(layer.pixelHeight);
    var clip = getClipValues(layer.clip);
    return(clip[2] - clip[0]);
  }
  else
    return(null);
}

function getWinWidth() {

  if (document.layers)
    return(window.innerWidth);
  else if (document.all)
    return(document.body.clientWidth);
  else
    return(null);
}

function getWinHeight() {

  if (document.layers)
    return(window.innerHeight);
  else if (document.all)
    return(document.body.clientHeight);
  else
    return(null);
}

function getzIndex(name) {

  var layer = getLayer(name);

  if (document.layers)
    return(layer.zIndex);
  else if (document.all)
    return(layer.zIndex);
  else
    return(null);
}

function setzIndex(name, z) {

  var layer = getLayer(name);

  if (document.layers)
    layer.zIndex = z;
  if (document.all)
    layer.zIndex = z;
}

function bringToFront(name) {

  var i, temp;

  layerList.sort(sortzIndex);

  i = layerList.length - 1;
  temp = getzIndex(layerList[i]);
  while (i > 0 && layerList[i] != name) {
    setzIndex(layerList[i], getzIndex(layerList[i - 1]));
    i--;
  }
  setzIndex(name, temp);
}

function sendToBack(name) {

  var i, temp;

  layerList.sort(sortzIndex);
  i = 0;
  temp = getzIndex(layerList[i]);
  while (i < layerList.length - 2 && layerList[i] != name) {
    setzIndex(layerList[i], getzIndex(layerList[i + 1]));
    i++;
  }
  setzIndex(name, temp);
}

function sortzIndex(a, b) {

  return(getzIndex(a) - getzIndex(b));
}

function getImgSrc(imagename) {

  var i, layer;

  // If the image exists in the document object, return the source.

  if (document.images[imagename])
    return document.images[imagename].src;

  // Otherwise, for Netscape, search through the layers for the named image.

  else if (document.layers)
    for (i = 0; i < layerList.length; i++) {
      layer = getLayer(layerList[i]);
      if (layer.document.images[imagename])
        return layer.document.images[imagename].src;
    }

  return(null);
}

function setImgSrc(imagename, imagesrc) {

  var i, layer;

  // If the image exists in the document object, change the source.

  if (document.images[imagename]) {
    document.images[imagename].src = imagesrc;
    return;
  }

  // Otherwise, for Netscape, search through the layers for the named image.

  else if (document.layers) {
    var found = false;
    for (i = 0; i < layerList.length && !found; i++) {
      layer = getLayer(layerList[i]);
      if (layer.document.images[imagename]) {
        layer.document.images[imagename].src = imagesrc;
        found = true;
      }
    }
  }
}

function getClipValues(str) {

  var clip = new Array();
  var i;

  // Parse out the clipping values for IE layers.

  i = str.indexOf("(");
  clip[0] = parseInt(str.substring(i + 1, str.length), 10);
  i = str.indexOf(" ", i + 1);
  clip[1] = parseInt(str.substring(i + 1, str.length), 10);
  i = str.indexOf(" ", i + 1);
  clip[2] = parseInt(str.substring(i + 1, str.length), 10);
  i = str.indexOf(" ", i + 1);
  clip[3] = parseInt(str.substring(i + 1, str.length), 10);
  return(clip);
}

function getLayer(name) {

  // Returns a handle to the named layer.

  if (document.layers)
    return(document.layers[name]);
  else if (document.all) {
    layer = eval('document.all.' + name + '.style');
    return(layer);
  }
  else
    return(null);
}

function init() {
  if (document.layers){
  width=getWinWidth();
  height=getWinHeight();
  document.layers.laykugel.left=width / 2 - 250;
  document.layers.layback.left=width / 2 - 290;
  document.layers.layback.top=height / 2 - 197;
  document.layers.nav1.left=width/2-90;
  document.layers.nav2.left=width/2-90;
  document.layers.layback.visibility="show";
  document.layers.laykugel.visibility="show";
  
  }
  else if (document.all) {
     width=getWinWidth();
     height=getWinHeight();
     document.all.laykugel.style.left=width / 2 -250;
     document.all.nav1.style.left=width/2-90;
     document.all.nav2.style.left=width/2-90;
     document.all.layback.style.left=width / 2 - 290;
     document.all.layback.style.top=height / 2 - 197;
     document.all.layback.style.visibility="visible";
     document.all.laykugel.style.visibility="visible";
  
  }
}

function initcenter() {
  if (document.layers){
  width=getWinWidth();
  height=getWinHeight();
  document.layers.layback.left=width / 2 - 290;
  document.layers.layback.top=height / 2 - 100; 
  }
  else if (document.all) {
     width=getWinWidth();
     height=getWinHeight();
     document.all.layback.style.left=width / 2 - 290;
     document.all.layback.style.top=height / 2 - 100;
  }
}

function MM_displayStatusMsg(msgStr) { //v2.0
  status=msgStr;
  document.MM_returnValue = true;
}


function MM_swapImgRestore() { //v2.0
  if (document.MM_swapImgData != null)
    for (var i=0; i<(document.MM_swapImgData.length-1); i+=2)
      document.MM_swapImgData[i].src = document.MM_swapImgData[i+1];
}

function MM_swapImage() { //v2.0
  var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.MM_swapImgData;
  for (i=0; i < (MM_swapImage.arguments.length-2); i+=3) {
    objStr = MM_swapImage.arguments[(navigator.appName == 'Netscape')?i:i+1];
    if ((objStr.indexOf('document.layers[')==0 && document.layers==null) ||
        (objStr.indexOf('document.all[')   ==0 && document.all   ==null))
      objStr = 'document'+objStr.substring(objStr.lastIndexOf('.'),objStr.length);
    obj = eval(objStr);
    if (obj != null) {
      swapArray[j++] = obj;
      swapArray[j++] = (oldArray==null || oldArray[j-1]!=obj)?obj.src:oldArray[j];
      obj.src = MM_swapImage.arguments[i+2];
  } }
  document.MM_swapImgData = swapArray; //used for restore
}

function MM_timelineGoto(tmLnName, fNew, numGotos) { //v2.0
  //Copyright 1997 Macromedia, Inc. All rights reserved.
  var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;
  if (document.MM_Time == null) MM_initTimelines(); //if *very* 1st time
  tmLn = document.MM_Time[tmLnName];
  if (numGotos != null)
    if (tmLn.gotoCount == null) tmLn.gotoCount = 1;
    else if (tmLn.gotoCount++ >= numGotos) {tmLn.gotoCount=0; return}
  jmpFwd = (fNew > tmLn.curFrame);
  for (i = 0; i < tmLn.length; i++) {
    sprite = (jmpFwd)? tmLn[i] : tmLn[(tmLn.length-1)-i]; //count bkwds if jumping back
    if (sprite.charAt(0) == "s") {
      numKeyFr = sprite.keyFrames.length;
      firstKeyFr = sprite.keyFrames[0];
      lastKeyFr = sprite.keyFrames[numKeyFr - 1];
      if ((jmpFwd && fNew<firstKeyFr) || (!jmpFwd && lastKeyFr<fNew)) continue; //skip if untouchd
      for (keyFrm=1; keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]; keyFrm++);
      for (j=0; j<sprite.values.length; j++) {
        props = sprite.values[j];
        if (numKeyFr == props.length) propNum = keyFrm-1 //keyframes only
        else propNum = Math.min(Math.max(0,fNew-firstKeyFr),props.length-1); //or keep in legal range
        if (sprite.obj != null) {
          if (props.prop2 == null) sprite.obj[props.prop] = props[propNum];
          else        sprite.obj[props.prop2][props.prop] = props[propNum];
      } }
    } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);
  }
  tmLn.curFrame = fNew;
  if (tmLn.ID == 0) eval('MM_timelinePlay(tmLnName)');
}

function MM_timelinePlay(tmLnName, myID) { //v1.2
  //Copyright 1997 Macromedia, Inc. All rights reserved.
  var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,propNum,theObj,firstTime=false;
  if (document.MM_Time == null) MM_initTimelines(); //if *very* 1st time
  tmLn = document.MM_Time[tmLnName];
  if (myID == null) { myID = ++tmLn.ID; firstTime=true;}//if new call, incr ID
  if (myID == tmLn.ID) { //if Im newest
    setTimeout('MM_timelinePlay("'+tmLnName+'",'+myID+')',tmLn.delay);
    fNew = ++tmLn.curFrame;
    for (i=0; i<tmLn.length; i++) {
      sprite = tmLn[i];
      if (sprite.charAt(0) == 's') {
        if (sprite.obj) {
          numKeyFr = sprite.keyFrames.length; firstKeyFr = sprite.keyFrames[0];
          if (fNew >= firstKeyFr && fNew <= sprite.keyFrames[numKeyFr-1]) {//in range
            keyFrm=1;
            for (j=0; j<sprite.values.length; j++) {
              props = sprite.values[j]; 
              if (numKeyFr != props.length) {
                if (props.prop2 == null) sprite.obj[props.prop] = props[fNew-firstKeyFr];
                else        sprite.obj[props.prop2][props.prop] = props[fNew-firstKeyFr];
              } else {
                while (keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]) keyFrm++;
                if (firstTime || fNew==sprite.keyFrames[keyFrm-1]) {
                  if (props.prop2 == null) sprite.obj[props.prop] = props[keyFrm-1];
                  else        sprite.obj[props.prop2][props.prop] = props[keyFrm-1];
        } } } } }
      } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);
      if (fNew > tmLn.lastFrame) tmLn.ID = 0;
  } }
}

function MM_displayStatusMsg(msgStr) { //v2.0
  status=msgStr;
  document.MM_returnValue = true;
}

function MM_initTimelines() {
    //MM_initTimelines() Copyright 1997 Macromedia, Inc. All rights reserved.
    var ns = navigator.appName == "Netscape";
    document.MM_Time = new Array(1);
    document.MM_Time[0] = new Array(7);
    document.MM_Time["Timeline1"] = document.MM_Time[0];
    document.MM_Time[0].MM_Name = "Timeline1";
    document.MM_Time[0].fps = 8;
    document.MM_Time[0][0] = new String("behavior");
    document.MM_Time[0][0].frame = 1;
    document.MM_Time[0][0].value = "MM_swapImage('document.Wirpic','document.Wirpic','images/m_2_2+.jpg')";
    document.MM_Time[0][1] = new String("behavior");
    document.MM_Time[0][1].frame = 3;
    document.MM_Time[0][1].value = "MM_swapImage('document.Wirpic','document.Wirpic','images/m_2_2.jpg','document.Dienstpic','document.Dienstpic','images/m_2_3+.jpg')";
    document.MM_Time[0][2] = new String("behavior");
    document.MM_Time[0][2].frame = 5;
    document.MM_Time[0][2].value = "MM_swapImage('document.Dienstpic','document.Dienstpic','images/m_2_3.jpg','document.Kontaktpic','document.Kontaktpic','images/m_3_4+.jpg')";
    document.MM_Time[0][3] = new String("behavior");
    document.MM_Time[0][3].frame = 7;
    document.MM_Time[0][3].value = "MM_swapImage('document.Kontaktpic','document.Kontaktpic','images/m_3_4.jpg','document.Technikpic','document.Technikpic','images/m_4_2+.jpg')";
    document.MM_Time[0][4] = new String("behavior");
    document.MM_Time[0][4].frame = 9;
    document.MM_Time[0][4].value = "MM_swapImage('document.Play','document.Play','images/m_3_3+.jpg','document.Technikpic','document.Technikpic','images/m_4_2.jpg')";
    document.MM_Time[0][5] = new String("behavior");
    document.MM_Time[0][5].frame = 11;
    document.MM_Time[0][5].value = "MM_swapImage('document.Play','document.Play','images/m_3_3.jpg')";
    document.MM_Time[0][6] = new String("behavior");
    document.MM_Time[0][6].frame = 60;
    document.MM_Time[0][6].value = "MM_timelineGoto('Timeline1','1')";
    document.MM_Time[0].lastFrame = 60;
    for (i=0; i<document.MM_Time.length; i++) {
        document.MM_Time[i].ID = null;
        document.MM_Time[i].curFrame = 0;
        document.MM_Time[i].delay = 1000/document.MM_Time[i].fps;
    }
}

