/* CHECKSIZE ................................................................
   prueft die Groesse des zur Verfuegung stehenden Browserfensters und liefert
   das Array koord mit den Werten horizontal und vertikal zurueck
   .......................................................................... */

  function checkSize()
  {
    var koord = new Array(2);
	
    if (navigator.appName.indexOf('Netscape') != -1)
	{
	  koord[0] = window.innerWidth;
	  koord[1] = window.innerHeight;
	}
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
	  koord[0] = document.body.clientWidth;
	  koord[1] = document.body.clientHeight;
	}
	return(koord);
  }
/* .......................................................................... */


  function checkWindowsize()
  {
    var koord = new Array(2);
    if (navigator.appName.indexOf('Netscape') != -1)
	{
	  koord[0] = screen.width;
	  koord[1] = screen.height;

	}
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
	  koord[0] = screen.availWidth;
	  koord[1] = screen.availHeight;
	}
	alert(koord[0] + "; " + koord[1]);
	return(koord);
  }
  
  function centerWindow(WName)
  {
/*    if (navigator.appName.indexOf('Netscape') != -!)
	{
	  WName.moveTo(Math.floor((checkWindowsize()[0] - WName.width)/2), Math.floor((checkWindowsize()[1] - WName.height)/2));
	  WName.focus();
	} */
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
	  WName.moveTo((checkWindowsize()[0] - WName.width)/2, (checkWindowsize()[1] - WName.height)/2);
	  WName.focus();
	}
  }	
  

/* PLACELAYER ...............................................................
   platziert den Layer mit dem Namen 'LayerID' an die angegebenen Koordinaten
   moveX und moveY
   .......................................................................... */
 
  function placeLayer(LayerID, moveX, moveY)
  {
    var obj = findObj(LayerID);
    if (navigator.appName.indexOf('Netscape') != -1)
	{
      obj.left = moveX;
	  obj.top = moveY;
	}
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
      obj.style.left = moveX;
	  obj.style.top = moveY;
	}

  }

/* .......................................................................... */

/* GETLAYERPOS ...............................................................
   ermittelt x- und y-pos des uebergebenen Layers
   .......................................................................... */
 
  function getLayerPos(LayerID)
  {
    var obj = findObj(LayerID);
	var pos = new Array();
	
    if (navigator.appName.indexOf('Netscape') != -1)
	{
      pos[0] = obj.left;
	  pos[1] = obj.top;
	}
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
      pos[0] = obj.style.left;
	  pos[1] = obj.style.top;
	}
    return pos;
  }

/* .......................................................................... */



/* CENTERLAYER ..............................................................
   zentriert eine Reihe uebergebener Layer; Offset kann fuer x- und/oder y-
   Koordinate mituebergeben werden.
   .......................................................................... */
  
  function centerLayer()
  {
    var newkoord = new Array(2);
	var temp = new Array(2);
	var args = centerLayer.arguments;
	var Offset = new Array(2);
	var obj;

	for (i = 0; i < args.length; i++)
	{
	  Offset[0] = 0;
	  Offset[1] = 0;
	  temp[0] = 0;
	  temp[1] = 0;
	  
	  if (typeof args[i] == 'string') 
	  {
	    obj = findObj(args[i]);
		
		if (typeof args[i+1] == 'number')
		{
		  Offset[0] = parseInt(args[i+1]);
		  if (typeof args[i+2] == 'number') Offset[1] = parseInt(args[i+2]);
		}
		
		if (navigator.appName.indexOf('Microsoft') != -1)
	    {
	      temp[0] = Math.floor((checkSize()[0] - parseInt(obj.style.width))/2);
	      temp[1] = Math.floor((checkSize()[1] - parseInt(obj.style.height))/2);
	    }
        if (navigator.appName.indexOf('Netscape') != -1)
	    {
		  /*temp[0] = obj.left;
		  temp[1] = obj.top;
		  Offset[0] = 0;
		  Offset[1] = 0;*/
  	      /* width und height im Layer-Objekt nicht verfuegbar! --------------- */
		  temp[0] = Math.floor((checkSize()[0] - parseInt(obj.clip.width))/2);
	      temp[1] = Math.floor((checkSize()[1] - parseInt(obj.clip.height))/2);
		  //alert("temp0= "+temp[0]+"; temp1= "+temp[1]);
	    }
	    for (j = 0; j <= 1; j++)
		{
		  if (temp[j] < 0) temp[j] = 0;
	      newkoord[j] = Offset[j] + temp[j];
		}
		
	    placeLayer(args[i], newkoord[0], newkoord[1]);
      }
	}
  }

/* .......................................................................... */

/* PLACERELTO ...............................................................
   Platziert einen Layer mit einem Offset relativ zu einem anderen Layer
   .......................................................................... */

function placeRelTo(LayerID1, LayerID2, OffsetX, OffsetY)
{
  var koordID2 = new Array();
  
  if (navigator.appName.indexOf('Netscape') != -1)
  {
    koordID2[0] = parseInt(findObj(LayerID2).left);
	koordID2[1] = parseInt(findObj(LayerID2).top);
  }
  if (navigator.appName.indexOf('Microsoft') != -1)
  {
    koordID2[0] = parseInt(findObj(LayerID2).style.left);
	koordID2[1] = parseInt(findObj(LayerID2).style.top);
  }

  koordID2[0] = koordID2[0] + OffsetX;
  koordID2[1] = koordID2[1] + OffsetY;
	
  placeLayer(LayerID1, koordID2[0], koordID2[1]);
}
/* .......................................................................... */

/* showHideLayer ...............................................................
   zeigt/versteckt den uebergebenen Layer
   .......................................................................... */

function showHideLayer()
{
  var args = showHideLayer.arguments;
  //alert("laenge= " + args.length);
  for (i = 0; i < args.length; i += 2)
  {
	obj=findObj(args[i]);
	
	//alert("obj= " + obj);
	
	if (obj.style)
	{
	  //alert("IE: " + args[i+1] + "; obj= " + obj.style.visibility);
	  obj=obj.style;
	  if (args[i+1]) v='visible';
	  else v='hidden';
	  obj.visibility = v;
	}
	else
	{
	  //alert("NN: " + args[i+1] + "; obj= " + obj.visibility);
	  if (args[i+1]) v='show';
	  else v='hide';
      obj.visibility=v;
	}
  }
}

/* invertLayerVis............................................................
   invertiert die Sichtbarkeit der übergebenen Layer
   .......................................................................... */

function invertLayerVis()
{
  var args = invertLayerVis.arguments;
  for (i=0; i<args.length; i++)
  {
	obj = findObj(args[i]);
	if (document.all)
	{
	  if (obj.style.visibility == "visible") obj.style.visibility = "hidden";
	   else obj.style.visibility = "visible";
	}
	if (document.layers)
	{
	  if (obj.visibility == "show") obj.style.visibility = "hide";
	   else obj.visibility = "show";
	}
  }
}

/* findZMax..................................................................
   findet den maximalen Z-Index aller im Dokument vorkommenden Layer
   .......................................................................... */

function findZMax()
{
  var Zmax = 0;
  for (i=0; i<document.all.length; i++)
    if ((document.all[i].style.zIndex) && (document.all[i].style.zIndex>Zmax)) Zmax = document.all[i].style.zIndex;
  return Zmax;
}

function existsObj(name)
{
  for (i=0; i<document.all.length; i++)
    if (document.all[i].id == name) return true;
  return false;
}

	
/* moveLayer ...............................................................
   bewegt den übergebenen Layer
   Argumente:
     name:			Name des zu bewegenden Layers
	 endX:			End-XPosition des Layers
	 endY:			End-YPosition -"-
	 delay:			Zeitspanne in Millisekunden, um die Endposition zu erreichen
	 acc:			Beschleunigung zur Endposition (negativ: Verzoegerung)
   .......................................................................... */

function moveLayer(name, endX, endY, delay, acc)
{
  // alert("name= " + name + "; endX= " + endX + "; endY= " + endY + "; delay= " + delay + "; acc= " + acc);
  var args = moveLayer.arguments;
  var d = document;
  var obj = findObj(args[0]);
  var startX = parseInt(obj.style.left);
  var startY = parseInt(obj.style.top);
  
  dir = ((startX - args[1]) > 0) ? -1 : 1;
  d.angle = Math.atan((startY - args[2])/(startX - args[1]));
  d.Index = 0;
  d.LayerID = name;
  d.delay = args[3];
  d.acc = args[4]; //wird noch nicht ausgewertet
  
  
  var tempcnt = Math.sqrt(Math.pow(startX - endX,2) + Math.pow(startY - endY,2));
  var fps = tempcnt/d.delay*1000;
  if (fps > 50) step = tempcnt/d.delay*20;
   else step = 1;
   
  // alert("fps= " + tempcnt/d.delay*1000 + "; step= " + step + "; #Steps= " + tempcnt/step);
  d.cnt = Math.round(tempcnt/step);
  
  // alert("cnt= " + d.cnt + "; enddelay= " + Math.round(d.delay/d.cnt));
  d.posXY = new Array(d.cnt);
  
  for (i=d.cnt; i>1; i--)
  {
    d.posXY[d.cnt-i] = new Array(2);
	d.posXY[d.cnt-i][0] = startX + Math.round(step*dir*(d.cnt-i+1)*Math.cos(d.angle));
	d.posXY[d.cnt-i][1] = startY + Math.round(step*dir*(d.cnt-i+1)*Math.sin(d.angle));
  }
  d.posXY[d.cnt-1] = new Array(2);
  d.posXY[d.cnt-1][0] = endX;
  d.posXY[d.cnt-1][1] = endY;
  
  shiftLayer();
}

function shiftLayer(name, Index, delay, cnt, angle)
{
  var d = document;
  if (d.Index<d.cnt)
  {
    placeLayer(d.LayerID, d.posXY[d.Index][0], d.posXY[d.Index][1]);
	d.Index++;
    timer = window.setTimeout("shiftLayer()", Math.round(d.delay/d.cnt));
  }
   else clearTimeout(timer);
}


var cntFenster = 0;
function openWindow(url,prop)
{
  cntFenster++;
  var name = "fenster"+cntFenster;
  
  //alert("name= "+name);
  
  window.open(url,name,prop);
}
