/* ========================================================================
|	Layer.js - JavaScript Klasse zur browserunabhaengigen Manipulation  			|
|			   von Ebenen.                                        				|
|	(C) 11/1999 by Oliver Kutter (o.kutter@e-7.com)	                       			|
|	some changes where made by me -> norman°°					|
| 	and some more (NS6 compatible) by me -> Olimago					|
|   Class: Layer                     									|
|   Konstruktor   : Layer(name, vis) 						
|   Eigenschaften : x, y, z, breite, hoehe, sichtbar						|
|                   style - Verweis auf style Eigenschaft (private)					|
|   Unterobjekt: clip. - oben, unten, links, rechts (nur nach setClip)    				|
|   Methoden : moveTo, moveBy, setSize, setClip, modClip, setVis	  			|
=========================================================================*/

if ((navigator.appName=='Netscape') && (navigator.appVersion.charAt(0)<5)) {		// Browsercheck
	var ns = true;
}

if (document.all) {		// Browsercheck
	var ie = true;
	}

if ((document.getElementById) && (!ie)) {		// Browsercheck
	var ns6 = true;
}

lpre = (ns) ? "document.layers." : "document.all.";

lpost = (ns) ? "" : ".style";

// ===> END

// ==> BEGIN KONSTRUKTOR Layer

function Layer(name, vis) { 		// Ebenenobjekt aus DOM ermitteln + style Eigenschaft
   if (ns) {
   		this.obj = eval("document.layers." + name);
   		this.style = eval("document.layers." + name);
   }

   if (ie) {
   		this.obj = eval("document.all." + name);
   		this.style = eval("document.all." + name + ".style");
	}

  if (ns6) {
		var oFunction = "document.getElementById(\"" + name + "\")";
		this.obj = eval(oFunction);
		var sFunction = "document.getElementById(\"" + name + "\").style";
		this.style = eval(sFunction);
}

// Startwerte aus Ebene lesen

if (ns) {  	this.x = this.style.left;
   		this.y = this.style.top;
}

if (ie) {	this.x = parseInt(this.style.pixelLeft);
		this.y = parseInt(this.style.pixelTop);
}

if (ns6) {  	this.x = parseInt(this.style.left);
   		this.y = parseInt(this.style.top);
}
	this.z = this.style.zIndex;
	this.breite = ns ? this.style.clip.width : parseInt(this.style.width);
	this.hoehe = ns ? this.style.clip.height : parseInt(this.style.height);

// Sichtbarkeit aus Parameter

   this.sichtbar = vis;

// Weitere Definitionen

   this.clip = new Clip(0,0,0,0);

// ===> BEGIN Methoden Deklaration

   this.moveTo = layer_moveTo;
   this.setSize = layer_setSize;
   this.moveBy = layer_moveBy;
   this.setVis = layer_setVis;
   this.setClip = layer_setClip;
   this.modClip = layer_modClip;
   this.setWeight = layer_setWeight;

   // ===> END Methoden Deklaration

   return this;
 }

 // ===> END KONSTRUKTOR Layer

 // ===> BEGIN Methoden Implementierung

 // layer_moveTo(x, y) - Positioniert die Ebene bei x, y

 function layer_moveTo(x, y) {
   this.x = x;
   this.y = y;
   this.style.left = x;
   this.style.top = y;
 }

 // layer_setSize(name, x, y) - Aendert die Ausdehnung der Ebene auf x * y

 function layer_setSize(breite, hoehe) {
   this.breite = breite;
   this.hoehe = hoehe;
   this.style.width = breite;
   this.style.height = hoehe;
 }

 // layer_setVis - Setzt die Sichtbarkeit der Ebene auf sichtbar (true), bzw. unsichtbar (false)

 function layer_setVis(vis) {
   this.sichtbar = vis;
   if(vis) {
     this.style.visibility = "visible";
   } else {
     this.style.visibility = "hidden";
   }
}

// layer_moveBy(x, y) - Verschiebt die Ebene um x, y

function layer_moveBy(x, y) {
  this.x = parseInt(this.x + x);
  this.y = parseInt(this.y + y); 
  this.style.left = this.x;
  this.style.top = this.y;
}

// layer_setClip(oben, rechts, unten, links) - Setzt die Clip Eigenschaft

function layer_setClip(oben, rechts, unten, links) {
 	this.clip.oben = oben;
	this.clip.rechts = rechts;
	this.clip.unten = unten;
	this.clip.links = links;
   if(ns) {
    	 this.style.clip.top = oben;
	 this.style.clip.right = rechts;
	 this.style.clip.bottom = unten;
	 this.style.clip.left = links;   
   } else {
     this.style.clip = "rect(" + oben + " " + rechts + " " + unten + " " + links + ")";
   }
}

// layer_modClip(oben, rechts, unten, links) - Modifiziert die Clip Eigenschaft

function layer_modClip(oben, rechts, unten, links) {
  this.setClip(this.clip.oben + oben, this.clip.rechts + rechts, this.clip.unten + unten, this.clip.links + links);
}

// ===> END Methoden Implementierung
// ===> BEGIN Hilfsklasse Clip

function Clip(oben, rechts, unten, links) {
  this.oben = parseInt(oben);
  this.rechts = parseInt(rechts);
  this.unten = parseInt(unten);
  this.links = parseInt(links);
  return this;
}
// ===> END Hilfsklasse Clip

// ===> ADD-ON Klasse

// layer_fontWeight(weight) - Ändert die Schriftstärke

function layer_setWeight(weight) {
	if(weight) {
		this.style.fontWeight = "bold";
	} else {
		this.style.fontWeight = "normal";
	}
}

// ===> END ADD-ON Klasse