/*

2002.06.04, Sascha

Beschreibung: Das Objekt Ebene() bietet die Möglichkeit Layer
              Browserunabhängig über Methoden anzusprechen.
              Das Objekt sollte nur über seine Methoden angesprochen werden!
              Es ist somit eine Schnittstelle zwischen HTML und Javascript.
              
Abhängigkeiten: Das Objekt Ebene() benötigt das Objekt Browser() (Datei: browser.obj.js).
                Damit ein Ebene-Objekt angelegt werden kann, muss  die Datei browser.obj.js
                im HTML-Quelltext eingebunden sein, innerhalb des <HEAD> -Tags, und noch vor dem <SCRIPT> -Tag:
                
                <SCRIPT src="browser.obj.js" language="JavaScript"></SCRIPT>
                <SCRIPT src="ebene.obj.js" language="JavaScript"></SCRIPT>
               
                <!-- Jetzt kommt der Javascript-Code: -->
                
                <SCRIPT language="JavaScript">
                <!--
                
                // Jetzt können munter Ebene-Objekte angelegt werden, da die HTML-Seite
                // erst volständig aufgebaut sein muss, bevor ein Ebene-Objekt angelegt 
                // werden kann, muss das bilden von Ebene-Objekten in einer Funktion stattfinden,
                // die über onLoad="init()" im <BODY> -Tag aufgerufen wird.
                function init() {
                	
	                // Die Layer MÜSSEN im HTML-Quelltext vorhanden sein!
	                ebeneEObj = new Ebene("ebeneL");
	        }
                
                ... weitere Javascript-Code ...
                
                
                //-->
                </SCRIPT>
              
Konstruktor: Ebene(id)         Beim bilden eines Ebene-Objektes muss der Layername
                               (das Attribut "id") als Parameter Übergeben werden, z.B:
                               
                               testEObj = new Ebene(testL);
                               
                               Der Layer im HTML-Quelltext:
                               <DIV id="testL style="..."> ... </DIV>
                               
                               ALLE Werte des Style-Attributs müssen vollständig
                               vorhanden sein: position, left, top, width, height, z-index, 
                                               visibility, background-color, layer-background-color, border.

Methoden: Allgemeines:     Allen Methoden - ausser der Methode name() - können Parameter übergeben werden, diese Methoden setzen dann den 
                           Layer auf diese Werte. Sollte bei diesen Methoden der Parameter nicht mit angegeben werden,
                           so werden die aktuellen Werte des im HTML-Quelltext angelegten Layers zurückgegeben.
                           Die Methode farbe() funtioniert im Opera-Browser (Stand Version 6.01) nicht.
                           
          lesen/schreiben:
                                     
          -posX(x)         Setzt die X-Position (left) des Layers, oder gibt die X-Position zurück.
          
          -posY(y)         Setzt die Y-Position (left) des Layers, oder gibt die Y-Position zurück.
          
          -hoehe(h)        Setzt die Höhe (height) des Layers, oder gibt die Höhe zurück.
          
          -breite(b)       Setzt die Breite (width) des Layers, oder gibt die Breite zurück.
          
          -zIndex(z)       Setzt den Z-Index (z-index) des Layers, oder gibt den Z-Index zurück.
          
          -farbe(f)        Setzt die Farbe (background-color/layer-background-color) des Layers, oder gibt die Farbe zurück.
                           Die Farbe muss im Hexadezimalsystem mit einem vorangestelltem Doppelkreuz (z.B.: "#ff00ff")
                           angegeben werden, und kommt auch in diesem Format zurück
          
          -sichtbarkeit(s) Setzt die Sichtbarkeit (visibility) des Layers, oder gibt die Sichtbarkeit zurück.
                           Die Sichbarkeit muss mit "hidden" oder "visible" übergeben werden, und kommt auch in diesem
                           Format zurück.
                           
          lesen:
          
          -name()          Die Methode name() gibt den Namen (id) des Layers zurück, ihr können keine Parameter übergeben werden.

*/

function PosX() {
	
	if(PosX.arguments.length == 0) {
		
		this.x = this.obj.left;
		return parseInt(this.x);    // ie und ns6 geben Wert mit "px" zurück
	}
	else {
		
		this.x = PosX.arguments[0];
		this.obj.left = this.x;	
	}
	
	return true;	
}

function PosY() {
	
	if(PosY.arguments.length == 0) { 
		
		this.y = this.obj.top;
		return parseInt(this.y);    // ie und ns6 geben Wert mit "px" zurück
	}
	else {
		
		this.y = PosY.arguments[0];
		this.obj.top = this.y;	
	}	
	
	return true;	
}

function Hoehe() {
	
	if(Hoehe.arguments.length == 0) {  
		
		if(this.browser.ie) {
			
			this.h = this.obj.height;
		}
		else if(this.browser.ns4) {
				
			this.h = this.obj.clip.height;
		}
		else if(this.browser.ns6 || this.browser.ns7) {
			
			this.h = this.obj.height;
		}
		else if(this.browser.op) {
			
			this.h = this.obj.pixelHeight;
		}
		
		return parseInt(this.h);    // ie und ns6 geben Wert mit "px" zurück
	}
	else {
		
		this.h = Hoehe.arguments[0];
		
		if(this.browser.ie) {
			
			this.obj.height = this.h;
		}
		else if(this.browser.ns4) {
				
			this.obj.clip.height = this.h;
		}
		else if(this.browser.ns6 || this.browser.ns7) {
			
			this.obj.height = this.h;
		}
		else if(this.browser.op) {
			
			this.obj.pixelHeight = this.h;
		}
	}	
	
	return true;	
}

function Breite() {
	
	if(Breite.arguments.length == 0) {  
		
		if(this.browser.ie) {
			
			this.b = this.obj.width;
		}
		else if(this.browser.ns4) {
				
			this.b = this.obj.clip.width;
		}
		else if(this.browser.ns6 || this.browser.ns7) {
			
			this.b = this.obj.width;
		}
		else if(this.browser.op) {
			
			this.b = this.obj.pixelWidth;
		}
		
		return parseInt(this.b);    // ie und ns6 geben Wert mit "px" zurück
	}
	else {
		
		this.b = Breite.arguments[0];
		
		if(this.browser.ie) {
			
			this.obj.width = this.b;
		}
		else if(this.browser.ns4) {
				
			this.obj.clip.width = this.b;
		}
		else if(this.browser.ns6 || this.browser.ns7) {
			
			this.obj.width = this.b;
		}
		else if(this.browser.op) {
			
			this.obj.pixelWidth = this.b;
		}
	}	
	
	return true;	
}

function ZIndex() {
	
	if(ZIndex.arguments.length == 0) {  
		
		this.z = this.obj.zIndex;
		return this.zIndex; 
	}
	else {
		
		this.z = ZIndex.arguments[0];
		this.obj.zIndex = this.z;	
	}	
	
	return true;	
}

function Farbe() {
	
	if(Farbe.arguments.length == 0) {  
		
		if(this.browser.ie) {
			
			this.f = this.obj.backgroundColor;
		}
		else if(this.browser.ns4) {
			
			this.f = this.obj.bgColor;
		}
		else if(this.browser.ns6 || this.browser.ns7) {
			
			this.f = this.obj.backgroundColor;
		}
		else if(this.browser.op) {
			
			this.f = this.obj.color;   // funktioniert leider nicht!
		}
		
		return this.f; 
	}
	else {
		
		this.f = Farbe.arguments[0];
		
		if(this.browser.ie) {
			
			this.obj.backgroundColor = this.f;
		}
		else if(this.browser.ns4) {
			
			this.obj.bgColor = this.f;
		}
		else if(this.browser.ns6 || this.browser.ns7) {
			
			this.obj.backgroundColor = this.f;
		}
		else if(this.browser.op) {
			
			this.obj.color = this.f;   // funktioniert leider nicht!
		}
	}	
	
	return true;	
}

function Sichtbarkeit() {
	
	if(Sichtbarkeit.arguments.length == 0) {  
		
		this.v = this.obj.visibility;
		if(!this.v || this.v == "show") { this.v = "visible"; }    // ns4 gibt "show" statt "visible" zurück
		else if(this.v == "hide") { this.v = "hidden"; }           // ns4 gibt "hide" statt "hidden" zurück
		return this.v.toLowerCase();                               // op gibt VISIBLE und HIDDEN zurück
	}
	else {
		
		this.v = Sichtbarkeit.arguments[0];
		this.obj.visibility = this.v;	
	}	
	
	return true;	
}

function Name() {

	return this.id;
}

// Prototypobjekt
function Ebene(id) {
	
	// Eigenschaften
	this.id      = id;
	this.x       = 0;
	this.y       = 0;
	this.h       = 1;
	this.b       = 1;
	this.z       = 1;
	this.f       = "#ffffff";
	this.v       = "visible";
	this.obj     = new Object();
	this.browser = new Browser();
	
	// Methoden
	this.posX         = PosX;
	this.posY         = PosY;
	this.hoehe        = Hoehe;
	this.breite       = Breite;
	this.zIndex       = ZIndex;
	this.farbe        = Farbe;
	this.sichtbarkeit = Sichtbarkeit;
	this.name         = Name;
	
	// Layer-Objekt definieren
	if(this.browser.ie) {
		
		this.obj = document.all[this.id].style;
	}
	else if(this.browser.ns4) {
		
		this.obj = document[this.id];
	}
	else if(this.browser.ns6 || this.browser.ns7) {
		
		this.obj = document.getElementById(this.id).style;
	}
	else if(this.browser.op) {
		
		this.obj = document.getElementById(this.id).style;
	}	
	
	this.x = this.posX();
	this.y = this.posY();
	this.h = this.hoehe();
	this.b = this.breite();
	this.z = this.zIndex();
	this.f = this.farbe();
	this.v = this.sichtbarkeit();
}
