<!--
// Die Klasse stellt eine Ebene an der gewünschten Position dar. Der Inhalt der
// Ebene kann zur Laufzeit geändert werden durch Übergabe des gewünschten Html-Codes.
// Darüber hinaus kann die Ebene auch wieder ausgeblendet werden.
// Der Konstruktor bekommt den Namen (Id) der anzuzeigenden Ebenen übergeben. 
// Durch Aufruf der Funktion cDHWriteContent( text) 
// wird der übergebene Text an der Position x,y eingeblendet/dargestllt. 
// Durch den Aufruf der Funktion mDStsVisibility( 0) wird die Ebene ausgeblendet. 
// Beim Aufruf der Funktion cDHWriteContent() wird die Ebene implizit eingeblendet.



// Konstruktor
// Prm: Namen der Ebene, 
function classDivHandle(divId)
{
  // Klassenmethoden
  this.cDHMakeObjRaw         = cDHMakeObjRaw;
  this.cDHMakeObjStyle       = cDHMakeObjStyle;
  this.cDHSeekDiv            = cDHSeekDiv;
  this.cDHGetObjectWidth     = cDHGetObjectWidth;
  this.cDHGetObjectHeight    = cDHGetObjectHeight;
  this.cDHWriteContent       = cDHWriteContent;
  this.cDHShiftTo            = cDHShiftTo;
  this.cDHSetVisibility      = cDHSetVisibility;
  
  // Der Name der Ebene
  this.divId                = divId;
  // Das HTML/DOM-Objekt der Ebene
  this.objRaw               = '';
  // Das CSS-Objekt der Ebene
  this.objStyle             = '';

  // Ermittlung des aktuellen Browsers
  if( document.images) 
  {
    this.isCSS              = ( document.body && document.body.style) ? true : false;
    this.isW3C              = ( this.isCSS && document.getElementById) ? true : false;
    this.isIE4              = ( this.isCSS && document.all) ? true : false;
    this.isNN4              = ( document.layers) ? true : false;
  }
  
  // Erstellung eines Html/DOM-Objekts der Ebene.
  this.cDHMakeObjRaw();
  // Erstellung eines CSS-Objekts der Ebene.
  this.cDHMakeObjStyle();
  
  // Wegen Bug sind diese 2 Zuweisungen notwendig
  this.objStyle.filter     = "alpha(opacity=0)";
  this.objStyle.MozOpacity = 0.0;
  this.objStyle.backgroundColor = "#FFFCCC"; 
}



// Convert object name string or object reference
// into a valid element object reference
function cDHMakeObjRaw() 
{
  if( this.isW3C) 
    this.objRaw = document.getElementById( this.divId);
  else if( this.isIE4) 
    this.objRaw = document.all( this.divId);
  else if( this.isNN4) 
    this.objRaw = this.cDHSeekDiv( document, this.divId);
}



// Convert object name string or object reference
// into a valid style (or NN4 layer) reference
function cDHMakeObjStyle() 
{
  this.objStyle = ( this.objRaw && this.isCSS) ? this.objRaw.style : this.objRaw;
}



// Seek nested NN4 layer from string name
function cDHSeekDiv( doc, name) 
{
  var obj;

  for ( var i = 0; i < doc.layers.length; i++) 
  {
    if( doc.layers[i].name == name) 
    {
      obj = doc.layers[i];
      break;
    }
    // dive into nested layers if necessary
    if(doc.layers[i].document.layers.length > 0) 
    {
      obj = this.cDHSeekDiv( document.layers[i].document, name);
    }
  }
  return obj;
}



// Die Funktion ermittelt die Breite des aktuellen Objekt
function cDHGetObjectWidth()  
{
  var result = 0;

  if (this.objRaw.offsetWidth) 
    result = this.objRaw.offsetWidth;
  else if (this.objRaw.clip && this.objRaw.clip.width) 
    result = this.objRaw.clip.width;
  else if (this.objStyle && this.objStyle.pixelWidth) 
    result = this.objStyle.pixelWidth;

  return parseInt(result);
}



// Die Funktion ermittelt die Höhe des aktuellen Objekt
function cDHGetObjectHeight()  
{
  var result = 0;

  if (this.objRaw.offsetHeight) 
    result = this.objRaw.offsetHeight;
  else if (this.objRaw.clip && this.objRaw.clip.height) 
    result = this.objRaw.clip.height;
  else if (this.objStyle && this.objStyle.pixelHeight) 
    result = this.objStyle.pixelHeight;

  return parseInt(result);
}



// Die Funktion schreibt den übergebenen Text (Html-Code) in die Ebenen.
function cDHWriteContent( val1)
{
  if( this.objRaw) 
  {
  	if( this.isNN4)
  	{
  		this.objRaw.document.write( val1);
  		this.objRaw.document.close();
  	}
    else
    {
      this.objRaw.innerHTML = val1;
    }
  }
}



// Position an object at a specific pixel coordinate
function cDHShiftTo( posX, posY) 
{
  if( this.objStyle) 
  {
    if( this.isCSS) 
    { 
      // equalize incorrect numeric value type
      var units = (typeof this.objStyle.left == "string") ? "px" : 0 
      this.objStyle.left = posX + units;
      this.objStyle.top = posY + units;
    } 
    else if( this.isNN4) 
    {
      this.objStyle.moveTo( posX, posY)
    }
  }
}



// Die Funktion verändert die Sichtbarkeit in Prozent (100=sichtbar, 
// 50=halb sichtbar, 0= unsichtbar).
// Prm: Sichtbarkeit (in Prozent) zwischen 0 - 100
function cDHSetVisibility( valOpacity)
{
  if( valOpacity < 0) 
  {
    this.objStyle.visibility = "hidden" 
  }
  else
  {
    this.objStyle.display = "block" 
    this.objStyle.visibility = "visible" 
    // Setzen des aktuellen Opacity-Wertes
    this.objStyle.filter = "alpha(opacity="+valOpacity+")";
    // Diese Zeile führt beim Firefox 0.9 zu einem 'Zittern' beim Ein- und Ausblenden
    // this.objStyle.MozOpacity = valOpacity >= 100 ? 1.0 : ( valOpacity <= 0 ? 0.0 : ( valOpacity / 100));
    // Workaround:
      if( valOpacity >= 100) valOpacity = 99;
      if( valOpacity <= 0) valOpacity = 0;
      this.objStyle.MozOpacity = valOpacity / 100;
  }
}


//-->
