// ++ myLayerObj     v1.3        Martin Klempau / factor4 (c) 2001-2003

// ++ Versuch, die verschiedenen Layer-Methoden in ein Objekt zu pressen und
// ++ damit ein einheitliches Interface zur Verfügung zu stellen
// ++ Es existiert jede Funktion in zwei Ausführungen (NS + IE), die richtigen
// ++ werden beim initialisieren an das Layer-Objekt gebunden.
// ++
// ++ Unterstützte Methoden:
// ++   setHtml(sourcecode as string)
// ++   setPos(x,y as Integer)
// ++   setPositionType(type as string)
// ++   setSize(w,h as Integer)
// ++   setVisible(visible as boolean)
// ++   setZ(d as Integer)
// ++   setClipRect(l,t,w,h as Integer)
// ++   setOverflow(type as string)
// ++   setHeight(height as integer)
// ++   setWidth(width as integer)
// ++
// ++
// ++ Update 12-08-01: Zusätzliche Funktion "SetPositionType"
// ++ Update 01-07-03: Zusätzliche DOM Version für NS6 / Mozilla / IE6
// ++ Update 02-09-03: Zusätzliche Funktionen "SetOverflow", "SetHeight" und "SetWidth"



// ++ myLayerObj.emptyFunc, falls der Browser gar keine Layer unterstützt
function myLayerObj_emptyFunc() { }



// ++ myLayerObj.setHtml
function myLayerObj_setHtml_NS(code) {
  alert(this.lName);
  with(document[this.lName].document) { open(); write(code); close(); }
}

function myLayerObj_setHtml_IE(code) {
  document.all[this.lName].innerHTML=code; 
}

function myLayerObj_setHtml_DOM(code) {
  this.element.innerHTML=code; 
}



// ++ myLayerObj.setPos
function myLayerObj_setPos_NS(x,y) {
  document[this.lName].left = x;
  document[this.lName].top = y;
}

function myLayerObj_setPos_IE(x,y) {
  document.all[this.lName].style.left = x;
  document.all[this.lName].style.top = y;  
}

function myLayerObj_setPos_DOM(x,y) {
  this.element.style.left = x;
  this.element.style.top = y;
}



// ++ myLayerObj.setPositionType
function myLayerObj_setPositionType_NS(t) {
  document[this.lName].position = t;
}

function myLayerObj_setPositionType_IE(t) {
  document.all[this.lName].style.position = t;
}

function myLayerObj_setPositionType_DOM(t) {
  this.element.style.position = t;
}


// ++ myLayerObj.setSize
function myLayerObj_setSize_NS(w,h) {
  document[this.lName].width = w;
  document[this.lName].height = h;
}

function myLayerObj_setSize_IE(w,h) {
  document.all[this.lName].style.width = w;
  document.all[this.lName].style.height = h;  
}

function myLayerObj_setSize_DOM(w,h) {
  this.element.style.width = w;
  this.element.style.height = h;  
}


// ++ myLayerObj.setWidth
function myLayerObj_setWidth_NS(w,h) {
  document[this.lName].width = w;
}

function myLayerObj_setWidth_IE(w,h) {
  document.all[this.lName].style.width = w;
}

function myLayerObj_setWidth_DOM(w,h) {
  this.element.style.width = w;
}


// ++ myLayerObj.setHeight
function myLayerObj_setHeight_NS(w,h) {
  document[this.lName].height = h;
}

function myLayerObj_setHeight_IE(w,h) {
  document.all[this.lName].style.height = h;  
}

function myLayerObj_setHeight_DOM(w,h) {
  this.element.style.height = h;  
}



// ++ myLayerObj.setVisibility
function myLayerObj_setVisible_NS(v) {
  document[this.lName].visibility = v ? "visible" : "hidden";
}

function myLayerObj_setVisible_IE(v) {
  document.all[this.lName].style.visibility = v ? "visible" : "hidden";
}

function myLayerObj_setVisible_DOM(v) {
  this.element.style.visibility = v ? "visible" : "hidden";
}


// ++ myLayerObj.setZ
function myLayerObj_setZ_NS(z) {
  document[this.lName].zIndex = z;
}

function myLayerObj_setZ_IE(z) {
  document.all[this.lName].style.zIndex = z;
}

function myLayerObj_setZ_DOM(z) {
  this.element.style.zIndex = z;
}


// ++ myLayerObj.setOverflow
function myLayerObj_setOverflow_NS(o) {
  document[this.lName].overflow = o;
}

function myLayerObj_setOverflow_IE(o) {
  document.all[this.lName].style.overflow = o;
}

function myLayerObj_setOverflow_DOM(o) {
  this.element.style.overflow = o;
}


// ++ myLayerObj.setClipRect
function myLayerObj_setClipRect_NS(l,t,w,h) {
  document[this.lName].clip.left = l;
  document[this.lName].clip.top = t;
  document[this.lName].clip.width = w;
  document[this.lName].clip.height = h;
}

function myLayerObj_setClipRect_IE(l,t,w,h) {
  document.all[this.lName].style.clip = "rect(" + t + " " + w + " " + h + " " + l + ")";
}

function myLayerObj_setClipRect_DOM(l,t,w,h) {
  this.element.style.clip = "rect(" + t + " " + w + " " + h + " " + l + ")";
}



// ++ myLayerObj_constructor
function myLayerObj_constructor(layerName) {
  this.length = 12;
  this.lName = layerName;   // Name des Layers dieses Objektes
  this.lType = "";          // Typ des Layers (bestimmt Methodenzuordnung)
  
  if (document.getElementById && !document.layers) this.lType = "dom"; 
    else if (document.layers) this.lType = "ns";
      else if (document.all) this.lType = "ie";
        else this.lType = "--"; 
  
  // Je nach Typ die Funktionen richtig binden
  if (this.lType == "ns") {
    this.setHtml = myLayerObj_setHtml_NS;
    this.setPos = myLayerObj_setPos_NS;
    this.setSize = myLayerObj_setSize_NS;
    this.setHeight = myLayerObj_setHeight_NS;
    this.setWidth = myLayerObj_setWidth_NS;
    this.setOverflow = myLayerObj_setOverflow_NS;
    this.setPositionType = myLayerObj_setPositionType_NS;
    this.setVisible = myLayerObj_setVisible_NS;
    this.setZ = myLayerObj_setZ_NS;
    this.setClipRect = myLayerObj_setClipRect_NS;
  }
  if (this.lType == "ie") {
    this.setHtml = myLayerObj_setHtml_IE;
    this.setPos = myLayerObj_setPos_IE;
    this.setSize = myLayerObj_setSize_IE;
    this.setHeight = myLayerObj_setHeight_IE;
    this.setWidth = myLayerObj_setWidth_IE;
    this.setOverflow = myLayerObj_setOverflow_IE;
    this.setPositionType = myLayerObj_setPositionType_IE;
    this.setVisible = myLayerObj_setVisible_IE;
    this.setZ = myLayerObj_setZ_IE;
    this.setClipRect = myLayerObj_setClipRect_IE;
  }
  if (this.lType == "dom") {
    this.length++;
    this.element = document.getElementById(this.lName);
    this.setHtml = myLayerObj_setHtml_DOM;
    this.setPos = myLayerObj_setPos_DOM;
    this.setSize = myLayerObj_setSize_DOM;
    this.setHeight = myLayerObj_setHeight_DOM;
    this.setWidth = myLayerObj_setWidth_DOM;
    this.setOverflow = myLayerObj_setOverflow_DOM;
    this.setPositionType = myLayerObj_setPositionType_DOM;
    this.setVisible = myLayerObj_setVisible_DOM;
    this.setZ = myLayerObj_setZ_DOM;
    this.setClipRect = myLayerObj_setClipRect_DOM;
  }
  if (this.lType == "--") {
    this.setHtml = myLayerObj_emptyFunc;
    this.setPos = myLayerObj_emptyFunc;
    this.setSize = myLayerObj_emptyFunc;
    this.setVisible = myLayerObj_emptyFunc;
    this.setZ = myLayerObj_emptyFunc;
    this.setClipRect = myLayerObj_emptyFunc;
  }
}
