// ********************
// *   LayerObjekt    *
// ********************

// Allgemeine Initialisierung und Definitionen
var hover_src=new Array();
var def_src=new Array();

// Browser Check auf ie4+,ns4+,mac,opera5
function browserCheck() {
this.ver=navigator.appVersion;
this.agent=navigator.userAgent;
this.dom=(document.getElementById)? true:false;
this.opera5=this.agent.indexOf("Opera 5")>-1
this.ie4=(document.all && !this.dom)? true:false;
this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)? true:false
this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)? true:false
this.ie=(this.ie4 || this.ie5 || this.ie6);  // ein Internet Explorer?
this.mac=this.agent.indexOf("Mac")>-1
this.ns4=(document.layers && !this.dom)? true:false
this.ns6=(this.dom && parseInt(this.ver)>=5)? true:false
this.ns=(this.ns4||this.ns6) // ein Netscape?
this.bw=(this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera) // Browser erkannt?
return this
}
is=new browserCheck() // Browser Check Objekt init
Obj=new Array();

function set_layerObj() {
	var arg=set_layerObj.arguments;
	x=arg.length;
	while (x--) { Obj[arg[x]]=new layerObj(arg[x]);}
}

function set_hoverObj() {
	var arg=set_hoverObj.arguments;
	y=arg.length;
	while (y--) { 
	Obj[arg[y]]=new layerObj(arg[y]);
	Obj[arg[y]].hover(); }
}

// erzeugt die LayerObjekte

function layerObj(id) {
if (!is.bw) return false;
if (Obj[id]) return;
this.elm=(is.dom)? document.getElementById(id):(is.ie4)?document.all[id]:0; // element
if (!this.elm) { alert('Layer '+id+' existiert nicht!'); return false;}
this.css=(is.dom||is.ie4)?this.elm.style:this.elm; // stylesheet
this.ref=(is.dom||is.ie4)?document:this.css.document;
this.x=parseInt(this.css.left) || this.css.pixelLeft || this.elm.offsetLeft || 0;
this.y=parseInt(this.css.top) || this.css.pixelTop || this.elm.offsetTop || 0;
this.w=this.elm.offsetWidth || this.css.clip.width || this.ref.width || this.css.pixelWidth || 0;
this.h=this.elm.offsetHeight || this.css.clip.height || this.ref.height || this.css.pixelHeight || 0;
this.id=id;
this.obj=id+"Object"; eval(this.obj+"=this")
this.is_image=(this.elm.src)? true:false;  // is object ein image?
def_src[this.id]=(this.is_image)? this.elm.src:"";  // speichert default image
}
layerObj.prototype.html= function(html) { this.elm.innerHTML=html; }
layerObj.prototype.showIt=function() { this.css.visibility="visible"; }
layerObj.prototype.hideIt=function() { this.css.visibility="hidden"; }
layerObj.prototype.switchIt=function() { this.css.visibility=(this.css.visibility=="hidden")? "visible":"hidden"; }

// Funktionen zum Hovern von images

layerObj.prototype.hover= function (src) {
	if (!this.is_image) return false;
	if (src) hover_src[this.id]=src;
	else { 
		df=def_src[this.id];
		teil=df.lastIndexOf(".");
		hover_src[this.id]=df.slice(0,teil)+"_on"+df.slice(teil,df.length); } 
	this.elm.onmouseover=this.hover_on;
	this.elm.onmouseout=this.hover_off;
}
layerObj.prototype.hover_on=function() {
	this.src=hover_src[this.id];
}
layerObj.prototype.hover_off= function () {
	this.src=def_src[this.id];
}

// Funktionen zur Opacity

// setzt Opacity	
layerObj.prototype.changeOpac= function(opacity) {  
	this.css.opacity = (opacity / 100);
	this.css.MozOpacity = (opacity / 100);
	this.css.KhtmlOpacity = (opacity / 100);
	this.css.filter = "alpha(opacity=" + opacity + ")"; }

// Einblenden und ausblenden
layerObj.prototype.opacity= function(opacStart,opacEnd,msec) { 
		// Geschwindigkeit der Einzelbilder
	var speed = Math.round(msec / 100);
	var timer = 0;
	// entscheide die Richtung der Überblendung, wenn start und ende gleich passiert nichts
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout(this.obj+".changeOpac("+i+")",(timer*speed));
			timer++; } } 
	else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++) {
			setTimeout(this.obj+".changeOpac("+i+")",(timer*speed));
			timer++;} }
}

// ändert Opacity ins Gegenteil
layerObj.prototype.shiftOpacity= function (msec) {
	if(this.css.opacity == 0) {
		this.opacity(0, 100, msec);
	} else {
		this.opacity(100, 0, msec);
	}}
